rpc
使用rpc的目的: 让远程调用服务就像调本地服务一样简单
比http的优势:协议传输效率较低
sofarpc与grpc
性能: sofarpc好,grpc性能一般(单线程 30kqps,小于8k包时)
易用性: Http2出现较晚,迁移转换成本高,sofarpc支持的协议多
可行性: sofarpc的注册中心目前还没有正式支持SOFAMesh
服务发现
zookeeper
- 健康检查依赖TCP长链接活性探测不准确
- 需要在服务中集成sdk
- 更复杂的服务治理
sofa-rpc-node: 目前只支持zk
k8s service
服务注册和发现,转发,负载均衡能力
缺点: 同一个应用的不同的实例提供了不同的服务会出错,只能在同集群内使用
istio
弥补k8s service的不足
可配置的服务发现(从k8s获取服务注册表),由Sidecar保持长连接,转发,负载并提供熔断、限流降级、调用链治理等能力
SOFAMesh
- 采用 Golang 编写的 MOSN 取代 Envoy(sidecar)
- 合并 Mixer 到数据平面以解决性能瓶颈
- 增强 Pilot 以实现更灵活的服务发现机制(主动告诉对应的 Sidecar,它需要发布哪些服务,主动告诉对应的 Sidecar,它需要订阅哪些服务),增加数据同步模块,以实现多个服务注册中心之间的数据交换