分布式服务调用ServiceCaller(1)
2016-08-22 本文已影响211人
OneFish
ServiceCaller
ServiceCaller是基于Spring和依赖zookeeper托管服务的分布式服务注册和发现模块
功能
- 服务自动注册和发现
- 基于hystrix的服务熔断和降级
- 系统间服务调用
- 服务监控
- 网络拓扑(todo)
- 服务管理,分组,降级等(todo)
服务注册
- 通过spring容器获取所有的Controller
- 注册Controller到zookeeper的node中,同一服务的多个实例会存放在同一节点
- 服务名称默认为"系统name.methodName",group为系统name(系统name为使用时配置在配置文件),可通过@ZeuService.value()自定义服务名称,@ZeuService.group自定义group
- zk上的node路径为默认路径,当前配置为/tts/services
服务发现
- 通过服务名称获取zookeeper中的服务(http地址等信息)
- 通过负载均衡策略返回其中的一个实例
服务调用
- 服务调用使用了Hystrix和core包中的http client
- 实现Hystrix的run方法实现服务的调用和Hystrix的熔断、降级特性
- 服务监控目前是Hystrix的monitor,可自己实现
服务管理
- 通过注解@ZeuService或者配置实现服务调用时的分组隔离(灰度与正式环境,暂时未实现)
- 可通过接口修改注册在zookeeper上的服务(暂未实现)