公司V
- 主要Java语言
- 最原始
- 没有服务发现
- 通过域名调用,服务器ip配置在nginx
- 数据传输使用JSON协议
公司U
- 主要Java语言
- 公司基础团队自己实现服务发现机制
- 服务发现使用netty做tcp长链,用于服务注册等
- 服务sdk从服务中心获取所调用的对端服务的ip和端口
- 通过tcp长链通知服务上下线等
- 通过服务的ip和端口调用
- 数据传输使用hessian协议
公司K
部门1
版本v1
- 主要Java语言
- 使用Eureka做服务发现(HTTP协议)
- 服务sdk从Eureka获取所调用的对端服务的ip和端口
- 通过HTTP接口从Eureka定时更新服务实例
- 通过服务的ip和端口调用
- 数据传输使用Thrift协议/JSON协议
版本v2
- 在版本1的基础上增加LocalProxy 作为代理
- 加入local proxy (service mesh)
(服务a)->本地LP ->(服务b)
版本v3
- 在k8s 部署
- 让每个pod都是单独的实例,ip和物理机一样可以访问,使用calico打通网络,兼容原来的服务发现机制,暂时不使用k8s的service功能
(服务a)->远程LP ->(服务b)
版本v4
- 使用Istio替换LP
- LP(linkerd)使用Euerka,Istio使用k8s service
- (服务a)->istio-istio →(服务b)
- 内部调用:(服务a,istio-envoy1)-》(istio-envoy2,服务b)
()标识同一个pod
部门2
- 使用nginx二次开发,作为localproxy,以域名作为服务名
- 比较原始的方案(公司起步比较早,当时的方案一直沿用至今)