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

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

现在我们将OCTO的核心组件OCTO-RPC、OCTO-NS、OCTO-Portal开源,欢迎大家使用和共建。OCTO-RPC、OCTO-NS、OCTO-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年加入美团,现负责公司命名服务和通信框架的研发。

招聘信息

美团OCTO服务治理团队诚招C++/Java高级工程师、技术专家。我们致力于研发公司级、业界领先的基础架构组件,研发范围涵盖分布式框架、命名服务、Service Mesh等技术领域。欢迎有兴趣的同学投送简历至tech@meituan.com。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

领域应用 | 知识结构化在阿里小蜜中的应用

本文转载自公众号:DataFunTalk。分享嘉宾:李凤麟 阿里巴巴 算法专家文章整理:付一韬内容来源:2019知识图谱前沿技术论坛出品社区:DataFun导读:阿里小蜜是阿里巴巴服务领域的重要人工智能产品,是…

内卷的世界,我们是否可以换一种思维生活?

文 | Flood Sung源 | 知乎前言今年最热门的词汇之一当属内卷了。似乎很多行业都由于份额有限而陷入内卷当中。最火的或许是清华学生的这张图,“骑车写代码”:图片来自网络虽然后来知道是这位同学怕关了屏幕程序就断了,但这不禁让人思考&#…

LeetCode 513. 找树左下角的值(按层遍历 queue)

1. 题目 给定一个二叉树,在树的最后一行找到最左边的值。 2. 解题 利用队列按层次遍历顺序,根右左,要求最左边的一个,所以根右左,最后一个队列元素就是答案 class Solution { public:int findBottomLeftValue(TreeN…

Hadoop YARN:调度性能优化实践

背景 YARN作为Hadoop的资源管理系统,负责Hadoop集群上计算资源的管理和作业调度。 美团的YARN以社区2.7.1版本为基础构建分支。目前在YARN上支撑离线业务、实时业务以及机器学习业务。 离线业务主要运行的是Hive on MapReduce, Spark SQL为主的数据仓库作…

LeetCode 39. 组合总和(排列组合 回溯)

1. 题目 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包…

深度学习平台的未来:谁会赢得下半场?

今天这篇文章无意引战,只想从历史发展的角度来谈谈深度学习大背景下的开发工具变迁,以及对未来发展趋势的想象。TensorFlow:无力回天的深度学习里程碑不知道有多少小伙伴是2017年以前入坑深度学习的,那时候人工智能概念火热&#…

论文浅尝 | 基于属性嵌入的知识图谱实体对齐

论文笔记整理:王中昊,天津大学硕士,方向:自然语言处理。来源:AAAI2019论文链接: https://doi.org/10.1609/aaai.v33i01.3301297概述知识图谱之间的实体对齐的任务目标是去找到那些在两个不同的知识图谱上表…

基本功 | Litho的使用及原理剖析

1. 什么是Litho? Litho是Facebook推出的一套高效构建Android UI的声明式框架,主要目的是提升RecyclerView复杂列表的滑动性能和降低内存占用。下面是Litho官网的介绍: Litho is a declarative framework for building efficient user interfa…

论文浅尝 | 基于深度强化学习将图注意力机制融入知识图谱推理

论文笔记整理:陈名杨,浙江大学直博生。Introduction知识图谱(KGs)在很多NLP的下游应用中起着越来越重要的作用。但是知识图谱常常是不完整的,所以解决知识图谱补全的任务也非常重要。主要有三种方法来完成知识图谱补全…

聊聊如何提升推荐系统的结果多样性

文 | 洪九(李戈)源 | 知乎个性化推荐系统的出现为处理信息过载问题提供了一个有效的工具,已经成为互联网各大平台(电商、信息流等)的标配,并在技术(个性化召回、个性化排序等)上取得了长足的发展,逐渐从传统模型过度到深度学习时代。但是&…

论文浅尝 | GNN with Generated Parameters for Relation Extraction

论文笔记整理:申时荣,东南大学博士生。地址:https://arxiv.org/pdf/1902.00756.pdf来源:ACL2019在许多自然语言处理任务(例如关系提取)中,多跳关系推理是必不可少的,而图神经网络&am…

大众点评信息流基于文本生成的创意优化实践

1. 引言 信息流是目前大众点评除搜索之外的第二大用户获取信息的入口,以优质内容来辅助用户消费决策并引导发现品质生活。整个大众点评信息流(下文简称点评信息流)围绕个性化推荐去连接用户和信息,把更好的内容推荐给需要的用户。…

LeetCode 701. 二叉搜索树中的插入操作(二叉查找树/插入)

1. 题目 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索…

docker的简单操作和端口映射

docker的简单操作和端口映射:https://www.cnblogs.com/lixaingyang/p/11976827.html docker的简单操作和端口映射 一:简介 Docker镜像 在Docker中容器是基于镜像启动的 镜像是启动容器的核心 镜像采用分层设计,最顶层为读写层 使用快照COW技…

Android官方开发文档Training系列课程中文版:管理Activity的生命周期之启动一个Activity

原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/index.html 导言 用户通过导航退出或者返回应用的时候,应用中Activity的生命周期会在不同的状态之间变换。举个例子,当Activity初次启动的时候,它会来到系统的…

论文浅尝 | 利用多语言 wordnet 上随机游走实现双语 embeddings

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识图谱问答。来源:Knowledge Based System链接:https://www.sciencedirect.com/science/article/abs/pii/S0950705118301412?via%3Dihub双语word embedding将两种语言…

实践中学到的最重要的机器学习经验!

文 | 微调源 | 知乎问答今天我们讨论一个很有实际意义的问题:你在实践中学到的最重要的机器学习经验是什么?以下回答来自知乎优秀答主微调。1.永远保持怀疑机器学习是最容易得到错误结论的一种解决方案。和编程、做表格、或者纯粹的数学建模不同&#xf…

Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity

原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/pausing.html 在APP的正常使用过程中,在前台工作的Activity有时可能会被其他的可视化组件挡住,而引起Activity进入Paused状态。举个例子,当一个半透明的Activit…

Leaf:美团分布式ID生成服务开源

Leaf是美团基础研发平台推出的一个分布式ID生成服务,名字取自德国哲学家、数学家莱布尼茨的一句话:“There are no two identical leaves in the world.”Leaf具备高可靠、低延迟、全局唯一等特点。目前已经广泛应用于美团金融、美团外卖、美团酒旅等多个…

LeetCode 658. 找到 K 个最接近的元素(二分查找)

1. 题目 给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。 示例 1:输入: [1,2,3,4,…