生产端
- 提供接口和实现类并通过tomcat或netty发布接口
- 本地新建MAP保存服务名+版本号对应的接口实现
- 本地服务的URL列表以及请求协议发布到注册中心map
注册中心
- 实现组件:redis,zk,nacos
- 新建MAP<接口名,List>保存服务名对应的提供者的ip列表
- map的每个ip都设置过期时间,如果过期了还没收到生产端的心跳则剔除该ip
- ip列表有变动通过zk的watch机制或redis的订阅模式通知消费者修改ip
消费端
- 拉取通过服务名拉取注册中心的的List列表在本地保存
- 通过动态代理+负载均衡策略远程调用服务对应的接口(传递接口名,方法名,版本号,协议名,参数值,参数类型)
- 如果有报错则增加容错机制
- 对于ip调不通重试n次,如果还不通则剔除url列表
- 增加mock代码方便消费者调试本地代码