《Istio实战指南》 by 马若飞 2019年9月第1版
书中的 Istio 为 1.1版
---
https://istio.io/ 官网,访问不了!著名的国内网络环境问题导致的吗?
单体应用》多层结构》SOA(企业服务总线,ESB)》微服务架构(Microservice)》服务网格(Service Mesh)
微服务架构痛点:
服务数量激增,几十、几百,甚至更多,
如何有效地管理服务?
保障服务间的通信稳定可靠?
网络层面的问题(L.Peter Deutsch等人提出的著名理论——分布式环境下的8个谬论)。
版本控制、监控、故障转移。A/B测试、灰度发布、限流、熔断和访问控制等一些列和网络相关的问题。
于是,服务网格 诞生了!
Sidecar模式:
2013年, Airbnb开发了Synapse和Nerve
2014年,Netflix退出了Prana
对应于服务 没有入侵性
不会受到应用服务的 语言和技术限制
控制层和业务逻辑 的分开升级和部署
主要功能:
服务注册、服务健康检查、服务发现、接管进出流量(日志监视、调用链跟踪、流控熔断等)、控制应用服务(流控、下线等)
来源:Sidecar模式初识
微服务网络通信功能的演进过程
Sidecar模式 最终演变成了 服务网格。
服务网格(Service Mesh)
2016年9月 由 Buoyant公司 的 CEO William Morgan首先提出
服务网格的出现 解决了微服务架构中的痛点,使开发人员专注于业务本身。
将服务通信及相关管控功能从业务程序中 分离到基础设施层。
作为微服务架构中 负责网络通信的基础设施。
服务网格的
主要功能:
- 动态路由
- 故障注入
- 熔断
- 安全
- 多语言支持
- 多协议支持
- 指标和分布式追踪
主要特性:
- 可见性
- 可管理性
- 健壮性
- 安全性(服务间访问控制等)
服务网格产品:
Linkerd
2016年初,前Twitter工程师 William Morgan和Oliver Gould组建 创业公司Buoyant。
业界公认的第一个 S.M.。
著名博文:What's a service mesh? And why do I need one?
Envoy
2016年9月,Lyft公司的Matt Klein发布。
2017年,Envoy加入CNCF,2018年孵化完毕。
一个高性能的C++语言实现的分布式代理,也是一个通信总线。
已从CNCF毕业,作为 数据平面,以Sidecar代理的形式存在于Istio架构体系中。
Istio
2017年5月发布0.1版,标志 第二代S.M.产品诞生。
2018年7月发布1.0版。
是Google、IBM、Lyft联合发布的产品。
Envoy成为Istio默认的数据平面,Linkerd、Ngimesh也放弃竞争,选择与其集成。
一个微服务的开放平台,提供了 统一的方式 去 连接、管理和保护微服务。
好处:有了Istio,就几乎可以不需要其它微服务框架(!!!)、也不需要自己去实现服务治理、把网络层委托给Istio。
其它-Conduit
2017年底,Buoyant公司,轻量级S.M.产品,基于Rust实现。
其它-NginMesh
Nginx开发的S.M.产品。
2017年9月加入Istio网络工作组,作为Istio平台中 负载平衡和服务代理。
不活跃状态,趋于停滞。
其它-SOFAMesh
蚂蚁金服发起。
控制面板 克隆了Istio并改进,MOSN是基于Golang开发的权限数据面板,用以替换Envoy。
官网声明:(更新时间: 2020-04-29)该项目仓库已弃用。该项目将直接向 Istio 贡献,不会继续在 fork 的仓库中开发,请转至 Istio 官网。
Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。
Istio主要功能:
- 对HTTP GRPC WEBSOCKET TCP流量的自动负载均衡
- 细粒度的流量控制
- 插件式的策略层、配置API支持访问控制、速率限制和配额请求
- 对集群所有进出流量进行 测量、记录并追踪
- 身份验证 和 授权 保证服务间通信的安全
对于S.M.来讲,1)业务代码无侵入 和 2)网络层的全权代理 是其重要的优势。
Istio架构如何做到的?
数据平面(Data Plane)、控制平面(Control Plane)
D.P.
一组和业务服务成对出现的Sidecar代理(Envoy)构造
接管服务进出流量、传递并控制服务、和Mixer组件的所有网络通信
C.P.
主要包括 Pilot、 Mixer、 Citadel和Galley 共4个组件
来源:参考文档2
Istio被设计为 支持多种平台。
不过,
目前仍然深度依赖 Kubernetes(仅支持)。
参考文档
1、istio 简介
3、