微服務間如何通訊?
1.1從通訊模式角度考慮
一對一還是一對多乘粒?
同步還是異步的阀湿?
一對一 | 一對多 | |
---|---|---|
同步 | 請求響應模式幢尚,最常見 | —————— |
異步 | 通知/請求異步響應 | 發(fā)布訂閱/發(fā)布異步響應 |
1.2從通訊協(xié)議角度考慮
1.2.1Http協(xié)議
使用http實現(xiàn)rest風格的Api
1.2.2RPC
如何選擇RPC框架?
I/O蕉鸳、線程調(diào)度模型乎赴、序列化方式、多語言支持潮尝、服務治理
流行的RPC框架
Dubbo/Dubbox榕吼、Thrift、Motan勉失、Grpc
1.2.3MQ消息機制
微服務如何發(fā)現(xiàn)彼此友题?
傳統(tǒng)服務vs微服務
對于傳統(tǒng)服務而言,Nginx通過方向代理戴质,找到服務器的ip和
端口號度宦,并同過反向代理和輪詢找到服務的提供者「娼常“發(fā)現(xiàn)”戈抄,其實并非發(fā)現(xiàn),因為在Nginx的配置文件中后专,域名和ip
端口都是寫死的划鸽,配置文件的更新需要運維人員手動修改
微服務如何發(fā)現(xiàn)?
客戶端發(fā)現(xiàn)
客戶端通過查詢注冊中心注冊信息戚哎,來得到微服務的注冊
列表裸诽,然后通過負載均衡的策略進行服務調(diào)用
服務端發(fā)現(xiàn)
在服務端發(fā)現(xiàn)中,客戶端不再需要訪問注冊中心型凳,
不需要通過訪問注冊中心得到一個微服務列表了丈冬。
而是通過訪問一個具有固定的域名或ip的、具有服務發(fā)現(xiàn)和負載均衡的服務甘畅。再由它將請求轉(zhuǎn)發(fā)給后臺服務埂蕊,并且將應答回傳往弓。
這個服務在中間起到了一個類似代理人的作用。將注冊中心的內(nèi)容
維護到自己內(nèi)部蓄氧,當客戶端在請求的時候函似,它會知道客戶端
需要的是哪個服務,并通過負載均衡策略選擇一個后端喉童。
微服務怎樣部署撇寞、更新、擴容堂氯?
服務編排
包括服務發(fā)現(xiàn)重抖、部署、更新祖灰、擴容等
流行的服務編排工具
Mesos、Docker Swarm畔规、Kubernetes