云原生服务网格Istio:原理、实践、架构与源码解析 - (EPUB全文下载)
文件大小:1.18 mb。
文件格式:epub 格式。
书籍内容:
云原生服务网格Istio:原理、实践、架构与源码解析
原理篇
实践篇
架构篇
源码篇
附录A 源码仓库介绍
附录B 实践经验和总结
关于华为云原生团队
原理篇
自本篇起,Istio 的学习之旅就正式开始了。本篇主要介绍 Istio 的功能特性及工作原理,呈现Istio丰富的流量治理、策略与遥测、访问安全等功能,以及Sidecar机制和多集群服务治理方面的内容。结合实践篇的内容,读者可以掌握 Istio 的使用方法,例如怎样使用 Istio 的流量规则、怎样配置安全策略、怎样使用 Istio 的 Adapter 来做策略控制和收集服务运行的遥测数据等。
第1章 你好,Istio
本章简要介绍Istio的一些背景知识,包括Istio是什么、能干什么,以及Istio项目的诞生及发展历史,并尝试梳理Istio与微服务、服务网格、Kubernetes这几个云原生领域炙手可热的技术概念的关系。希望读者能通过本章对 Istio 有一个初步的认识,并带着问题与思考进入后续的学习中。
1.1 Istio是什么
Istio是什么?我们试着用迭代方式来说明。
◎ Istio是一个用于服务治理的开放平台。
◎ Istio是一个Service Mesh形态的用于服务治理的开放平台。
◎ Istio是一个与Kubernetes紧密结合的适用于云原生场景的Service Mesh形态的用于服务治理的开放平台。
这里的关键字“治理”不局限于“微服务治理”的范畴,任何服务,只要服务间有访问,如果需要对服务间的访问进行管理,就可以使用 Istio。根据 Istio 官方的介绍,服务治理涉及连接(Connect)、安全(Secure)、策略执行(Control)和可观察性(Observe),如图1-1所示。
◎ 连接:Istio 通过集中配置的流量规则控制服务间的流量和调用,实现负载均衡、熔断、故障注入、重试、重定向等服务治理功能。
◎ 安全:Istio 提供透明的认证机制、通道加密、服务访问授权等安全能力,可增强服务访问的安全性。
◎ 策略执行:Istio 通过可动态插拔、可扩展的策略实现访问控制、速率限制、配额管理、服务计费等能力。
◎ 可观察性:动态获取服务运行数据和输出,提供强大的调用链、监控和调用日志收集输出的能力。配合可视化工具,可方便运维人员了解服务的运行状况,发现并解决问题。
图1-1 服务治理范畴
在 Istio 0.1 发布时,Istio 官方的第 1 篇声明(https://istio.io/blog/2017/0.1-announcement/)强调了Istio提供的重要能力。
◎ 服务运行可观察性:监控应用及网络相关数据,将相关指标与日志记录发送至任意收集、聚合与查询系统中以实现功能扩展,追踪分析性能热点并对分布式故障模式进行诊断。
◎ 弹性与效率:提供了统一的方法配置重试、负载均衡、流量控制和断路器等来解决网络可靠性低所造成的各类常见故障,更轻松地运维高弹性服务网格。
◎ 研发人员生产力:确保研发人员专注于基于已选择的编程语言构建业务功能,不用在代码中处理分布式系统的问题,从而极大地提升生产能力。
◎ 策略驱动型运营:解耦开发和运维团队的工作,在无须更改代码的前提下提升安全性、监控能力、扩展性与服务拓扑水平。运营人员能够不依赖开发提供的能力精确控制生产流量。
◎ 默认安全:允许运营人员配置TLS双向认证并保护各服务之间的所有通信,并且开发人员和运维人员不用维护证书,以应对分布式计算中经常存在的大量网络安全问题。
◎ 增量适用:考虑到在网络内运行的各服务的透明性,允许团队按照自己的节奏和需求逐步使用各项功能,例如先观察服务运行情况再进行服务治理等。
1.3~1.5 节会分别结合服务治理、服务网格、Kubernetes 这几个关键字展开对“Istio是什么”的迭代,对 Istio进行立体介绍。在这之前,我们先通过一个示例来看看 Istio能做什么。
1.2 通过示例看看Istio能做什么
首先看看 Istio 在服务访问的过程中都做了什么,简单起见,这里以一个天气预报应用中forecast服务对recommendation服务的访问为例,如图1-2所示。本书后面的大部分功能都会基于该应用来介绍。
图1-2 Istio服务访问示例
这个示例对两个服务的业务代码没有任何要求,可以用任何语言开发。在这个示例中,forecast服务是用Node.js开发的,recommendation服务是用Java开发的。在forecast服务的代码中通过域名访问recommendation服务,在两个服务中都不用包含任何服务访问管理的逻辑。
我们看看Istio在其中都做了什么:
◎ 自动通过服务发现获取recommendation服务实例列表,并根据负载均衡策略选择一个服务实例;
◎ 对服务双方启用双向认证和通道加密;
◎ 如果某个服务实例连续访问出错,则可以将该实例隔离一段时间,以提高访问质量;
◎ 设置最大连接数、最大请求数、访问超时等对服务进行保护;
◎ 限流;
◎ 对请求进行重试;
◎ 修改请求中的内容;
◎ 将一定特征的服务重定向;
◎ 灰度发布;
◎ 自动记录服务访问信息;
◎ 记录调用链,进行分布式追踪;
◎ 根据访问数据形成完整的应用访问拓扑;
◎……
所有这些功能,都不需要用户修改代码,用户只需在 Istio 的控制面做些配置即可,并且动态生效。以灰度发现为例,在 Istio 中是通过简单配置实现灰度发布的,其核心工作是实现两个版本同时在线,并通过一定的流量策略将部分流量引到灰度版本上。我们无须修改代码,只要简单写一个配置就可以对任意一个服务进行灰度发布了:
Istio采用了与Kubernetes类似的语法风格,即使不了解语法细节,也很容易明白其功能大意:将 group是 dev的流量转发到 recommendation服务的 v2版本,其他用户还是访问 recommendation服务的 v1版本,从而达到从 v1版本中 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 云原生服务网格Istio:原理、实践、架构与源码解析 - (EPUB全文下载)