# 第 4 章 服务治理,超时熔断

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、前言

为什么使用中间件?

中间件屏蔽了底层操作系统的复杂性,也包括整合了系统功能服务的应用性。最终使程序研发人员面对一个简单并且统一的开发环境和框架服务,减少程序设计兼容和实现的复杂性。

中间件带给应用系统的,不只是简化了开发、缩短了周期,同时也在一定程度的减少了系统的维护、运营和管理的工作量,同时部分无服务计算的中间件,可能还会减少整体服务器的投入成本。

# 二、需求背景

如果说你正在开发一个交易或支付系统中的核心服务,可能有这样一个场景,用户在电商平台下单后开始跳转到在线收银台进行支付。由于支付渠道和网络环境随时都有可能发生问题,那么你该怎么保证支付系统的可靠性呢?

保证支付系统的可靠性需要考虑的点非常多,但这里有一个最直接和重点的内容就支付响应时长,如果支付时间过长,那么暴增的支付请求可能会把整个服务拖垮,最终导致所有服务瘫痪。

这时你可能会想到一个功能组件,超时熔断 hystrix。这也是大多数支付系统中必用的组件,但怎么用呢,我们是在所有的接口上都加一个这样的功能组件吗?显然这样做是不合适的,一般类似这样的组件可能会嵌入到你的RPC接口或者自研的网关上,也可能是在整个服务治理层的功能编排上。总之,它不会轻易的暴漏给你,让你硬编码到业务逻辑实现中。

那么,本章我们就抽丝剥茧把组件包装使用的最核心实现方式展示给你。记住任何实现方案都是以当前系统环境最适合方式设计的,并不一定非得拘泥于某种形式。