問題描述:微服務(wù)架構(gòu)基本理念和原則,相關(guān)實(shí)現(xiàn)技術(shù)斟薇,為什么會(huì)在團(tuán)隊(duì)中選擇微服架構(gòu),實(shí)行微服架構(gòu)過程中遇到的問題及其解決方案
關(guān)鍵思路:
? 1.服務(wù)建模
? 2.服務(wù)拆分和集成
? 3.基礎(chǔ)組件與關(guān)鍵要素
? 4.spring cloud技術(shù)體系
? 5.團(tuán)隊(duì)業(yè)務(wù)發(fā)展特點(diǎn)和組織架構(gòu)恕酸,微服務(wù)粒度和邊界
具體剖析:
集中式架構(gòu)的優(yōu)缺點(diǎn):
?優(yōu)勢:
? ? 1.易于開發(fā)堪滨,測試,部署
? ? 2.具有一定的程度多水平伸縮性
劣勢:
? ? 1.維護(hù)成本與業(yè)務(wù)復(fù)雜度
? ? ?2.團(tuán)隊(duì)規(guī)模與結(jié)構(gòu)
? ? ?3.交付周期與管理
? ? ?4.可擴(kuò)展性
微服架構(gòu)的定義:
1.微服架構(gòu)是一種架構(gòu)模式蕊温,它提倡將單一應(yīng)用劃分成一組小的服務(wù)袱箱,服務(wù)于服務(wù)之間相互協(xié)調(diào)配合,為用戶提供最終價(jià)值义矛。
2.每個(gè)服務(wù)運(yùn)行在獨(dú)立的進(jìn)程中发笔,服務(wù)與服務(wù)之間采用輕量級通信機(jī)制相互溝通。(通常是基于http的restfull api)
3.每個(gè)服務(wù)圍繞著業(yè)務(wù)進(jìn)行構(gòu)建症革,并且能夠被獨(dú)立打部署到生產(chǎn)環(huán)境中
4.盡量避免統(tǒng)一的筐咧,集中式的服務(wù)管理機(jī)制,對具體對服務(wù)而言噪矛,應(yīng)該根據(jù)業(yè)務(wù)上下文量蕊,選擇適合的工具,語言進(jìn)構(gòu)建艇挨。
”微“ 特性
1.業(yè)務(wù)獨(dú)立
2.團(tuán)隊(duì)自主 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
3.技術(shù)無關(guān)輕量級通信
4.交付獨(dú)立性
微服架構(gòu)實(shí)現(xiàn)策略
1.采用松散的服務(wù)體系
? ? 1.1:獨(dú)立開發(fā)残炮,部署,維護(hù)缩滨,獨(dú)立部署單個(gè)服務(wù)势就,而不需要修改其他的服務(wù)
? ? 1.2:技術(shù)無關(guān)的集成接口,盡可能使用輕量級的通信方式進(jìn)行服務(wù)集成
2.圍繞業(yè)務(wù)組件團(tuán)隊(duì)
3.融合技術(shù)多樣性
4.確保業(yè)務(wù)數(shù)據(jù)獨(dú)立
5.基礎(chǔ)設(shè)施自動(dòng)化:devops
5.1:服務(wù)部署
5.2:健康診斷
5.3:錯(cuò)誤回滾
5.4:日志分析
5.5:服務(wù)治理?
總體原則:
1.圍繞業(yè)務(wù)概念建模
2.自動(dòng)化的文化
3.一切都是去中心化
4.獨(dú)立部署
5.隔離失敗
6.高度可觀察
微服務(wù)架構(gòu)存在的問題
1.分布式系統(tǒng)固有的復(fù)雜性
? ? 1.1:性能
? ?1.2:可靠性
? ?1.3:異步
? ?1.4:數(shù)據(jù)一致性
2.部署自動(dòng)化與運(yùn)維成本
? ?2.1:配置
? ?2.2:監(jiān)控和報(bào)警
? ?2.3:日志收集
? ?2.5:部署流水線
3.組織架構(gòu)
4.服務(wù)間的依賴管理
5.測試的復(fù)雜性
理想的集成技術(shù)
1.服務(wù)兼容性修改脉漏,盡量避免服務(wù)定義的修改導(dǎo)致服務(wù)消費(fèi)方也需要修改
2.保證api的技術(shù)無關(guān)性
3.服務(wù)易于消費(fèi)分使用
4.隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié)
集成技術(shù):
?文件傳輸苞冯,數(shù)據(jù)共享,遠(yuǎn)程過程調(diào)用侧巨,消息傳遞
請求/響應(yīng)模式:
?1.rpc:本地調(diào)用舅锄,結(jié)果由遠(yuǎn)程服務(wù)器產(chǎn)生。
? 2.rest:rest+http+json?
事件驅(qū)動(dòng)模式:
1.各種消息中間件