1、陌陌云原生微服务架构落地实践 袁世超目录陌陌微服务平滑演进之路陌陌微服务治理现状与挑战陌陌 Service Mesh 落地实践2011201220132014201520162017201820192020单体应用系统拆分PHP API+Java 后端MOA 微服务架构建立配置中心监控平台异步调用平台日志平台分布式跟踪系统并行调用代理异构语言代理应用容器化服务鉴权限流容错Service Mesh架构落地陌陌微服务发展历程 陌陌微服务整体架构 注册中心(MomoKeeper)服务发现(lookup)C+ServerJava ServerC+ClientPHP/Python ClientJava
2、Client服务端客户端X ClientMesh AgentMesh AgentX ServerMOA 协议协议注册注册订阅查询MOA Watcher(健康检查)健康检查健康检查基于brpc1.注册中心Redis 作为底层存储MOA Watcher中心化健康检测2.多语言支持中心化地址发现服务MOA 传输协议服务流量代理3.关联产品支持配置中心异步调用平台统一监控平台分布式跟踪系统压测平台陌陌微服务整体情况服务数服务数千级千级实例数万级万级峰值峰值QPSQPS千万级千万级全天调用量全天调用量万亿级万亿级MOA 架构建立1可观测性建设2异构语言服务代理3ServiceService MeshMe
3、sh 架构引入4关键演进公司初期业务规模小,单体应用架构是合适的,适应功能快速迭代的需求。但是随着业务规模的扩张,单体应用的局限性也凸显了出来。MOA 架构建立 单体应用的问题单体应用的问题制约业务迭代效率可靠性差,一个小问题导致整体不可用复杂度高,所有业务都堆在一起可扩展性差面对单体应用的问题,首先进行了系统拆分,但是效果并不理想,随后微服务架构开始流行,陌陌于 2013 年开启了微服务架构的时代,自研 MOA 架构落地,一直使用至今。放到微服务发展的大背景下,陌陌可以说是最早一批实践微服务的公司。MOA 架构建立 201120122013Dubbo 开源开源James Lewis 发布著名
4、的 Microservice-Java,the Unix Way主题演讲陌陌自研微服务架构陌陌自研微服务架构 MOA 落地落地2014Martin Fowler&James Lewis 发布著名的 Microservice:A Definition of This New Architectural Term文章MOAMOA 的时代背景的时代背景MOA 架构为业务快速迭代和扩张提供了坚实的基础,其优势主要体现在:围绕业务能力构建(康威定律)分散治理通过服务来实现独立自主的组件容错性设计演进式设计MOA 架构建立 注册中心(MomoKeeper)服务发现(lookup)MOA 服务 APHP A
5、PIMOA 服务 B客户端MOA协议MOA协议查询发现发现注册MOAMOA 的收益的收益在服务规模越来越大的背景下,当某个服务出异常时,如何快速有效定位成了迫切需要解决的问题。换句话说,我们需要提高 MOA 架构的可观测性。可观测性建设 异常问题定位异常问题定位无法快速定位异常监控告警缺失服务间依赖复杂日志信息缺失1.统一监控平台(hubble)分钟级打点监控(全面、准确)下游资源访问监控(作为客户端)上游调用来源监控(作为服务端)应用关联监控:GC、进程、Error日志、容器、物理机2.分布式跟踪系统(momotrace)调用链路分析 慢请求分析3.应用日志 秒级STAT日志 慢请求及异常请
6、求日志(记录下游IP)日志平台统一采集、分析、展示可观测性建设 The 3 Pillars of System Observability可观测性三大支柱可观测性三大支柱MOA 是以 Java 生态构建的,但是在某些领域 Java 并不是主流的语言,比如大数据领域主要使用 Python 和 C+,而且他们也有向外提供服务的需求。MOA 对异构语言的支持是通过“服务代理”的形式实现的,该方案在 2016 年落地,可以说是对 Service Mesh 思想的蒙昧尝试。异构语言服务代理 支持异构语言提供服务支持异构语言提供服务服务端 异构语言根据自身情况实现服务 MOA Proxy 提供 MOA 接