1. 服務(wù)框架的設(shè)計(jì)
盡管不同的分布式服務(wù)框架實(shí)現(xiàn)細(xì)節(jié)存在差異圣勒,但是核心功能差異不大,下面的架構(gòu)圖描繪了一個(gè)分布式服務(wù)框架的整體邏輯架構(gòu)析恢。
總共分為 3 層:
服務(wù)層查刻,Service键兜,其中主要部分就是動(dòng)態(tài)代理,主要用于將服務(wù)提供者的接口封裝成遠(yuǎn)程服務(wù)調(diào)用穗泵。上層的服務(wù)接口用于 Spring 之類的業(yè)務(wù)框架使用普气,也是 Spring 的 bean.
過濾器層,服務(wù)調(diào)用職責(zé)鏈佃延,提供多種調(diào)用切面供框架自身和使用者擴(kuò)展棋电,例如負(fù)載均衡,性能統(tǒng)計(jì)苇侵,服務(wù)調(diào)用完成通知赶盔,失敗重試等。
RPC 層榆浓,這里就是 RPC 框架的核心部分于未,包括通信框架,序列化框架陡鹃,還有用于屏蔽底層通信框架和序列化框架的抽象接口烘浦。
分布式服務(wù)框架通常會(huì)包含另外兩個(gè)重要功能:服務(wù)治理中心 和 服務(wù)注冊中心。
1. 服務(wù)注冊中心:負(fù)責(zé)服務(wù)的發(fā)布和通知萍鲸,通常支持對等集群部署闷叉,某個(gè)節(jié)點(diǎn)宕機(jī)不會(huì)影響整個(gè)集群不可用。即使全部宕機(jī)脊阴,只影響新的節(jié)點(diǎn)注冊和發(fā)布握侧,不影響現(xiàn)有的,因?yàn)榭蛻舳诵枰彺娣?wù)路由信息嘿期。
2. 服務(wù)治理中心: 服務(wù)治理中心通常包括服務(wù)治理接口和服務(wù)治理 Portal品擎,架構(gòu)師,測試人員和系統(tǒng)運(yùn)維人員通過服務(wù)治理 Portal 對服務(wù)的運(yùn)行狀態(tài)备徐,歷史數(shù)據(jù)萄传,健康度和調(diào)用關(guān)系等進(jìn)行可視化的分析和維護(hù),目標(biāo)是要持續(xù)優(yōu)化服務(wù)蜜猾,防止服務(wù)架構(gòu)腐化秀菱,保證服務(wù)高質(zhì)量運(yùn)行。
2. 服務(wù)框架的功能
雖然每個(gè)服務(wù)框架不盡相同蹭睡,但是還有有一些核心功能是相同的衍菱,比如以下功能:
- 服務(wù)訂閱發(fā)布:比如,配置化發(fā)布和引用服務(wù)棠笑,服務(wù)自動(dòng)發(fā)現(xiàn)梦碗,服務(wù)在線注冊和取消注冊。
- 服務(wù)路由:比如,默認(rèn)提供隨機(jī)路由洪规,輪詢印屁,基于權(quán)重的路由,粘滯連接斩例,路由定制功能雄人。
- 集群容錯(cuò):比如,F(xiàn)ailover(失敗自動(dòng)切換)念赶,F(xiàn)ailback(失敗自動(dòng)恢復(fù))础钠,F(xiàn)ailfast(快速失敗)叉谜。
- 服務(wù)調(diào)用:需要支持:同步調(diào)用旗吁,異步調(diào)用,并行調(diào)用停局。
- 多協(xié)議:包括私有協(xié)議很钓,公有協(xié)議。
- 序列化方式:需要支持二進(jìn)制和文本類序列化方式董栽。
- 統(tǒng)一配置:支持本地靜態(tài)配置码倦,支持基于配置中心的動(dòng)態(tài)配置。
以上功能可以按照業(yè)務(wù)定制锭碳,不需要 100% 支持袁稽。
3. 服務(wù)框架的性能指標(biāo)
分布式服務(wù)框架的性能肯定比不上本地調(diào)用,原因是:網(wǎng)絡(luò)通信擒抛,序列化推汽,反射調(diào)用,動(dòng)態(tài)代理這些都會(huì)消耗性能闻葵。所以需要有性能指標(biāo)民泵。
- 高性能:在同等資源占用情況下,單服務(wù)提供者的 TPS 要盡量高槽畔。
- 低延時(shí):在同等資源占用情況下,服務(wù)調(diào)用延時(shí)要盡量低胁编。
- 性能線性增長:如果增加了服務(wù)提供者厢钧,整體性能要能夠線性增長。
- 可靠性:服務(wù)注冊中心的可靠性嬉橙,網(wǎng)絡(luò)鏈路的可靠性早直。
4. 服務(wù)治理需要哪些功能?
- 服務(wù)運(yùn)行態(tài)監(jiān)控市框,例如通過路由導(dǎo)流霞扬,限流,服務(wù)降級(jí),動(dòng)態(tài)控制超時(shí)時(shí)間喻圃。
- 服務(wù)監(jiān)控萤彩,性能統(tǒng)計(jì),報(bào)表斧拍,報(bào)警雀扶。
- 服務(wù)生命周期管理
- 故障快速定位
- 服務(wù)安全
總結(jié)
以上就是在設(shè)計(jì)分布式服務(wù)框架需要注意的地方,例如整體架構(gòu)的設(shè)計(jì)肆汹,框架需要哪些功能愚墓,框架的需要保證哪些性能。同時(shí)昂勉,一個(gè)框架只是可以使用時(shí)不夠的浪册,還需要服務(wù)治理,保證服務(wù)不被腐化岗照,同時(shí)保證服務(wù)的健康议经。