博客
关于我
OCTO作为美团的高性能服务通信框架,究竟能不能称得上是杀手锏呢?
阅读量:800 次
发布时间:2023-02-22

本文共 2387 字,大约阅读时间需要 7 分钟。

OCTO 是美团内部一套高效的服务治理系统,支持千亿级别的服务调用量,为公司各业务提供统一的通信和管理平台。以下是对 OCTO 架构、功能以及使用方法的详细分析。

1 概述

OCTO 是 "octopus"(章鱼) 的缩写,是美团公司级基础设施,旨在为所有业务提供高性能的服务通信框架。系统支持服务注册、自动发现、负载均衡、容错处理、灰度发布等功能,显著提升了服务的可用性和运维效率。需要注意的是,OCTO 是美团内部专用系统,未对外开源,外部无法直接搭建。

本文旨在深入解析 OCTO 的架构原理、Java 应用的集成方法以及其控制台的使用场景,为理解分布式服务治理提供参考。

1.1 技术架构中的位置

OCTO 在美团技术架构中处于关键位置,连接着服务提供者和消费者,形成了完整的服务生态。其核心组件包括 MTTransport(高性能服务通信框架)、HLB(弹性负载均衡器)、SG_agent(服务治理代理)、MNS(美团命名服务)等,共同构建了一个稳健可靠的服务治理体系。

1.2 功能特性

OCTO 提供多维度的服务治理功能,主要包括以下方面:

  • 服务注册与发现:通过统一的服务名单管理,快速实现服务间的动态交互。
  • 服务管理:支持服务状态监测、启动停止以及智能负载均衡。
  • 容错处理:实时屏蔽异常服务,自动调配流量,确保服务稳定性。
  • 流量分发:支持灰度发布和动态流量分配,满足多场景需求。
  • 数据可视化:提供服务调用统计、依赖关系分析等可视化报表。
  • 服务分组:支持动态归组与自定义分组,解决跨机房调用的问题。
  • 监控告警:提供多维度指标监控,支持多种报警方式。
  • 统一配置管理:支持环境差异化配置,实时版本控制。
  • 分布式跟踪:轻松诊断服务性能问题。
  • 过载保护:基于配额管理,保障关键服务的稳定运行。
  • 访问控制:灵活定义服务权限,保障资源安全。

1.3 环境划分

OCTO 分为线上(IDC)和线下(办公云)两套环境,分别对应生产和开发测试。每套环境又划分为 test、staging、prod 三个阶段,确保开发、测试与部署的完整性。

1.4 调用流程

服务注册与发现的具体流程如下:

  • 提供方和消费方在 OCTO 上分别注册自己的 appkey。
  • 提供方在 OCTO 上注册服务,同一 appkey 在三个环境中都有部署。
  • 消费方在指定环境内请求服务,OCTO 系统查询服务列表并返回。
  • 消费方通过 MTthrift 协议调用目标服务。
  • 1.5 appkey 的理解

    OCTO 的 appkey 配置方式提升了服务管理的灵活性。与传统 Nginx 相比,appkey 层的动态管理能力显著增强,简化了运维工作流程。通过 appkey 与物理服务器的映射关系,实现了服务动态调整的需求。

    2 整体架构

    OCTO 系统架构包括以下核心组件:

    2.1 MTTransport

    MTthrift 是基于 Apache Thrift 的高性能服务通信框架,是 OCTO 的核心组件。它支持多语言接口,提供高效的服务开发体验,同时集成了服务模板管理、代码生成等工具。

    2.2 HLB

    HLB 是硬件负载均衡器,负责处理所有 HTTP 请求/应答流量,类似于 AWS 的 Elastic Load Balancer,确保服务的高性能和稳定性。

    2.3 SG_agent

    SG_agent 是服务治理代理,部署在服务提供者和消费者节点上。它负责服务注册发现、配置更新、访问控制、配额管理等功能,并向性能监控平台上报调用数据。

    2.4 MNS

    MNS 是美团命名服务系统,基于 ZooKeeper 构建。它为分布式服务提供稳健可靠的命名服务管理,支持服务注册、路由、自动发现等功能。

    2.5 Data-center

    数据中心负责收集和分析所有接入 OCTO 业务的日志数据,为各业务提供系统性能指标、健康状况等信息。

    2.6 Scanner

    健康检查系统用于扫描服务的运行状态,自动剔除不可用的节点,确保服务生态的稳定性。

    2.7 MCC

    美团配置中心提供统一配置管理服务,支持配置信息实时更新、高可用性和版本控制,提升开发效率和运维便利性。

    2.8 MSGP

    美团服务治理平台整合了服务注册、治理、诊断、配置、配额等功能,提供一站式服务管理。

    3 接入方法

    3.1 公用接口

    在 Java 项目中,通过引入 @ThriftService、@ThriftMethod、@ThriftStruct、@ThriftField 等注解,将普通 Java 类转换为 Thrift 数据模型和服务接口。与 Dubbo 类似,服务提供者和消费者基于相同接口定义进行通信。

    3.2 服务提供者

    服务提供者模块实现了 Thrift 接口,并通过 Spring Boot 应用程序运行。模块中引入 Hystrix 用于容错处理,配置管理通过 Spring Boot 的注解实现,服务发布通过 ThriftServerPublisher 组织。

    3.3 服务消费者

    服务消费者模块同样基于 Spring Boot 开发,配置 Thrift 客户端代理,通过注解注入服务接口,实现远程调用。消费者可以通过指定端口和 appkey 调用提供方服务。

    4 发布平台(Plus)

    MTthrift 在 Thrift 上进行了定制化修改,使得发布后的服务能够被 OCTO 平台自动发现和处理。

    5 服务治理平台(MSGP)

    MSGP 提供了完整的服务管理界面,常用功能包括:

    • 服务详情:查看服务主机信息,支持增删改查。
    • 服务消费者:查看消费者信息及调用统计。
    • 服务分组:设置服务分组策略。
    • 数据分析:提供多维度的统计报表。

    通过上述分析,可以清晰地了解 OCTO 系统的架构设计和使用方法,为分布式服务治理提供了有力支持。

    转载地址:http://npsfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现解析数学表达式解析(附完整源码)
    查看>>
    Objective-C实现解释器模式(附完整源码)
    查看>>
    Objective-C实现计时(附完整源码)
    查看>>
    Objective-C实现计算二维平面上两点之间的距离算法(附完整源码)
    查看>>
    Objective-C实现计算信息熵(附完整源码)
    查看>>
    Objective-C实现计算各种形状的体积算法 (附完整源码)
    查看>>
    Objective-C实现计算各种形状的面积算法(附完整源码)
    查看>>
    Objective-C实现计算排列和组合的数量算法 (附完整源码)
    查看>>
    Objective-C实现计算数字的等分和算法(附完整源码)
    查看>>
    Objective-C实现计算星座(附完整源码)
    查看>>
    Objective-C实现计算相似度算法(附完整源码)
    查看>>
    Objective-C实现计算矩阵中岛屿数量算法(附完整源码)
    查看>>
    Objective-C实现计算素数之和算法(附完整源码)
    查看>>
    Objective-C实现计算需要更改的位数,以便将 numberA转换为 numberB(bitsDiff)算法(附完整源码)
    查看>>
    Objective-C实现设置或清除数字指定偏移量上的位setBit算法(附完整源码)
    查看>>
    Objective-C实现设置文件最后修改时间(附完整源码)
    查看>>
    Objective-C实现设置默认音频设备(附完整源码)
    查看>>
    Objective-C实现访问SQL实例(附完整源码)
    查看>>
    Objective-C实现读写bmp文件 (附完整源码)
    查看>>
    Objective-C实现读写wav音频文件(附完整源码)
    查看>>