微服務治理策略
- Author: HuiFer
- Description: 該文簡單介紹微服務的治理策略以及應用技術
服務的註冊和發
解決問題: 集中管理服務
解決方法: eureka 、zookeeper
負載均衡
解決問題: 降低服務器硬件壓力
解決方法: nginx 、 Ribbon
通訊
解決問題: 各個服務之間的溝通橋樑
解決方法 :
- 同步消息
- rest
- rpc
- 異步消息
- MQ
配置管理
解決問題: 隨着服務的增加配置也在增加,如何管理各個服務的配置
解決方法: nacos 、 spring cloud config 、 Apollo
容錯和服務降級
解決問題: 在微服務當中,一個請求經常會涉及到調用幾個服務,如果其中某個服務不可以,沒有做服務容錯的話,極有可能會造成一連串的服務不可用,這就是雪崩效應.
解決方法: hystrix
服務依賴關係
解決問題: 多個服務之間來回依賴,啓動關係的不明確
解決方法:
- 應用分層: 數據層,業務層 數據層不需要依賴業務層,業務層依賴數據,規定上下依賴關係避免循環圈
服務文檔
解決問題: 降低溝通成本
解決方法: swagger 、 java doc
服務安全問題
解決問題: 敏感數據的安全性
解決方法: oauth 、 shiro 、 spring security
流量控制
解決問題: 避免一個服務上的流量過大拖垮整個服務體系
解決方法: Hystrix
自動化測試
解決問題: 提前預知異常,確定服務是否可用
解決方法: junit
服務上線,下線的流程
解決問題: 避免服務隨意的上線下線
解決方法: 新服務上線需要經過管理人員審覈.服務下線需要告知各個調用方進行修改,直到沒有調用該服務纔可以進行下線.
兼容性
解決問題: 服務開發持續進行如何做到兼容
解決方法: 通過版本號的形式進行管理,修改完成進行迴歸測試
服務編排
解決問題: 解決服務依賴問題的一種方式
解決方法: docker & k8s
資源調度
解決問題: 每個服務的資源佔用量不同,如何分配
解決方法: JVM 隔離、classload 隔離 ; 硬件隔離
容量規劃
解決問題: 隨着時間增長,調用逐步增加,什麼時候追加機器
解決方法: 統計每日調用量和響應時間, 根據機器情況設置閾值,超過閾值就可以追加機器