【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

  • 2019-08-14
  • 本文字数:2668 字

    阅读完需:约 9 分钟

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

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


现在我们将 OCTO 的核心组件OCTO-RPCOCTO-NSOCTO-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. ServiceMesh:将现有命名服务等功能与控制面/数据面结合,以服务网格的思路进一步演进 OCTO 服务治理体系。


作者介绍


舒超张翔,美团 OCTO 服务治理团队研发成员。


本文转载自公众号美团技术团队(ID:meituantech)


原文链接


https://mp.weixin.qq.com/s/nEyS07BfS5rwxf-uMtrAOw


2019-08-14 08:002192

评论

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

趁年少,多读书

暮春零贰

读书笔记 10月月更

HashMap 源码分析(五)

知识浅谈

HashMap底层原理 10月月更

SAP CDS entity 中使用 @readonly 进行访问控制

Jerry Wang

CDS SAP abap 10月月更

Spring Boot概述(二)

Studying_swz

springboot 10月月更

PyTorch (1) | PyTorch的安装与简介

timerring

PyTorch 10月月更

微服务的常见架构方式

乌龟哥哥

10月月更

在线问题反馈模块实战(十五)​:实现在线更新反馈状态功能

bug菌

springboot 项目开发 10月月更

【kafka运维】ConfigCommand运维脚本

石臻臻的杂货铺

kafka 运维 kafka运维 10月月更

Jenkins把GitHub项目做成Docker镜像

程序员欣宸

Docker jenkins 10月月更

【web 开发基础】PHP 快速入门(7)-PHP 运算符之比较运算符详解

迷彩

10月月更 PHP基础 比较运算符

【ArchSummit】众安金融微服务架构演进实战

小明Java问道之路

架构 微服务 全球架构师峰会 ArchSummit 10月月更

Web3.0杂谈-#008(55/100)

hackstoic

Web3.0

架构实战营模块3-外包学生管理系统架构设计文档

冷夫冲

架构 架构设计 架构训练营

git fetch&pull讲解 | Git

Appleex

git

极客时间运维进阶训练营第一周作业

老曹

Python运算符有哪些你清楚吗

芥末拌个饭吧

后端 python 3.5+ 10月月更

资源管理系统Apache Mesos

穿过生命散发芬芳

10月月更 Mesos

“程”风破浪的开发者 | 关于web3.0远离银手镯比什么都重要!

王中阳Go

区块链 NFT Web3.0 10月月更 “程”风破浪的开发者

在线问题反馈模块实战(十四):实现在线答疑功能

bug菌

springboot 项目开发 10月月更

JS事件,你真的懂吗(捕获,冒泡)?

乌龟哥哥

10月月更

[HCTF 2018]WarmUp题解(较为详细的)

w010w

Web CTF 每日一题 10月月更

数据湖(八):Iceberg数据存储格式

Lansonli

数据湖 10月月更

谈谈曾经做的一个测试报告平台(1)

MegaQi

Python 测试平台 10月月更

ubuntu使用apt-get安装docker

忙着长大#

Ubuntu20.04

python有哪些格式化输出的方法

芥末拌个饭吧

后端 python 3.5+ 10月月更

在线问题反馈模块实战(十三)​:实现多参数分页查询列表

bug菌

springboot 项目开发 10月月更

【kafka运维】TopicCommand运维脚本(1)

石臻臻的杂货铺

kafka 运维 10月月更

云数据库助力电池云(一)

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

MyBatisPlus学习

Studying_swz

mybaitsplus 10月月更

docker数据卷使用

忙着长大#

,docker

如何用crontab实现Python定时任务

芥末拌个饭吧

后端 python 3.5+ 10月月更

美团大规模微服务通信框架及治理体系OCTO核心组件开源_开源_张翔_InfoQ精选文章