
# 服务治理概述
服务治理是一个非常宽泛的概念，一般指独立于业务逻辑之外，给系统提供一些可靠运行的系统保障措施。针对微服务场景下的常用故障模式，提供的保障措施包括：
- 负载均衡管理：提供多实例情况下的负载均衡策略管理，比如采用轮询的方式保障流量在不同实例均衡。当一个实例发生故障的时候，能够暂时隔离这个实例，防止访问这个实例造成请求超时等。
- 限流：流控的主要目的是提供负载保护，防止外部流量超过系统处理能力，导致系统崩溃。流控还被用于平滑请求，让请求以均匀分布的方式到达服务，防止突发的流量对系统造成冲击。
- 重试：重试的主要目的是保障随机失败对业务造成影响。随机失败在微服务系统经常发生，产生随机失败的原因非常多。以Java微服务应用为例，造成请求超时这种随机失败的原因包括：网络波动和软硬件升级，可能造成随机的几秒中断；JVM垃圾回收、线程调度导致的时延增加；流量并不是均匀的，同时到来的1000个请求和1秒内到来的1000个请求平均分布对系统的冲击是不同的，前者更容易导致超时；应用程序、系统、网络的综合影响，一个应用程序突然的大流量可能会对带宽产生影响，从而影响到其他应用程序运行；其他应用程序相关的场景，比如SSL需要获取操作系统熵，如果熵值过低，会有几秒钟的延迟。 系统不可避免地面临随机故障，必须具备一定的随机故障保护能力。
- 隔离仓：隔离仓通常针对系统资源占用比较多的业务进行保护。比如一个业务非常耗时，如果这个业务和其他业务共享线程池，当这个业务被大量突发访问时，其他业务都会等待，造成整个系统性能下降。隔离仓通过给资源占用比较多的业务分配独立的资源池（一般通过信号量或者线程池实现），避免对其他业务造成影响。
- 降级：降级治理是在业务高峰期时，需要临时减少对于目标服务的访问，达到降低目标服务负载；或者屏蔽对于非关键服务的访问，保持本服务的核心处理能力的治理措施。
服务治理的复杂性在于没有任何治理措施是适用于所有场景的。对于一个应用场景工作良好的治理手段，在另外一个场景可能成为问题。在业务运行周期，根据业务运行状态和指标，动态地更新治理策略非常重要。
在业务系统中使用服务治理，通常包括下面几个步骤：
1. 开发业务。这个过程一般比较少关注服务治理的内容，以交付业务功能为重心。微服务开发框架针对常用的系统故障，一般都默认提供了保障措施，选择合适的微服务开发框架，可以节省DFX的时间。
2. 性能测试和故障演练。这个过程中会发现非常多的系统不稳定问题，服务治理的策略会在解决这些问题的过程中应用，并写入配置文件作为应用程序缺省值。
3. 业务上线运行。上线运行的过程中碰到未考虑的场景，需要采用配置中心动态调整治理参数，以保障业务平稳运行。
上面的3个步骤在整个软件生命周期会不断迭代完善。描述如何使用所有的治理能力是复杂的，ServiceComb引擎针对不同的微服务开发框架，提供了一个统一的基于流量特征的服务治理能力。如果使用微服务框架开发应用，在应用托管后启动应用，微服务会自动注册到对应的ServiceComb引擎，您可以到微服务引擎控制台进行服务治理的相关操作请参考[微服务治理](https://support.huaweicloud.com/usermanual-cse/cse_usermanual_22080103.html)。
本章节重点介绍如何使用基于流量特征的服务治理能力。
