29 | Service Mesh:如何屏蔽服务化系统的服务治理细节?
唐扬
该思维导图由 AI 生成,仅供参考
你好,我是唐扬。
在分布式服务篇的前几节课程中,我带你了解了在微服务化过程中,要使用哪些中间件解决服务之间通信和服务治理的问题,其中就包括:
用 RPC 框架解决服务通信的问题;
用注册中心解决服务注册和发现的问题;
使用分布式 Trace 中间件,排查跨服务调用慢请求;
使用负载均衡服务器,解决服务扩展性的问题;
在 API 网关中植入服务熔断、降级和流控等服务治理的策略。
经历了这几环之后,你的垂直电商系统基本上已经完成了微服务化拆分的改造。不过目前来看,你的系统使用的语言还是以 Java 为主,之前提到的服务治理的策略,和服务之间通信协议也是使用 Java 语言来实现的。
那么这会存在一个问题:一旦你的团队中,有若干个小团队开始尝试使用 Go 或者 PHP 来开发新的微服务,那么在微服务化过程中,一定会受到挑战。
跨语言体系带来的挑战
其实,一个公司的不同团队,使用不同的开发语言是比较常见的。比如,微博的主要开发语言是 Java 和 PHP,近几年也有一些使用 Go 开发的系统。而使用不同的语言开发出来的微服务,在相互调用时会存在两方面的挑战:
一方面,服务之间的通信协议上,要对多语言友好,要想实现跨语言调用,关键点是选择合适的序列化方式。我给你举一个例子。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Service Mesh是一种解决跨语言微服务调用和服务治理策略复用问题的有效方案。它通过在应用程序主机上部署代理程序(Sidecar)来实现服务之间的通信,将业务代码和服务治理策略隔离开,实现了服务治理策略的复用和统一管理。文章介绍了Service Mesh的工作原理和核心思想,以及主要的实现形式和工作方式,包括使用iptables实现流量透明转发和轻量级客户端方式。此外,还提到了国内大厂开源的Service Mesh方案,借鉴了Istio的思路,并将服务治理策略做到了Sidecar中,以提高性能。总的来说,Service Mesh能够屏蔽服务化架构中服务治理的细节,实现跨语言服务治理策略的复用,是解决多语言微服务调用和服务治理策略复用问题的有效方案。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统设计 40 问》,新⼈⾸单¥59
《高并发系统设计 40 问》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(21)
- 最新
- 精选
- KeithAPI网关和Service Mesh有什么区别与联系呢? (它们都可以植入了服务治理策略)
作者回复: 标准答案是,API网关是南北向的,service mesh是东西向的
2019-12-07813 - Corner老师,您好。请问您在文中说的"轻量级客户端"目前有哪些开源的SeverMesh框架有实现呢?
作者回复: 据我了解微博和蚂蚁金服都采用了这种方案
2019-11-29311 - 电光火石老师,请问一下: 1. 如果全栈都是java,那么service mesh就不是那么重要,是吗? 2. 文中看到iptable的性能会比rpc框架的性能要查,我以为iptable是走第三层或者第四层协议,而且只是转发,性能会很高,而rpc框架走第四层协议,而且需要解析协议内容,性能会更差一些。不知道老师能否讲解一下我理解的错误 谢谢了
作者回复: 1. 也不是,service mesh还可以解决中间件升级难的问题 2. 不是的,高并发下iptables对性能还是有影响的,尤其规则比较多的时候
2019-12-078 - 钱本质上感觉是又多了一层中间层,这个中间层来处理服务调用相关的事情,进一步的将业务逻辑和服务处理逻辑耦合的更松散一些,多加一层距离更远了一些,所以,性能上也会损耗更多一些。 目前还未接触实际方案,理解上大概这样。
作者回复: 性能损耗实测可接受
2020-05-076 - 往事随风,顺其自然istio 中需要使用Kubernetes 这个,必须这样?
作者回复: 现在是的
2019-11-296 - 芳菲菲兮满堂涨姿势 envoy lisio之前都还是懵懵的
作者回复: 现在是大趋势了
2020-03-193 - Keith关于服务治理策略, "负载均衡、熔断降级、流量控制、打印分布式追踪日志等等,这些服务治理的策略都需要重新实现": 1. 熔断降级、流量控制这些不是在API网关中实现吗? 这些需要每个RPC客户端单独实现? 2. 服务治理策略是应用于外部客户端对系统的访问, 还是也包括内部RPC客户端之间的相互访问?
作者回复: 1. 服务之间调用,治理策略是集成在客户端中的 2. 包括RPC之间互相访问
2019-11-302 - L响老师,Sidecar收到iptables转发的消息后,是否还要理解rpc协议呢?如果理解,那么Sidecar能够处理不同rpc协议吗?如果不理解,是否我们在rpc客户端和服务端要使用Sidecar的协议?
作者回复: 不需要得,sidecar的协议可以对于使用方是透明的
2020-06-061 - 阿土轻量级客户端一般怎么实现?有现成例子可参考么?另外,少量改造是改造些什么地方呢?
作者回复: 可以看看sofa mesh的代码
2019-12-041 - 阿卡牛istio 和spring boot有联系和区别吗
作者回复: 他们应该不是一个东西,istio是service mesh的实现,spring boot是开发框架
2019-11-291
收起评论