【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

美团大规模微服务通信框架及治理体系 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:002205

评论

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

大厂工作四年Java经验总结了学习路线规划,所有私藏资料我都贡献出来了

Java你猿哥

Java Spring Boot JVM java基础 java面

跑步课程导入能力,助力科学训练

HMS Core

HMS Core

Elasticsearch分布式搜索引擎的基本使用

北桥苏

php elasticsearch

ZeroErr 零误框架

西风逍遥游

膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了

做梦都在改BUG

Java Kubernetes k8s

夺冠秘诀?华为软件精英挑战赛两届冠军这样复盘比赛经验

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 5 月 PK 榜

网页版超强ChatGPT插件应用ZipZap来了,每日免费10K Token足够使用

Ricky

openai ChatGPT GPT-4

Java面试题大全(整理版)1000+面试题附答案详解最全面看完稳了

Java你猿哥

Java MySQL redis mybatis java面试

2023 年最新 Java 面试必背八股文,1338 道最新大厂架构面试题

架构师之道

Java 面试

中国20强(上市)游戏公司2022年财报分析:营收结构优化,市场竞争进入白热化

易观分析

公司 游戏

数据库外网ip binlog主从配置

Java你猿哥

Java MySQL 后端 ssm

Windows本地搭建RabbitMQ Server

北桥苏

Rabbit MQ RabbitMQ安装

重磅来袭!微服务的里程碑SpringCloudAlibaba

做梦都在改BUG

Java 架构 微服务 Spring Cloud spring cloud alibaba

以数据思维和技能提升数据应用测试实践 | 京东云技术团队

京东科技开发者

测试 测试覆盖率 数据思维 应用安全测试 企业号 5 月 PK 榜

微信小程序二维码文件流上传到OSS解决方法

北桥苏

php OSS thinkphp

大模型时代入场级技能:提示词工程!百度文心中文教程来啦

飞桨PaddlePaddle

百度飞桨

耗时一个月,整理了这份大厂Java面试 / 学习指南,共计1500+ 题全面解析

采菊东篱下

Java 程序员

PCB如何设计防静电?华秋一文告诉你

华秋电子

MySQL主从配置+ThinkPHP5分布式数据库

北桥苏

MySQL 分布式 thinkphp

Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人

汀丶人工智能

人工智能 深度学习 ChatGPT prompt learning

Fabarta 参加 2023 数云原力大会,与各方共同发布《2023 数据资产盘点实践白皮书》

Fabarta

数据要素 数据资产管理 数据资产化 数据要素流通

国内商业BI工具介绍,瓴羊Quick BI、帆软怎么样

流量猫猫头

Django基本数据访问

测吧(北京)科技有限公司

测试

面试官:说说 WebSocket 和 Socket 及 Http 的区别?

Java你猿哥

Java TCP ssm HTTP webSock

【源码分析】【seata】at 模式分布式事务-server端与客户端交互

如果晴天

源码分析 分布式事务 分布式锁 seata Seata框架

开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布

JackJiang

网络编程 即时通讯 即时通讯IM

Django查询、删除、更新数据

测吧(北京)科技有限公司

测试

从零开始打造一款基于SpringBoot+SpringCloud的后台权限管理系统

做梦都在改BUG

Java Spring Cloud Spring Boot 权限管理

AntDB数据库携手金蝶Apusic应用服务器, 共促信创产业繁荣发展

亚信AntDB数据库

AntDB AntDB数据库 企业号 5 月 PK 榜

Alibaba技术专家倾心五年打造!Java工程师成神之路(基础篇)

做梦都在改BUG

Java

中建信息亮相华为中国合作伙伴大会2023

Geek_2d6073

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