9折倒计时一周! QCon 全球软件开发大会·上海站讲师上线95% >>> 了解详情
写点什么

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

评论

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

预约报名!阿里云EDA上云解决方案直播开启

阿里云弹性计算

EDA

开单才是王道!亚马逊开店变现训练营,4周赚钱实战!

博文视点Broadview

FreeRTOS记录(六、FreeRTOS消息队列—Enocean模块串口通讯、RAM空间不足问题分析)

矜辰所致

内存管理 消息队列 FreeRTOS 9月月更

基于阿里云GPU云服务器的AIACC助力UC搜索业务性能提效380%,每年节省数千万成本

阿里云弹性计算

神龙 加速引擎 TensorRT QTC

LeetCode-24. 两两交换链表中的节点(Golang)

bug菌

9月日更 Leet Code 9月月更

腾讯前端二面面试题(附答案)

beifeng1996

JavaScript 前端

「趣学前端」“寓教于乐”的Node.js学习记录

叶一一

node.js 前端 9月月更

「趣学前端」图片操作之“多媒体顶流”不羁的一生

叶一一

node.js 前端 9月月更

库调多了,都忘了最基础的概念《Mysql相关知识》

知识浅谈

MySQL 9月月更

详解KubeEdge边缘网络项目EdgeMesh

华为云开发者联盟

云计算 云原生 后端 边缘计算 企业号九月金秋榜

打通JAVA与内核!一个ReentrantLock锁的实现原理

Java快了!

java;

MySQL架构与历史

阿柠xn

MySQL innodb 事务 sql 9月月更

还能把浏览器当作 Web 服务器?骚操作,学废了~

掘金安东尼

前端 9月月更

手部骨骼跟踪能力,打造控制虚拟世界的手势密码

HMS Core

社招前端二面面试题

夏天的味道123

JavaScript 前端

vivo 全球商城:电商平台通用取货码设计

vivo互联网技术

Java 系统设计 服务器

「趣学前端」桂花留晚色,聊聊zlib压缩

叶一一

node.js 前端 9月月更

Python基础(三) | Python的组合数据类型

timerring

Python. 9月月更

专业低代码如何选型?看这12项关键能力

牛刀专业低代码

低代码 低代码开发 低代码平台

ShareSDK Android端权限说明

MobTech袤博科技

android 开发者 sdk

频面试题合集

helloworld1024fd

JavaScript 前端

文盘Rust -- 如何把配置文件打包到二进制文件里

京东科技开发者

rust 后端 文件 配置文件 spring-boot

基于 PyTorch 和神经网络给 GirlFriend 制作漫画风头像

华为云开发者联盟

人工智能 神经网络 企业号九月金秋榜 漫画头像

下载超过 28762W 次的 Java面试题库(附答案)

Java-fenn

Java java面试 Java面试题

美团前端二面高频面试题合集

loveX001

JavaScript 前端

nft平台搭建:nft商城开发nft平台开发

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

Java常见名词解释

源字节1号

软件开发 后端开发

有“智慧”的电子牌

OpenHarmony开发者

OpenHarmony

从负载均衡到路由,微服务应用现场一键到位

阿里巴巴云原生

阿里云 微服务 云原生 观测

严禁外传,字节跳动 2022 春招 Java 岗位架构师面试题(暂定版)发布

Java-fenn

Java 程序员 java面试 Java面试题

社招前端必会面试题

bb_xiaxia1998

JavaScript 前端

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