探索 SOFARegistry(一)|基础架构篇

SOFARegistry是蚂蚁集团的高性能服务注册中心,支撑大规模服务集群,具有分布式、高可用、低延迟推送等特点。采用双层存储架构,支持海量数据和客户端,提供发布订阅功能,并通过Slot分片算法实现数据分片和高可用。此外,它还支持秒级服务上下线通知和无损运维。

94ac19827ed4db9e3d9670b6677e8b5e.gif

 简 介 

SOFARegistry

SOFARegistry 是蚂蚁集团在生产大规模使用的服务注册中心,经历了多年大促的考验,支撑蚂蚁庞大的服务集群,具有分布式可水平扩容、容量大、推送延迟低、高可用等特点。

蚂蚁生产集群 — SOFARegistry 支撑 1000 万服务发布者、4000 万服务订阅者,在业务应用大规模变更触发千万级别推送量的场景下,推送延迟的 p99 依然能够保持在 7s 以下。

1ea06152b341053ec7b7a28d32204804.png

《认识 SOFARegistry》 这一系列文章将会基于 SOFARegistry 新版本 (v6) 的代码,讲解注册中心在超大规模集群场景下落地的解析与实践,同时介绍 SOFARegistry 的各项功能,方便业务落地。

 #01  部署架构 

SOFARegistry

852bb049997123ed5e3701bb8a3876f6.png

SOFARegistry 现有的架构设计:采用双层存储架构,外加一个负责内部元数据管理的 meta 组件。

SOFARegistry 的角色分为 4 个: client、session、data、meta。角色分工如下:

Client

提供应用接入服务注册中心的基本 API 能力,通过编程方式调用服务注册中心的服务订阅和服务发布能力。

SessionServer|会话服务器

负责接受 Client 的服务发布和服务订阅请求,并作为一个中间层将操作转发 DataServer 层。SessionServer 这一层可随业务机器数的规模增长而扩容。

DataServer|数据服务器

负责存储具体的服务数据,数据按 dataInfoId 进行分片存储,支持多副本备份,保证数据高可用。可随服务数据量的规模增长而扩容。

MetaServer|元数据服务器

负责维护集群 SessionServer 和 DataServer 的一致列表,作为 SOFARegistry 集群内部的地址发现服务,在 SessionServer 或 DataServer 节点变更时可以通知到整个集群。

借助双层数据分片的架构,SOFARegistry 具有了支撑海量数据的基石。

支持海量数据:每台 DataServer 只存储一部分的分片数据,随数据规模的增长,只要扩容 DataServer 服务器即可。

支持海量客户端:连接层的 SessionServer 只负责跟 Client 打交道,SessionServer 之间没有任何通信或数据复制,所以随着业务规模的增长,SessionServer 可以较轻量地扩容,不会对集群造成额外负担。

#02  数据结构 

SOFARegistry

作为注册中心的基础功能,SOFARegistry 提供发布订阅的接口:Subscriber、Publisher。

在服务发现场景下,Subscriber 需要通过服务名称从注册中心订阅到多个服务方的地址,进行负载均衡的访问。

139c2d5bfcdfe4608164aec222f7b12a.png

当存在服务方机器宕机时,注册中心通知所有的订阅方从服务列表中摘除这个 IP 地址,这样就不会再访问宕机的机器。

962ef776a962bc4216b654e44d3e2695.png

下面给出简化后的发布者和订阅者的字段,贴合上述服务发现的需求。

class Subscriber{
  String dataId;     // 服务名称
  String group;      // 业务类型,比如RPC、MSG等等
  String instanceId; // 租户名称
  String zone;       // 所在分区,结合scope实现逻辑隔离
  ScopeEnum scope;   // 订阅范围: zone、dataCenter、global
}


class Pub
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值