论文部分内容阅读
消息队列利用其高效稳定丰富的信息传递机制进行平台无关的数据交流,它基于消息的形式进行分布式系统的集成。随着业务数量和复杂度的增长,消息队列作为分布式系统之间通信的桥梁,其用户数量和自身部署规模也在快速增长:用户遇到的问题需要依靠用户支持来解决,因而用户数量的增长带来了用户支持总耗时的增长;另一方面消息队列部署规模的增加给服务状态监控和服务的容量规划等服务治理带来很大的压力,同时随着部署规模到达一定阈值,人工的服务治理已经难以满足需求。本文基于消息队列用户数量和部署规模不断增长的背景,对比当前消息队列运维相关产品的现状,针对它们的缺点并结合蚂蚁金服消息队列运维的需求,从设计和实现两方面提出了蚂蚁金服消息队列运维平台这一解决方案。本文的主要工作如下:(1)针对平台的扩展性和维护性问题,本文提出了仿照函数式编程的无状态系统架构,将后端的状态抽离到共有的持久化存储,解决了平台集群的扩展、实例迁移和实例重启状态恢复的复杂性问题,实现了实例的低成本添加及销毁,使运维人员无需关心平台的正确性问题,从而给平台的运维带来了很大的便利。(2)针对消息队列用户数量增长导致用户支持力不从心的问题,本文提出了将以往用户支持经验通过程序的形式固化成以提供解决方案为核心的用户自助支持的方案,解决了用户支持并发度低和耗时长的问题。更重要的是,由于改进后的用户自助支持不再只进行问题的反馈,而是直接提供了帮助用户解决问题的引导,省去了用户依据问题反馈进行人工分析的过程。(3)针对平台业务逻辑中建立SSH连接耗时过长导致用户请求整体耗时过长的问题,本文创造性地提出了可复用、可重入和缓存隔离的SSH连接池方案,方案的三种特性分别解决了 SSH连接重复创建、线程重复获取SSH连接和SSH连接缓存隔离的问题。本方案对SSH连接池的引入,总体上取得了同时减少业务操作耗时和资源占用的效果。(4)针对消息队列部署规模增长导致服务治理困难的问题,本文提出服务状态监控和容量规划的方案。其中服务状态监控解决了无法把控服务高维度状态和感知异常不及时的问题;容量规划解决了集群容量不足和集群资源浪费的问题。以上两方面的改进,使消息队列更好地满足了其服务等级协议。(5)针对分布式环境下执行任务的健壮性问题,本文提出了更为轻量级的分布式任务调度的方案,解决了分布式执行任务的负载均衡、任务丢失和任务同时重复执行的问题。这一改进帮助开发人员将关注点集中于任务的业务逻辑,而不再需要考虑分布式任务调度和容错的问题。自上线以来,蚂蚁金服消息队列运维平台运行状态良好。消息队列用户可从平台获得用户自助支持服务;消息队列运维人员可通过平台使用服务监控和容量规划等服务治理功能。据统计,本平台以平均每月9000的有效页面访问量和400的用户数量对企业内部提供服务,大大提高了消息队列用户支持和服务治理的效率,达到了企业对该平台的基本需求。