陌陌服务化架构演进:从基础到微服务

版权申诉
0 下载量 162 浏览量 更新于2024-07-03 收藏 3.57MB PDF 举报
“基础架构+陌陌服务化架构实践.pdf”主要介绍了陌陌公司在服务化架构上的发展历程、技术选型以及架构演进中的关键优化措施。本文档由陌陌基础软件组负责人高飞航分享,展示了陌陌如何从早期的单体应用逐步转变为服务化架构,并在过程中应对各种挑战,实现高性能、高可用和灵活性。 陌陌的服务化架构始于2012年底,采用自主研发的方式,构建了核心框架和周边生态产品。随着服务化的推进,陌陌拥有超过1000个服务,7000多个实例,运行在6000多台主机(包括Docker容器)上,每天处理的调用总量达到1500亿次,峰值时每秒达到300万次。 在技术栈的选择上,陌陌利用PHP快速响应业务需求,开发API,而复杂的计算任务则交由Java服务层处理。服务间的通信最初采用HTTP+JSON协议,后来为了提高效率,引入了Redis传输协议,因为它更简洁高效,且有丰富的多语言客户端支持。服务发现机制统一,使用JSON序列化协议,确保了灵活性和可读性,同时降低了业务接口的复杂度。 在架构优化方面,陌陌采取了多种策略来应对压力和提升性能。例如,通过扩展一主多从的Redis集群分担压力,服务路由层增加缓存以减少QPS,使用DNS解析到LVS服务器并引入HAProxy来解决网络限制问题。此外,还通过地址来源的分层设计,形成了责任链结构,实现开关灵活控制功能的开启。 监控机制是服务化架构中不可或缺的部分。早期,陌陌只有本地日志,没有统一的监控系统。随着时间推移,他们建立了完善的监控体系,包括分钟级的数据采集、异步调用的支持,以及针对方法级别的精确监控,如百分位时间、线程和GC情况。为了应对异步调用的需求,陌陌开发了一套包含Broker、队列、Worker三种角色的产品,支持调用Service和HTTP接口,通过增加Kafka队列模式解决请求堆积问题。 随着服务器数量的增长,日志管理变得复杂,陌陌引入了分布式跟踪系统,通过Agent采集日志,经过Kafka和Storm中转,最终存储在HDFS上。这样既方便了多服务器日志查看,也能进行滚动冲刷日志的回溯,极大地提升了日志管理和问题排查的效率。 陌陌服务化架构实践涵盖了从架构设计、技术选型、服务通信、扩展优化到监控运维等多个方面,为其他公司提供了宝贵的参考经验。