《架构师》2016年5月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

无线后端服务架构

无线后端服务架构方面,原有的无线架构(见图1)是所有无线服务耦合成一个统一的服务模块,囊括了所有提供给客户端访问的API。

图1

在统一服务模块功能较少的时候,这套架构完全符合业务功能需求,但当功能迭代加快,问题不断出现:

每个API都是DLL动态库形式(.net)实现,在某些公共逻辑接口发生变化时,不同时期上线的API可能使用了不同版本的逻辑接口定义,会导致运行时出现诡异结果或者进程Crash,影响稳定性;

每次大版本发布上线,从测试到全面发布完毕,都需要全量回归测试过程,开发和测试进度严重耦合,影响发布效率;

新增的低优先级API可能稳定性不好,出现问题时会影响到整个服务进程的稳定性。

除了这种完全耦合的弊端之外,还存在其他诸如缺少负载均衡、越少监控、缺少熔断等影响后端稳定性的问题。于是我们开始尝试使用一种新的无线架构:Gateway(图2)。

图2

携程基于Netflix的开源项目Zuul开发了无线Gateway(曾在2015年QCon上海会议中分享)。Gateway的职能是负责接收来自无线端的所有API请求,并将他们路由到正确的目标应用服务器,并且提供限流、隔离、熔断等功能,保证了无线服务的长期稳定运行,拥有的弹性容错机制也减少了日常运维工作。同时该Gateway提供了多维度的监控数据,并与报警系统对接,实时监控线上情况,达到运维自动化。