跳转至

适用场景

服务网格适用的场景如下:

服务流量治理

流量治理是一个非常宽泛的话题,例如:

  • 动态修改服务间访问的负载均衡策略,如根据某个请求特征做会话保持。
  • 同一个服务有两个版本在线,将一部分流量切到某个版本上。
  • 对服务进行保护,例如限制并发连接数、限制请求数、隔离故障服务实例等。
  • 动态修改服务中的内容,或者模拟服务运行故障等。

服务网格可以提供非侵入的流量治理能力,无需修改任何业务代码就能实现这些服务治理功能。 根据服务的协议,提供策略化、场景化的网络连接管理。可以根据需要对特定服务的特定端口配置不同的治理规则。

场景优势

  • 重试

    服务访问失败自动重试,从而提高总体访问成功率和质量。支持配置 HTTP 请求重试次数、重试超时时间和重试条件。

  • 超时

    服务访问超时自动处理,快速失败,从而避免资源锁定和请求卡顿。支持配置 HTTP 请求超时时间。

  • 连接池(配置路径为: 流量治理 -> 目标规则 )。可以防止一个服务的失败级联影响到整个应用。

    可以对四层协议配置 TCP:

    • 最大连接数
    • 连接超时时长
    • TCP 存活检测
      • 空闲超时时长
      • 最大探测数
      • 探测间隔时长

    还可以对七层协议配置 HTTP:

    • 最大挂起请求数(HTTTP/1.1)
    • 最大重试数
    • 后端最大请求数(HTTP/2)
    • 空闲超时时长
    • 每连接最大请求数
  • 离群检测

    通过离群检测配置实例被驱逐前的连续错误次数、驱逐间隔时长、最小驱逐时间、最大驱逐比例等参数,从而定期考察被访问的服务实例的工作情况。 如果连续出现访问异常,则将服务实例标记为异常并进行隔离,在一段时间内不为其分配流量。 过一段时间后,被隔离的服务实例会再次被解除隔离,尝试处理请求。如果还不正常,则被隔离更长的时间。从而实现异常服务实例的故障隔离和自动故障恢复。

  • 负载均衡

    配置各种负载均衡策略,如随机、轮询、最少连接,还可以配置一致性哈希将流量转发到特定的服务实例上。

  • HTTP Header

    灵活增加、修改和删除指定 HTTP Header,包括将 HTTP 请求转发到目标服务之前对 Header 进行操作。 还可以在将 HTTP 响应回复给客户端前,对 Header 进行操作,以非侵入方式管理请求内容。

  • 故障注入

    通过对选定的服务注入中断故障、延时故障来构造故障场景,无需修改代码即可进行故障测试。

端到端的透明安全

众所周知,将传统的单体应用拆分为一个个微服务固然带来了各种好处,例如:更好的灵活性、可扩缩性、重用性,但微服务也同样面临着特殊的安全需求:

  • 为了抵御中间人攻击,需要用到流量加密。
  • 为了提供灵活的服务访问控制,需要用到 TLS 和细粒度访问策略。
  • 为了决定哪些人在哪些时间可以做哪些事,需要用到审计工具。

面对这些需求服务网格提供全面的安全解决方案,包括身份验证策略、透明的 TLS 加密以及授权和审计工具。

场景优势

  • 非侵入安全

    服务网格是以一种安全基础设施的方式向用户提供透明的安全能力,让不涉及安全问题的代码安全运行,让不太懂安全的人可以开发和运维安全的服务, 不用修改业务代码就能提供服务访问安全。应用服务网格提供了一个透明的分布式安全层,并提供了底层安全的通信通道,管理服务通信的认证、授权和加密, 提供 Pod 到 Pod、服务到服务的通信安全。开发人员在这个安全基础设施层上只需专注于应用程序级别的安全性。

  • 多集群安全

    在多集群场景下服务网格提供了全局的服务访问安全。多个集群的网格共享一套根证书,给数据面的服务实例分发密钥和证书对,并定期替换密钥证书, 根据需要撤销密钥证书。在服务间访问时,网格的数据面代理就会代理本地服务和对端进行双向认证、通道加密。 这里的双向认证的服务双方可以来自两个不同的集群,从而做到跨集群的透明的端到端双向认证。

  • 细粒度授权

    在认证的基础上,就可以进行服务间的访问授权管理,可以控制某个服务,或者服务的一个特定接口进行授权管理。 如只开放给特定的一个 Namespace 下的服务,或者开放给某个特定的服务。 源服务和目标服务可以在不同的集群,甚至源服务的不同实例在不同的集群,目标服务的不同实例在不同的集群。

服务运行监控

运营容器化的基础设施带来了一系列新的挑战。我们需要增强容器、评估 API 端点的性能以及识别出基础设施中的有害部分。 服务网格可在不修改代码的情况下实现 API 增强,并且不会带来服务延迟。

服务网格可以为网格内的所有服务通信进行遥测,这种遥测技术提供了服务行为的可观察性,有助于运营商对其应用程序进行故障排除、维护和优化, 而不会给服务开发人员带来任何额外负担。通过服务网格,运营商可以全面了解被监控的服务如何与其他服务以及组件本身进行交互。

场景优势

  • 非侵入监控数据采集

    在复杂应用的场景下,服务间的访问拓扑、调用链、监控等都是服务访问异常时进行定位定界的必要手段。 服务网格技术的一项重要能力就是以应用非侵入的方式提供这些监控数据的采集,用户只需关注自己的业务开发,无需额外关注监控数据的生成。

  • 丰富性能监控能力

    基于网格生成服务访问数据,集成各种不同的性能监控服务,提供跨集群智能的服务运行管理。 包括跨集群的服务调用链、服务访问拓扑和服务运行健康状态、通过跨集群的全局视图来关联服务间的访问状况等。

评论