service mesh
service mesh的中文译为“服务网格”,是一个用于处理服务和服务之间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通信实现了微服务所需的基本组件功能,例如服务发现、负载均衡、监控、流量管理,访问控制等。在实践中,服务网格通常实现为一组和应用程序部署在一起的轻量级的网络代理,但对应用程序来说是透明的
绿色方块为应用服务,蓝色方块为sidecar proxy,应用服务之间通过sidecar proxy进行通信,整个服务通信形成图中的蓝色网络连线,图中所有蓝色部分就形成了一个网络,这就是服务网格的由来
service mesh特点
治理能力独立(sidecar)
应用程序无感知
服务通信的基础设施层
解耦应用程序的重试/超时、监控、追踪和服务发现
istio是service mesh的产品化落地,是目前最受欢迎的服务网格,功能丰富,成熟度高。
istio主要功能
连接:智能控制服务之间的调用流量,能够实现灰度升级,AB测试和红黑部署等功能
安全加固:自动为服务之间的调用提供认证,授权和加密
控制:应用用户定义的policy,保证资源在消费者中公平分配
观察:查看服务运行期间的各种数据,比如日志、监控和tracing,了解服务的运行情况
istio版本变化
在istio1.5版本发生了一个重大变革,彻底推翻原有控制平面的架构,将原来多个组件整合为单体架构istiod,同时废弃了mixer组件
istio服务网格在逻辑上分为数据平面和控制平面
控制平面:使用权限的部署模式:istiod,这个组件负责处理sidecar注入、证书颁发、配置管理等功能,替代原有组件,减低复杂度,提高易用性
pilot:策略配置组件,为proxy提供服务发现,只能路由、错误处理等
citadel:安全组件,提供证书生成下发,加密通信、访问控制
galley:配置管理、验证、分发
数据平面:由一组proxy组成,这些proxy负责所有微服务网络通信,实现高效转发和策略。使用envoy实现,envoy是一个机遇C++实现的L4/L7 proxy转发器,是istio在数据平面唯一的组件
istio基本概念
istio有4个配置资源,落地所有流量管理需求
VirtualService(虚拟服务):实现服务请求路由规则的功能
DestinationRule(目标规则):实现目标服务的负载均衡、服务发现、故障处理和故障注入的功能
Gateway(网关):让服务网格内的服务,可以被全世界看到
ServiceEntry(服务入口):允许管理网格外的服务的流量