美团大规模微服务通信框架及治理体系OCTO核心组件开源

微服务通信框架及治理平台OCTO作为美团基础架构设施的重要组成部分,目前已广泛应用于公司技术线,稳定承载上万应用、日均支撑千亿级的调用。业务基于OCTO提供的标准化技术方案,能够轻松实现服务注册/发现、负载均衡、容错处理、降级熔断、灰度发布、调用数据可视化等服务治理功能。

现在我们将OCTO的核心组件OCTO-RPC、OCTO-NS、OCTO-Portal开源,欢迎大家使用和共建。

背景

OCTO项目始于2014年底,当时美团正处在新业务拓展期,服务数量不断增长,服务间调用拓扑日益复杂,逐渐暴露出了一些典型的问题:

  • 研发效率低:缺乏标准的服务治理框架和组件,不少团队“重复造轮子”造成资源浪费,研发质量参差不齐,系统整体可用性不高。
  • 运维成本高:缺乏完善、便捷的体系化运维手段,难以进行准确的监控告警,难以对涉及多级链路的故障快速定位。
  • 服务运营难:服务指标数据收集困难,缺乏自动化深度分析,难以满足业务快速对指标进行评估决策的要求。

针对这些痛点问题,提升研发效率和质量,降低运营成本,对于支撑业务快速稳定发展显得尤为重要。因此,基础架构团队研发了公司级统一的分布式微服务通信框架及治理平台——OCTO。OCTO是英文单词章鱼(Octopus)的缩写,章鱼众多的触手表征OCTO平台能触达治理海量的服务,涵盖服务治理领域的各个部分,因此取名。自平台推出以来,在全公司各业务线被广泛进行使用,显著提升了全公司的技术研发效率与运营质量,稳定支撑着美团业务的高速发展。

有别于传统的开源服务治理组件,OCTO提供了体系化的服务治理方案,从通信框架到注册中心、从文件配置到埋点告警、从灰度链路到数据报表,立体化的提升微服务运营能力、赋能业务。此外,奉行“策略下沉”的设计思想,OCTO剥离传统通信框架具备的服务治理策略功能,下沉到代理组件实现,有效提升通信框架的稳定性、降低业务系统额外开销。历经海量调用验证的OCTO,依托低耦合、模块化、单元化系统架构,能够有效满足各类复杂业务场景需求,实现异地多活等容灾目标。

功能特性

针对暴露出的问题,OCTO围绕包括定义、开发、测试、部署、运维、优化、下线在内的服务的全生命周期,打造了一系列组件和系统,方便研发同学专注于自身业务逻辑开发的同时,又能享受完善的服务治理功能。例如,我们在开发阶段提供了高性能、高可用、功能模块化的通信框架供业务便捷使用;在测试阶段提供了SET化、泳道、服务分组等各种灰度策略供业务无损试错;在运维阶段提供机器级、框架级、业务级等层级分明的监控告警供业务快速定位问题;在优化阶段提供了详尽的服务指标供业务自定义分析改进。

OCTO主要功能特性包括但不限于:

  • 命名服务:服务注册/发现。
  • 服务管理:服务状态监测;服务启动、停止;服务负载均衡。
  • 容错处理:实时屏蔽异常的服务,自动调配请求流量。
  • 流量分发:灰度发布、节点动态流量分配等场景。
  • 数据可视化:服务调用统计上报分析,提供清晰的数据图表展示,直观定位服务间依赖关系。
  • 服务分组:支持服务动态自动归组与不同场景下的自定义分组,解决在多机房场景下跨机房调用穿透、沙盒测试等问题。
  • 服务监控报警:支持服务与接口级别多指标、多维度的监控,支持多种报警方式。
  • 统一配置管理:支持服务配置统一管理,灵活设置不同环境间差异,支持历史版本,配置项变更后实时下发。
  • 分布式服务跟踪:轻松诊断服务访问慢、异常抖动等问题。
  • 过载保护:灵活定义分配给上游服务消费者的配额,当服务调用量超出最大阀值时,基于不同服务消费者进行QoS区分,触发流控进行过载保护。
  • 服务访问控制:支持多粒度、多阶段的鉴权方式。

OCTO整体架构

  • OCTO-RPC(开源Java/C++):分布式RPC通信框架,支持Java、C++、Node.js等多种语言。
  • SGAgent:部署在各服务节点,承担服务注册/发现、动态路由解析、负载均衡、配置传输、性能数据上报等功能。
  • Oceanus(待开源):HTTP定制化路由负载器,具体可参考《Oceanus:美团HTTP流量定制化路由的实践》一文。
  • OCTO-NS:包括SDK(Java/C++)、基础代理SGAgent、命名服务缓存NSC、健康检查服务Scanner等组件,提供命名服务,服务注册等信息的存储,服务状态检测的扫描等功能。
  • Watt(待开源):统计链路信息,计算服务各类指标作为监控报警依据。
  • MCC(待开源):统一配置中心,可进行服务配置的管理下发。
  • OCTO-Portal:服务注册、管理、诊断、配置、配额等功能的一站式管理平台。

OCTO开源组件

OCTO首批开源的核心组件包括:分布式服务通信框架(OCTO-RPC)、服务注册中心(OCTO-NS)、服务治理平台(OCTO-Portal)。未来,我们还将持续开源更多的组件与功能。

分布式服务通信框架(OCTO-RPC)

分布式服务通信框架是OCTO的重要组成部分,具备高性能、高可用、易扩展、易接入等特点,已覆盖美团90%以上的服务(Java/C++),支撑每天千亿级别的调用量。目前Java和C++版本已经开源,更多技术实现详见:OCTO-RPC。

服务注册中心(OCTO-NS)

服务注册中心基于服务描述信息,实现服务注册/发现、配置管理、路由分组、负载均衡、健康检测等功能,搭配服务治理平台能够更便捷地进行服务节点数据的可视化运营。目前开源出来的子模块包括SDK(Java/C++)、基础代理SGAgent、命名服务缓存NSC、健康检查服务Scanner。更多技术实现详见: OCTO-NS。

服务治理平台(OCTO-Portal)

服务治理的一站式平台,为服务关注方提供服务节点管理、性能数据分析、全链路跟踪诊断等服务治理核心能力。更多技术实现详见: OCTO-Portal。

关于开源

在过去四年中,OCTO是美团在架构中间件领域研发的一个重要技术项目,在复杂多元业务、大规模并发调用的场景下已被充分验证。目前OCTO支撑了美团大规模微服务每天千亿级的调用,接口调用成功率达到了99.999%,是全公司SOA、服务治理的核心基础。我们期望通过将其开源,不断反馈给社区、贡献给行业。同时,我们希望在行业优秀工程师的帮助下,OCTO平台能得到更快地升级更新迭代。欢迎大家多提宝贵意见和建议。

未来规划

为了进一步支撑美团业务飞速发展的需求,同时对标业界先进的服务治理理念与实践,未来一段时间内,OCTO将在以下几方面规划演进:

  1. 命名服务AP化:弱化强一致性,聚焦异常状态下注册中心的可用性。
  2. 框架反应式编程:RPC框架提供反应式编程支持,帮助业务构建高性能异步无阻塞的服务。
  3. Service Mesh:将现有命名服务等功能与控制面/数据面结合,以服务网格的思路进一步演进OCTO服务治理体系。

作者简介

舒超、张翔,美团OCTO服务治理团队研发成员。About 团队
OCTO服务治理团队负责整个公司的服务治理底层设施建设,包括命名服务、配置服务、RPC通信框架、ServiceMesh/Serverless演进等。 语言栈包括Java、C++、Node.js、Scala、Golang等,工作内容覆盖前后端各项技术,承载外卖,酒旅等集团各业务线的日均千亿级别的调用需求,是美团核心研发组织。

Image placeholder
IT头条
未设置
  49人点赞

没有讨论,发表一下自己的看法吧

推荐文章
运营商大规模数据集群治理的实践指南

写在开头的话Q: 军哥,你们运营商行业的大规模集群,都有啥特点啊?A: 我们集群主要是承载B域、信令和互联网日志等去标识化数据,简单的说,有三个特点:1)集群规模较大:数千节点规模,近百PB数据量,日

美团下一代服务治理系统 OCTO2.0 的探索与实践

本文根据美团基础架构部服务治理团队工程师郭继东在2019QCon(全球软件开发大会)上的演讲内容整理而成,主要阐述美团大规模治理体系结合ServiceMesh演进的探索实践,希望对从事此领域的同学有所

使用 openvpn 与集群内部服务通信

当我们访问集群内部服务,如postgres,redis,traefikDashboard,gitlab时,如果直接暴露在公网中,会造成很大的安全隐患,而使用BasicAuth,WhiteList等也稍

多云时代下大规模数据库管理,该怎么做?

中国经济的高速发展是世界各国人们有目共睹的,随着数字经济时代的到来,金融数据库的管理,也随之面对一系列的新技术与挑战。云计算一直以来被认为是极具颠覆性的技术力量,随着云计算的应用普及,越来越为企业重视

etcd 在超大规模数据场景下的性能优化

作者|阿里云智能事业部高级开发工程师 陈星宇(宇慕)划重点etcd优化背景问题分析优化方案展示实际优化效果本文被收录在5月9日cncf.io官方blog中,链接:https://www.cncf.io

超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?

导读:资源利用率一直是很多平台管理和研发人员关心的话题。本文作者通过阿里巴巴容器平台团队在这一领域的工作实践,整理出了一套资源利用提升的方案,希望能够带给大家带来一些讨论和思考。引言不知道大家有没有过

大神讲解微服务治理的技术演进和架构实践

摘要:随着业务的发展,规模扩大,服务越来越多,需要协调线上运行的各个服务,保障服务的SLA;基于服务调用的性能KPI数据进行容量管理,合理分配各服务的资源占用;对故障业务做服务降级、流量控制、流量迁移

微服务治理与统计分析

转载本文需注明出处:微信公众号EAWorld,违者必究。引言:微服务架构下,服务拆得越细,服务的粒度越小,可组装性就越好;与之相对的服务之间的调用关系就会变复杂,为了保证服务更好的运行,需要对这些服务

Hyperf 发布 Session、极简 DB、zk 配置中心组件和支持 Twig/Plates 视图引擎支持

更新内容 本周更新主要新增极简DB组件,Zookeeper配置中心,和Session组件,以及为视图组件增加了Twig和Plates视图引擎的支持,同时为计划任务组件增加了集群执行的支持。极简DB组件

史上规模最大的中文知识图谱以及估值两个亿的 AI 核心代码

——大声告诉我,怎样才能可以让你变得更强?——充钱——???——都什么玩意?还有啥子咧?——充更多钱执迷不悟,无可救药了。所以,正确答案应该是什么呢?答:是知识。反正,说这些就是为了切入「知识」这个话

侵入式服务治理方案,读这一篇就够

尽管在程序执行效率上,Java不如C、C++,在开发效率、易用性以及学习难度上,Java又不如Ruby、Python、Go,但Java无疑是当今后端系统开发中使用最为广泛的语言。Java所累积的大量生

宜信开源|微服务任务调度平台SIA-TASK入手实践

引言最近宜信开源微服务任务调度平台SIA-TASK,SIA-TASK属于分布式的任务调度平台,使用起来简单方便,非常容易入手,部署搭建好SIA-TASK任务调度平台之后,编写TASK后配置JOB进行调

美团BERT的探索和实践

他山之石,可以攻玉。美团点评NLP团队一直紧跟业界前沿技术,开展了基于美团点评业务数据的预训练研究工作,训练了更适配美团点评业务场景的MT-BERT模型,通过微调将MT-BERT落地到多个业务场景中,

我是怎么倒在美团第三轮面试之下的

说实话,之前我从来没想过能有大厂会给我机会让我去面试,一个专科生,不是科班出身,这些硬性条件好像都没有一个符合的,但是却获得了美团的面试机会。很庆幸自己获得那次机会,也让我深刻体会到了面试大厂,到底需

美团点评Kubernetes集群管理实践

背景作为国内领先的生活服务平台,美团点评很多业务都具有非常显著、规律的“高峰”和“低谷”特征。尤其遇到节假日或促销活动,流量还会在短时间内出现爆发式的增长。这对集群中心的资源弹性和可用性有非常高的要求

美团云注资增至8.7亿元,穆荣均将替换王兴成为CEO

据企查查工商信息显示,美团云运营主体北京三快云计算有限公司在12月25日发生工商变更,注册资本由1000万元变更为8.7亿元,公司实际控制人、最终受益人由美团创始人王兴推出,法定代表人变更为美团联合创

数字化治理是城市数字化转型的主阵地

春常在,宜常来,月亮之城宜春迎来了大数据与AI盛开的春天。在日前举办的首届华为∙宜春城市大数据与人工智能高峰论坛上,宜春市人民政府市长王水平表示,宜春市抢抓以智能化、大数据为标志的世界第四次工业革命的

🚀 Hyperf 发布 v1.1.8 版本 | 企业级的 PHP 微服务云原生协程框架

更新内容 新增 #965新增RedisLua模块,用于管理Lua脚本; #1023hyperf/metric组件的Prometheus驱动新增CUSTOM_MODE模式; 修复 #1013修复Js

🚀 Hyperf 发布 v1.1.9 版本 | 企业级的 PHP 微服务云原生协程框架

更新内容 本周更新主要为DI组件新增了懒加载功能,配置为懒加载后,注入的对象为一个代理对象,在使用到时,才会实现对象的初始化。以及为DIContainer增加了set和define方法来动态的增加对象

🚀 Hyperf 发布 v1.1.9 版本 | 企业级的 PHP 微服务云原生协程框架

更新内容本周更新主要为DI组件新增了懒加载功能,配置为懒加载后,注入的对象为一个代理对象,在使用到时,才会实现对象的初始化。以及为DIContainer增加了set和define方法来动态的增加对象管

餐饮SaaS规模之战一触即发 客如云显制胜决心

记得上小学的时候腊月时节下起了夜雨,第二天清晨寒风凛冽中公路铺满了薄薄的冰层,外出行人即使再小心也不免滑倒。2018年对于创业者来说何尝不是一个下雨的冬天,宏观经济带来了凛冽寒风。国内民以食为天,去年

AWS计划扩大其在中国市场的业务规模

近日,AWS首席云计算企业顾问张侠表示,AWS希望在中国快速发展的云计算市场中占有更大的份额。  AWS首席云计算企业顾问张侠(Digitimes的AaronLee摄)AWS在全球云计算市场中占有40

分享一款支持多种短信服务商 Hyperf 组件,基于 overtrue/easy-sms 组件改造

一款支持多种短信服务商Hyperf组件1.新增配置文件phpbin/hyperf.phpvendor:publishhyperf-libraries/sms2.修改配置

react-native中IOS的webview和js层通信 - UIWebview

前言在9012的最后一篇写到了在rn中安卓的webview的通信原理,而作为0202年的第一篇,继续讨论上年rn中webview通信剩下的部分。背景:对于webview,了解过的人都知道在ios端会存

开源React Native组件库beeshell 2.0发布

2018年,我们开源了ReactNative组件库——beeshell1.0。时隔一年,我们对ReactNative组件库继续优化,实现beeshell2.0升级,开源38个功能。希望更好的服务社区,