ServiceCaller
ServiceCaller是基于Spring和依賴zookeeper托管服務(wù)的分布式服務(wù)注冊和發(fā)現(xiàn)模塊
功能
- 服務(wù)自動注冊和發(fā)現(xiàn)
- 基于hystrix的服務(wù)熔斷和降級
- 系統(tǒng)間服務(wù)調(diào)用
- 服務(wù)監(jiān)控
- 網(wǎng)絡(luò)拓撲(todo)
- 服務(wù)管理,分組,降級等(todo)
服務(wù)注冊
- 通過spring容器獲取所有的Controller
- 注冊Controller到zookeeper的node中,同一服務(wù)的多個實例會存放在同一節(jié)點
- 服務(wù)名稱默認為"系統(tǒng)name.methodName",group為系統(tǒng)name(系統(tǒng)name為使用時配置在配置文件),可通過@ZeuService.value()自定義服務(wù)名稱,@ZeuService.group自定義group
- zk上的node路徑為默認路徑,當前配置為/tts/services
服務(wù)發(fā)現(xiàn)
- 通過服務(wù)名稱獲取zookeeper中的服務(wù)(http地址等信息)
- 通過負載均衡策略返回其中的一個實例
服務(wù)調(diào)用
- 服務(wù)調(diào)用使用了Hystrix和core包中的http client
- 實現(xiàn)Hystrix的run方法實現(xiàn)服務(wù)的調(diào)用和Hystrix的熔斷、降級特性
- 服務(wù)監(jiān)控目前是Hystrix的monitor,可自己實現(xiàn)
服務(wù)管理
- 通過注解@ZeuService或者配置實現(xiàn)服務(wù)調(diào)用時的分組隔離(灰度與正式環(huán)境,暫時未實現(xiàn))
- 可通過接口修改注冊在zookeeper上的服務(wù)(暫未實現(xiàn))