服务灰度发布
适用场景
通常产品优化迭代的方式,是直接将某版本上线发布给全部用户,一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。
灰度发布是版本升级平滑过渡的一种方式,当版本升级时,使部分用户使用高版本,其他用户继续使用低版本,待高版本稳定后,逐步扩大范围把所有用户流量都迁移到高版本上面来。
价值
应用服务网格为应用治理提供多种灰度发布功能,在初始灰度的时候可以发现、调整问题,以保证其影响度和整体系统的稳定,稳定高效地推动企业应用的迭代升级。
优势
- 内置灰度流程:基于细粒度的分流规则,在ASM中内置了多种典型的灰度发布流程,提供一个灰度发布的向导,方便用户便捷的进行灰度发布实践。在一个服务版本正常工作,正常处理流量的同时,用户可以创建一个新的灰度版本。当灰度版本启动成功后,引导用户配置灰度规则来切分流量。
- 灵活的灰度策略:灰度规则可以是基于权重的按比例切分流量,也可以根据服务访问的内容来将特定内容的请求发往灰度版本,对于常用的HTTP协议,如请求中的OS、浏览器、Cookie和Header信息等,在配置了灰度规则后,可以实时的观察到多个线上版本的运行和访问信息,从而在向导中一键式完成版本选择,将所有流量都切换到最终选定的版本上。
- 自动化灰度:用户也可以将以上灰度发布流程进行自动化配置,从而实现无人值守的灰度发布。即只要灰度版本运行成功就会自动触发预制的灰度策略给灰度版本分配流量,在流量运行特定的时间后,根据预制规则自动的切换流量完成灰度发布。
- 应用灰度:除了服务粒度的灰度发布外,用户也可以对多个服务组成的应用,在入口服务处配置灰度规则,对一组服务使用同样的分流策略,进行灰度发布。
服务流量管理
适用场景
流量治理是一个非常宽泛的话题,例如:
- 动态修改服务间访问的负载均衡策略,如根据某个请求特征做会话保持。
- 同一个服务有两个版本在线,将一部分流量切到某个版本上。
- 对服务进行保护,例如限制并发连接数、限制请求数、隔离故障服务实例等。
- 动态修改服务中的内容,或者模拟一个服务运行故障等。
价值
在Istio中实现这些服务治理功能时无须修改任何应用的代码。
应用服务网格ASM基于Istio可以为管理的服务提供非侵入的流量治理能力。根据服务的协议,提供策略化、场景化的网络连接管理。在应用拓扑上对选定服务的选定端口,根据需要配置各种不同的治理规则。
优势
- 负载均衡:配置各种负载均衡策略,如随机、轮询、最大连接数等,还可以配置会话保持将流量发到特定的服务实例上。
- 连接池:通过连接池管理,可以对四层协议配置TCP的最大连接数、连接超时等连接配置,对七层协议配置最大等待HTTP请求数、最大请求数、每个连接的最大请求数、最大重试次数等,从而防止一个服务的失败级联影响到整个应用。
- 熔断:通过熔断配置实例被驱逐前的连续错误次数、驱逐间隔时长、最小驱逐时间、最大驱逐比例等参数,从而定期考察被访问的服务实例的工作情况,如果连续出现访问异常,则将服务实例标记为异常并进行隔离,在一段时间内不为其分配流量。过一段时间后,被隔离的服务实例会再次被解除隔离,尝试处理请求,如果还不正常,则被隔离更长的时间。从而实现异常服务实例的故障隔离和自动故障恢复。
- 故障注入:通过对选定的服务注入中断的故障、延时故障来构造故障场景,从而无需修改代码即可进行故障测试。
端到端的透明安全
适用场景
众所周知,将传统的单体应用拆分为一个个微服务固然带来了各种好处,包括更好的灵活性、可伸缩性、重用性,但微服务也同样面临着特殊的安全需求,如下所示:
- 为了抵御中间人攻击,需要用到流量加密。
- 为了提供灵活的服务访问控制,需要用到TLS和细粒度访问策略。
- 为了决定哪些人在哪些时间可以做哪些事,需要用到审计工具。
面对这些需求应用服务网格提供全面的安全解决方案,包括身份验证策略,透明的TLS加密以及授权和审计工具。
价值
- 默认的安全性:无需修改即可保证应用程序代码和架构的安全性。
- 纵深防御:与现有的安全系统结合并提供多层防御。
- 零信任网络:在不受信任的网络上构建安全解决方案。
优势
- 非侵入安全:应用服务网格是以一种安全基础设施的方式向用户提供透明的安全能力,让不涉及安全问题的代码安全运行,让不太懂安全的人可以开发和运维安全的服务,不用修改业务代码就能提供服务访问安全。应用服务网格提供了一个透明的分布式安全层,并提供了底层安全的通信通道,管理服务通信的认证、授权和加密,提供Pod到Pod、服务到服务的通信安全。开发人员在这个安全基础设施层上只需专注于应用程序级别的安全性。
- 细粒度授权:在认证的基础上,就可以进行服务间的访问授权管理,可以控制某个服务,或者服务的一个特定接口进行授权管理。如只开放给特定的一个Namespace下的服务,或者开放给某个特定的一个服务。源服务和目标服务可以在不同的集群,甚至源服务的不同实例在不同的集群,目标服务的不同实例在不同的集群。
服务运行监控
适用场景
运营容器化的基础设施带来了一系列新的挑战。我们需要增强容器、评估API端点的性能以及识别出基础设施中的有害部分。Istio服务网格可在不修改代码的情况下实现API增强,并且不会带来服务延迟。
价值
应用服务网格为网格内的所有服务通信生成详细的遥测,这种遥测技术提供了服务行为的可观察性,允许运营商对其应用程序进行故障排除、维护和优化,而不会给服务开发人员带来任何额外负担。通过应用服务网格,运营商可以全面了解被监控的服务如何与其他服务以及组件本身进行交互。
优势
- 非侵入监控数据采集:在复杂应用的场景下,服务间的访问拓扑,监控等都是我们对服务整体运行状况进行管理,服务访问异常时进行定位定界的必要手段。服务网格技术的一项重要能力就是以应用非侵入的方式提供这些监控数据的采集,用户只需关注自己的业务开发,无需额外关注监控数据的生成。
- 灵活的服务运行管理:在拓扑图上通过服务的访问数据,可以直观的观察到服务的健康状况,服务间的依赖情况。并且可以对关心的服务进行下钻,从服务级别下钻到服务版本级别,还可以进一步下钻到服务实例级别。通过实例级别的拓扑可以观察到配置了熔断规则后,网格如何隔离故障实例,使其逐渐接收不到流量。并且可以在故障实例正常时,如何进行实例的故障恢复,自动给恢复的实例重新分配流量。