InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

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

  • 2019-08-31
  • 本文字数:2744 字

    阅读完需:约 9 分钟

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

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


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

背景

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


  • 研发效率低:缺乏标准的服务治理框架和组件,不少团队“重复造轮子”造成资源浪费,研发质量参差不齐,系统整体可用性不高。

  • 运维成本高:缺乏完善、便捷的体系化运维手段,难以进行准确的监控告警,难以对涉及多级链路的故障快速定位。

  • 服务运营难:服务指标数据收集困难,缺乏自动化深度分析,难以满足业务快速对指标进行评估决策的要求。


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


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

功能特性

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


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


  • 命名服务:服务注册/发现。

  • 服务管理:服务状态监测;服务启动、停止;服务负载均衡。

  • 容错处理:实时屏蔽异常的服务,自动调配请求流量。

  • 流量分发:灰度发布、节点动态流量分配等场景。

  • 数据可视化:服务调用统计上报分析,提供清晰的数据图表展示,直观定位服务间依赖关系。

  • 服务分组:支持服务动态自动归组与不同场景下的自定义分组,解决在多机房场景下跨机房调用穿透、沙盒测试等问题。

  • 服务监控报警:支持服务与接口级别多指标、多维度的监控,支持多种报警方式。

  • 统一配置管理:支持服务配置统一管理,灵活设置不同环境间差异,支持历史版本,配置项变更后实时下发。

  • 分布式服务跟踪:轻松诊断服务访问慢、异常抖动等问题。

  • 过载保护:灵活定义分配给上游服务消费者的配额,当服务调用量超出最大阀值时,基于不同服务消费者进行 QoS 区分,触发流控进行过载保护。

  • 服务访问控制:支持多粒度、多阶段的鉴权方式。

OCTO 整体架构


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-Portal 示意图

关于开源

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

未来规划

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


  1. 命名服务 AP 化:弱化强一致性,聚焦异常状态下注册中心的可用性。

  2. 框架反应式编程:RPC 框架提供反应式编程支持,帮助业务构建高性能异步无阻塞的服务。

  3. Service Mesh:将现有命名服务等功能与控制面/数据面结合,以服务网格的思路进一步演进 OCTO 服务治理体系。


作者介绍


  • 舒超,2015 年加入美团,高级技术专家,基础开发负责人。

  • 张翔,2017 年加入美团,现负责公司命名服务和通信框架的研发。


本文转载自美团技术团队


原文链接


https://tech.meituan.com/2019/08/08/large-scale-microservice-communication-framework.html


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-08-31 08:007271

评论

发布
暂无评论
发现更多内容

【Flutter 专题】51图解动画小插曲之 Flare 动画

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

MimeType文件格式速查表

入门小站

工具

编程基础:硬件同步原语

正向成长

CAS 硬件同步原语 FAA

重放浏览器单个请求性能测试实践

FunTester

性能测试 接口测试 测试框架 测试开发 FunTester

云随想一:企业为什么要上云?

FLASH

原生云

解决网卡“Device eth0 does not seem to be present, delaying initialization”

耳东@Erdong

9月日更 网卡

让Chrome爽到飞起的5款小众插件!

Jackpop

Rust 从 0 到 1

rust

Vue进阶(幺零五):elementUI 实现表格行列拖拽

No Silver Bullet

Vue 9月日更

观测未来,携手同行!驻云诚邀您参加2021 OSCAR 开源产业大会!文末报名福利!

观测云

开源 可观测

为什么 Golang 正在接管软件行业

云原生

云计算 Kubernetes 云原生 编程语言 Go 语言

什么是可中断锁?有什么用?怎么实现?

王磊

9月日更

Python代码阅读(第26篇):将列表映射成字典

Felix

Python 编程 Code Programing 阅读代码

缓存核心知识小抄,面试必备,赶紧收藏!

博文视点Broadview

聊聊Java运算符的那些事

Bob

Java 9月日更

有个码龄 10 年的程序员跟我说:“他编程从来不用鼠标”,我说:

梦想橡皮擦

9月日更

Jira API的踩坑记

FunTester

接口测试 API Jira FunTester 缺陷管理

代码工具:VSCode

正向成长

vscode

一次带宽拉满引发的百分百超时血案!

Gopher指北

Go 语言

数据库连接池

邱学喆

TDSQL分布式数据库的HDFS和LOCAL备份配置

腾讯云数据库

数据库 tdsql

15. 弱人工智能、强人工智能、超人工智能

数据与智能

人工智能

Java之多重选择

IT蜗壳-Tango

9月日更

计算机工业的生态链(二)

姬翔

9月日更

手撸二叉树之二叉树的所有路径

HelloWorld杰少

9月日更

深入理解rtmp(二)之C++脚手架搭建

轻口味

android 音视频 直播 RTMP 9月日更

TDSQL(MySQL版)之DB组件升级

腾讯云数据库

数据库 tdsql

Golang 中的整洁架构

baiyutang

架构 DDD Go 语言 9月日更

【LeetCode】找到需要补充粉笔的学生编号Java题解

Albert

算法 LeetCode 9月日更

Java从入门到升仙的书单推荐,附带读书笔记

Silently9527

Java书籍推荐 Java进阶书籍推荐 Mysql读书笔记

一分钟带你了解Huawei LiteOS组件开发指南

华为云开发者联盟

curl 内核 组件 Huawei LiteOS 组件开发

  • 扫码添加小助手
    领取最新资料包
美团大规模微服务通信框架及治理体系OCTO核心组件开源_开源_张翔_InfoQ精选文章