有问有答 | 分布式服务框架精华问答
戳藍(lán)字“CSDN云計算”關(guān)注我們哦!
隨著社會的發(fā)展,技術(shù)的進步,以前的大型機架構(gòu)由于高成本、難維護等原因漸漸地變得不再主流,替代它的就是當(dāng)下最火的分布式架構(gòu)。要說分布式架構(gòu)有多重要,可以說如果你不了解“分布式”,那么你也無法真正了解云計算、大數(shù)據(jù)、人工智能等新興技術(shù)。那么,新年第一期為大家?guī)淼木褪欠植际椒?wù)框架方面的精華問答,讓我們一起打開“分布式”的大門吧!
1
Q:分布式服務(wù)框架對于文件類的東西(圖片)等是如何做同步或者如何部署的?
A:通常需要研發(fā)一個通用的RPC框架,它底層通信框架可以使用Netty,基于Netty的TCP/IP能力,可以向上封裝應(yīng)用層協(xié)議。由Netty向上生長出其它協(xié)議,可以參考基于Netty的相關(guān)應(yīng)用層協(xié)議框架,也可以參考下?RestExpress?和Dubbo,兩者維度不同。
Q:怎么考慮RPC和REST的選取呢,REST和微服務(wù)還是很容易混淆的?
A:1、RPC框架不等同于服務(wù)框架,典型的RPC框架如Avro、MessagePack、gRPC等;典型的服務(wù)框架如HSF、JSF、Dubbo等;2、Restufl協(xié)議與微服務(wù)沒任何關(guān)系,只不過對外開放時,大部分微服務(wù)會發(fā)布成Restful協(xié)議。
Q:雙機熱備(多機熱備)和分布式架構(gòu)都可以起到災(zāi)備效果。他們的技術(shù)難點分別在哪里?都有哪些相同和不同的地方,如何選擇?
A:雙機熱備等依賴雙機軟件、需要寫雙機腳本等,優(yōu)點是本身對業(yè)務(wù)的侵入比較小。缺點就是對雙開軟件、浮動IP、共享存儲等有強依賴。
分布式架構(gòu):強調(diào)對等集群、服務(wù)無狀態(tài),在這種架構(gòu)下,任何單點故障都不會中斷業(yè)務(wù)。缺點是:1、分布式架構(gòu)對業(yè)務(wù)設(shè)計有一定約束,例如Session集中管理、服務(wù)無狀態(tài)等;2、需要對分布式事務(wù)做處理,無論是強一致性還是弱一致性。
Q:通用的RPC框架。Netty和mina有如何做技術(shù)選型?請問Mina如何做集群?或者說類似有Socket長連接的如何做集群?
A:可以從架構(gòu)、功能特性豐富度、成熟度、社區(qū)活躍度、學(xué)習(xí)成本等角度去選型,建議選擇Netty。Mina是NIO框架,集群管理、會話管理等需要使用者自己封裝。
Q:分布式系統(tǒng)部署的話,一個項目部署在多個節(jié)點上,那么數(shù)據(jù)庫呢,是公用一個數(shù)據(jù)庫,還是每個節(jié)點上都有數(shù)據(jù)庫呢?一個項目部署在多個節(jié)點上,那么代碼中的同步鎖操作是不是就失效了呢?例如下單操作,某個物品只有一件了,但是多個用戶分別訪問了不同的節(jié)點服務(wù)器,那么任何處理才能保證同時訪問不同節(jié)點的用戶只能有一個用戶能下單成功呢?
A:1、通常數(shù)據(jù)庫集群是獨立部署,如果量不大,做個讀寫分離數(shù)據(jù)庫即可;如果數(shù)據(jù)量大,則做分庫分表,可以參考?TDDL;2、是的。所以問題只要是集群部署都有這個問題,思路是鎖可以放在數(shù)據(jù)庫端,例如存儲過程或者函數(shù);也可以通過SQL操作利用數(shù)據(jù)庫的行鎖,例如Select?for?update;還有一種輕量級的鎖方案,即利用CAS原理,做CompareAndSet。
Q:在實際操作過程中,分布式服務(wù)是如何支持多協(xié)議的?如果項目數(shù)據(jù)量比較大,在選擇服務(wù)調(diào)用方式的時候,需要什么特別注意的地方嗎?
A:支持多協(xié)議,有兩種策略:1、利用Netty封裝通用的NIO通信框架,在上面通過擴展CodeC做多協(xié)議支持;2、參考Dubbo的做法,抽象Portocol協(xié)議接口,集成不同協(xié)議的開源框架,實現(xiàn)多協(xié)議。?服務(wù)發(fā)布的時候,可以指定發(fā)布的協(xié)議。建議策略:1、通常時延較小、可控的,可以使用同步調(diào)用;2、時延不可控的,采用異步;3、多個服務(wù)接口無前后關(guān)系的,并行服務(wù)調(diào)用。
---------------- ?完? --------------
1.微信群:
添加小編微信:color_ld,備注“進群+姓名+公司職位”即可,加入【云計算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
2.征稿:
投稿郵箱:liudan@csdn.net;微信號:color_ld。請備注投稿+姓名+公司職位。
推薦閱讀
云計算到底是怎么玩的?
企業(yè)云存儲建設(shè)之路
AI in 美團:吃喝玩樂背后的黑科技
開除“野狗”式程序員,團隊的效率提高了
Windows 成“棄子”,Linux 終上位?
可替代Android的6大開源移動操作系統(tǒng)
程序員求助:被領(lǐng)導(dǎo)強行要求寫B(tài)ug該怎么辦?網(wǎng)友的回答讓我笑翻
程序員搶票姿勢 ↓交朋友還能搶票?
為交流學(xué)習(xí),請備注+姓名+公司職位(學(xué)校專業(yè))
點擊“閱讀原文”,打開 CSDN App 閱讀更貼心!
總結(jié)
以上是生活随笔為你收集整理的有问有答 | 分布式服务框架精华问答的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: winxp系统iso镜像怎么安装 安装w
- 下一篇: surface笔记本怎么进入u盘启动 S