服務(wù)化架構(gòu):一種架構(gòu)風(fēng)格,即微服務(wù)架構(gòu)。
1.單個(gè)服務(wù)盡量專注一件事情,高內(nèi)聚、低耦合;
2.進(jìn)程隔離;
3.每個(gè)服務(wù)可以獨(dú)立開發(fā)、測試、構(gòu)建、部署;
4.小且靈活;
微服務(wù)架構(gòu)特征:
1.系統(tǒng)由多個(gè)服務(wù)組成,每個(gè)服務(wù)有明確的邊界;
2.服務(wù)獨(dú)立開發(fā)、編譯、部署、測試、發(fā)布,有獨(dú)立工程、獨(dú)立版本、接口契約化,進(jìn)程隔離;
3.服務(wù)小且靈活,由一個(gè)10人以下團(tuán)隊(duì)全生命周期負(fù)責(zé),團(tuán)隊(duì)的目標(biāo)負(fù)責(zé)產(chǎn)品的全生命周期,而不是負(fù)責(zé)一個(gè)短期的項(xiàng)目;
4.技術(shù)中立,不要求服務(wù)的編程語言統(tǒng)一。不同服務(wù)可以采用不同的編程語言實(shí)現(xiàn),有利于逐步引入新技術(shù)。
5.智能服務(wù)端點(diǎn)和輕量級高性能通信機(jī)制。服務(wù)開發(fā)框架內(nèi)置服務(wù)基本功能,如日志、度量、數(shù)據(jù)訪問、輸入校驗(yàn)、權(quán)限等,使得開發(fā)人員可以聚焦于業(yè)務(wù)服務(wù)的業(yè)務(wù)邏輯代碼開發(fā),降低了服務(wù)開發(fā)的門檻。
6.服務(wù)無狀態(tài),服務(wù)自動(dòng)彈性伸縮。服務(wù)的無狀態(tài)通過業(yè)務(wù)邏輯與數(shù)據(jù)分離,數(shù)據(jù)、會(huì)話保存在DB、Cache、對象存儲(chǔ)等服務(wù)來實(shí)現(xiàn);服務(wù)實(shí)例按需進(jìn)行伸縮。
7.服務(wù)數(shù)據(jù)去中心化。每個(gè)服務(wù)擁有自己的數(shù)據(jù)庫,服務(wù)不能直接訪問其它服務(wù)的數(shù)據(jù)庫,只能通過服務(wù)接口方案其它服務(wù)的數(shù)據(jù)。
8.服務(wù)去中心化治理。服務(wù)支持多版本并存、灰度發(fā)布、依賴關(guān)系管理、調(diào)用鏈分析快速故障定界。
9.Design for failure。任意服務(wù)節(jié)點(diǎn)失效、網(wǎng)絡(luò)閃斷等故障不影響業(yè)務(wù)正常運(yùn)行。
10.重用、組合已有的服務(wù)實(shí)現(xiàn)新的業(yè)務(wù)功能服務(wù)。業(yè)務(wù)應(yīng)用在實(shí)現(xiàn)功能時(shí),會(huì)調(diào)用已有的服務(wù),如Cache、MQ、IAM等公共服務(wù),實(shí)現(xiàn)自己的業(yè)務(wù)功能。