云原生的概念现在炒的比较火爆,云原生包括如下几个基本要素:
- 微服务
- 容器化
- servicemesh
- 敏捷迭代
- devops
可见servicemesh是云原生的重要要点,了解servicemesh,首先还是要了解sidecar模式。
sidecar模式
sidecar是从微服务层级的设计模式,对应于代理模式。Sidecar主张以额外的容器来扩展或增强主容器,而这个额外的容器被称为Sidecar容器。
可以见这篇文章的介绍 https://zhuanlan.zhihu.com/p/258527216
servicemesh
在sidecar上,可以把日志、微服务注册、调用链、限流熔断降级等功能都实现,基于sidecar,抽象出servicemesh,见https://zhuanlan.zhihu.com/p/61901608
基于Istio实现,类比于web应用,servicemesh相对于实现了tcp的基础设施,让应用专注在业务开发上。
优点:
- 屏蔽分布式系统通信的复杂性(负载均衡、服务发现、认证授权、监控追踪、流量控制等等),服务只用关注业务逻辑;
- 真正的语言无关,服务可以用任何语言编写,只需和Service Mesh通信即可;
- 对应用透明,Service Mesh组件可以单独升级;
缺点:
- Service Mesh组件以代理模式计算并转发请求,一定程度上会降低通信系统性能,并增加系统资源开销;
- Service Mesh组件接管了网络流量,因此服务的整体稳定性依赖于Service Mesh,同时额外引入的大量Service Mesh服务实例的运维和管理也是一个挑战
小结
互联网时代技术进化真的非常快,我们需要紧跟技术,特别是其原理。servicemesh,个人感觉和分布式事务、分布式锁一样,是基于服务层次的设计模式和抽象,其基本原理是代理模式,servicemesh的场景可以让人集中于业务开发,降低对分布式技术细节的过高门槛。
网友评论