# 5.0 服务网格能力介绍 下图是一个网格状服务的正常模型,如何管理这样复杂的网格服务? ![whatmesh](https://docs.daocloud.io/daocloud-docs-images/docs/blogs/images/mspider01.png) DaoCloud 服务网格是一种具备高性能、高易用性的全托管服务网格产品,通过提供完整的非侵入式的微服务治理解决方案,能够很好的支持多云多集群复杂环境的统一治理,以基础设施的方式为用户提供服务流量治理、安全性治理、服务流量监控、以及对传统微服务(SpringCloud、Dubbo)接入支持。并兼容社区原生 Istio 开源服务网格,提供原生 Istio 接入管理能力。较高的层次上,服务网格有助于降低服务治理的复杂性,并减轻开发运维团队的压力。 道客服务网格作为 DCE 5.0 产品的体系一员,无缝对接容器管理平台,可以为用户提供开箱即用的上手体验,并作为基础设施为微服务引擎提供容器微服务治理支持,方便用户通过单一平台对各类微服务系统做统一管理。 ![mspiderlocation](https://docs.daocloud.io/daocloud-docs-images/docs/blogs/images/mspider02.png) ## 流量治理 流量治理是一个非常宽泛的话题,例如: - 动态修改服务间访问的负载均衡策略,如根据某个请求特征做会话保持。 - 同一个服务有两个版本在线,将一部分流量切到某个版本上。 - 对服务进行保护,例如限制并发连接数、限制请求数、隔离故障服务实例等。 - 动态修改服务中的内容,或者模拟一个服务运行故障等。 在服务网格中实现这些服务治理功能时无须修改任何应用的代码。 服务网格可以为管理的服务提供非侵入的流量治理能力。 根据服务的协议,提供策略化、场景化的网络连接管理。 在应用拓扑上对选定服务的选定端口,根据需要配置各种不同的治理规则。 ### 场景优势 **重试** 服务访问失败自动重试,从而提高总体访问成功率和质量。支持配置 HTTP 请求重试次数、重试超时时间和重试条件。 **超时** 服务访问超时自动处理,快速失败,从而避免资源锁定和请求卡顿。支持配置 HTTP 请求超时时间。 **连接池** 通过连接池管理,可以对四层协议配置 TCP 的最大连接数、连接超时时间、最大无响应次数、最短空闲时间和健康检查间隔, 对七层协议配置 HTTP 最大请求数、最大重试次数、最大等待请求数、每连接最大请求数、连接最大空闲时间,从而防止一个服务的失败级联影响到整个应用。 **离群检测** 通过离群检测配置实例被驱逐前的连续错误次数、驱逐间隔时长、最小驱逐时间、最大驱逐比例等参数,从而定期考察被访问的服务实例的工作情况,如果连续出现访问异常,则将服务实例标记为异常并进行隔离,在一段时间内不为其分配流量。过一段时间后,被隔离的服务实例会再次被解除隔离,尝试处理请求。如果还不正常,则被隔离更长的时间。从而实现异常服务实例的故障隔离和自动故障恢复。 **负载均衡** 配置各种负载均衡策略,如随机、轮询、最少连接,还可以配置一致性哈希将流量转发到特定的服务实例上。 **HTTP 头域** 灵活增加、修改和删除指定 HTTP 头域,包括将 HTTP 请求转发到目标服务之前对 Headers 的操作,以及将 HTTP 响应回复给客户端前,对 Headers 的操作,以非侵入方式管理请求内容。 **故障注入** 通过对选定的服务注入中断故障、延时故障来构造故障场景,无需修改代码即可进行故障测试。 ## 端到端的透明安全 众所周知,将传统的单体应用拆分为一个个微服务固然带来了各种好处,包括更好的灵活性、可扩缩性、重用性,但微服务也同样面临着特殊的安全需求: - 为了抵御中间人攻击,需要用到流量加密。 - 为了提供灵活的服务访问控制,需要用到 TLS 和细粒度访问策略。 - 为了决定哪些人在哪些时间可以做哪些事,需要用到审计工具。 面对这些需求服务网格提供全面的安全解决方案,包括身份验证策略、透明的 TLS 加密以及授权和审计工具。 ### 场景优势 **非侵入安全** 服务网格是以一种安全基础设施的方式向用户提供透明的安全能力,让不涉及安全问题的代码安全运行,让不太懂安全的人可以开发和运维安全的服务,不用修改业务代码就能提供服务访问安全。 应用服务网格提供了一个透明的分布式安全层,并提供了底层安全的通信通道,管理服务通信的认证、授权和加密,提供 Pod 到 Pod、服务到服务的通信安全。 开发人员在这个安全基础设施层上只需专注于应用程序级别的安全性。 **多集群安全** 在多集群场景下服务网格提供了全局的服务访问安全。多个集群的网格共享一套根证书,给数据面的服务实例分发密钥和证书对,并定期替换密钥证书,根据需要撤销密钥证书。 在服务间访问时,网格的数据面代理就会代理本地服务和对端进行双向认证、通道加密。 这里的双向认证的服务双方可以来自两个不同的集群,从而做到跨集群的透明的端到端双向认证。 **细粒度授权** 在认证的基础上,就可以进行服务间的访问授权管理,可以控制某个服务,或者服务的一个特定接口进行授权管理。 如只开放给特定的一个 Namespace 下的服务,或者开放给某个特定的服务。 源服务和目标服务可以在不同的集群,甚至源服务的不同实例在不同的集群,目标服务的不同实例在不同的集群。 ## 服务运行监控 运营容器化的基础设施带来了一系列新的挑战。我们需要增强容器、评估 API 端点的性能以及识别出基础设施中的有害部分。 服务网格可在不修改代码的情况下实现 API 增强,并且不会带来服务延迟。 服务网格为网格内的所有服务通信生成详细的遥测,这种遥测技术提供了服务行为的可观察性,允许运营商对其应用程序进行故障排除、维护和优化,而不会给服务开发人员带来任何额外负担。 通过服务网格,运营商可以全面了解被监控的服务如何与其他服务以及组件本身进行交互。 ### 场景优势 **非侵入监控数据采集** 在复杂应用的场景下,服务间的访问拓扑、调用链、监控等都是对服务整体运行状况进行管理,以及服务访问异常时进行定位定界的必要手段。 服务网格技术的一项重要能力就是以应用非侵入的方式提供这些监控数据的采集,用户只需关注自己的业务开发,无需额外关注监控数据的生成。 **丰富性能监控能力** 基于网格生成服务访问数据,集成各种不同的性能监控服务,提供跨集群智能的服务运行管理。包括跨集群的服务调用链、服务访问拓扑和服务运行健康状态。通过跨集群的全局视图来关联服务间的访问状况。 ## 图形化用户交互 在服务网格中,为用户实现以下图形化的交互性功能: 1. 对服务网格下的网格资源创建、管理、设置能力,用户可以根据需要把集群资源分配至合理的网格中,实现聚合管理; 2. 为用户接入集群资源,或把用户已部署ISTIO治理组件的集群资源置于服务网格平台管控下; 3. 提供对网格下管控资源的工作空间绑定功能,通过工作空间实现网格资源的权限分享,方便各子产品间互动; 4. 以聚合管理方式,为用户提供命名空间、服务的统一查看、操作功能; 5. 针对命名空间、服务的流量治理功能,并提供表单和YAML两种创建、编辑形式,用户几乎可以使用原生ISTIO提供的所有流量治理功能(路由、分流、离群检测等); 6. 针对命名空间、服务的安全治理功能,并提供表单和YAML两种创建、编辑形式,用户可以配合流量治理实现网格内零信任环境和访问授权功能; 7. 对网格内服务通信的流量拓扑查看功能和状态图表查看功能;流量拓扑会为用户提供各类网格内节点间通信状态、使用协议、性能参数等各项信息展示,用户可以通过搜索筛选功能迅速定位问题;状态图表可以从全局、服务、工作负载等多个纬度为用户提供系统内各状态信息; [了解服务网格](../mspider/intro/index.md){ .md-button } [下载 DCE 5.0](../download/index.md){ .md-button .md-button--primary } [安装 DCE 5.0](../install/index.md){ .md-button .md-button--primary } [申请社区免费体验](../dce/license0.md){ .md-button .md-button--primary }