Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
clustermap
Search
tiechou
May 20, 2013
Technology
1
530
clustermap
tiechou
May 20, 2013
Tweet
Share
Other Decks in Technology
See All in Technology
工業高校で学習したとあるエンジニアのキャリアの話
shirayanagiryuji
0
110
MCP認可の現在地と自律型エージェント対応に向けた課題 / MCP Authorization Today and Challenges to Support Autonomous Agents
yokawasa
5
2.4k
Amazon Bedrock AgentCoreのフロントエンドを探す旅 (Next.js編)
kmiya84377
1
150
ロールが細分化された組織でSREと協働するインフラエンジニアは何をするか? / SRE Lounge #18
kossykinto
0
220
Findy Freelance 利用シーン別AI活用例
ness
0
550
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
AIに頼りすぎない新人育成術
cuebic9bic
3
310
意志の力が9割。アニメから学ぶAI時代のこれから。
endohizumi
1
100
2時間で300+テーブルをデータ基盤に連携するためのAI活用 / FukuokaDataEngineer
sansan_randd
0
160
全員が手を動かす組織へ - 生成AIが変えるTVerの開発現場 / everyone-codes-genai-transforms-tver-development
tohae
0
200
データモデリング通り #2オンライン勉強会 ~方法論の話をしよう~
datayokocho
0
170
20250807 Applied Engineer Open House
sakana_ai
PRO
2
460
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Facilitating Awesome Meetings
lara
54
6.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Music & Morning Musume
bryan
46
6.7k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Docker and Python
trallard
45
3.5k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Measuring & Analyzing Core Web Vitals
bluesmoon
8
550
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
A designer walks into a library…
pauljervisheath
207
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Transcript
Clustermap简介 Tiechou DESIGN
Tiechou DESIGN ClusterMap 搜索集群中的服务发现和集群地图功能
Tiechou DESIGN ⺫⽬目录 CONTENTS 背景介绍 1 功能特性 2 整体架构 3
应⽤用表现 4 快速使⽤用 5
Tiechou DESIGN ⺫⽬目录 CONTENTS 背景介绍 1
Tiechou DESIGN 1# 背景介绍 1. 搜索内部引擎群英荟萃,难于管理 2. 使用负载均衡设备多一层网络开销 3. 单独使用Zookeeper管理集群性能受限
4. 多种语言的前端需要访问搜索的服务(C, Java, PHP, Lua, Node.js) 5. 运维管理难于满足(根据节点负载自动上下线,界面操作,监控,报警)
Tiechou DESIGN ⺫⽬目录 CONTENTS 功能特性 2
Tiechou DESIGN 2# 功能特性 订 阅 心跳汇报 集群管理 健康检查 同步ConfigServer
负载均衡 监控&报警 PHP扩展
Tiechou DESIGN 2# 名词说明 Cluster: 多个节点组成的集合称为一个Cluster CMServer: ClusterMap内部的服务端,管理集群和节点 HBNode: 表示心跳汇报节点,汇报自己状态信息到CMServer
Subscriber: 订阅者,与CMServer通讯,获取集群信息 CMSubProxy: 订阅者代理,订阅者功能基础上还会写共享内存 CMCtrl: 工具,用来提供集群的增/删/改,节点的上下线 ConfigServer: 淘宝的一个管理配置的服务
Tiechou DESIGN 2# 功能特性 ⼼心跳汇报 1/汇报类型 1) 需要预先配置的节点 2) 不需要预先配置的直接汇报的节点
2/节点可以汇报心跳和负载信息,及用户自定义的数据信息 3/支持一个节点对应多个集群 即⼀一个节点在多个集群中存在 4/支持一个节点注册多个端口和协议
Tiechou DESIGN 2# 功能特性 健康检查 健康检查节点 1) 节点不需要向CMServer汇报,CMServer会主动定期检查节点的状 态是否正常 2)
包括四层健康检查,和七层健康检查 3) 同时⽀支持⼀一个节点对应多个集群
Tiechou DESIGN 2# 功能特性 1/集群配置隔离 ,方便管理 ClusterMap做到⼀一个集群只在⼀一个配置⽂文件⾥里,不同集群互不影响 集群管理
2/集群操作 添加,删除,查询,上线,下线 3/节点操作 添加,删除,查询,上线,下线 4/支持节点自动下线 当节点的负载或者Qps超过节点承受能⼒力时,CMServer可以⾃自动下 线该节点
Tiechou DESIGN 2# 功能特性 5/支持CMServer级联 即⼀一台CMServer订阅另⼀一台CMServer上的集群 6/支持CMServer主从切换 不需要同步集群信息,通过的ZK的leader选举机制,进⾏行CMServer主
从切换,即当前的CMMaster服务停掉,ZK上会⽴立即选举⼀一个CMMaster, 新的Master会从ZK上拿到集最新的集群全量信息 集群管理
Tiechou DESIGN 2# 功能特性 订 阅 1/订阅集群方式 1) 订阅所有集群
2) 根据配置,订阅1个或多个集群 2/集群的拓扑结构 1) 类似于Kingso的物理集群到拓扑集群 1-‐1 映射 2) 类似与Ups的物理集群到拓扑集群 1-‐N 映射 3/支持本机房优先分配的策略 4/支持订阅者为虚节点,只订阅不发心跳 5/支持多种语言的订阅(C, Php, Java, Lua, Node.js)
Tiechou DESIGN 2# 功能特性 订 阅 6/对外提供的查询接口 1) allocRow获取⼀一⾏行节点
2) allocValidRow获取⼀一⾏行有效节点 3) allocNodeOfParFFon 获取⼀一列的 所有节点 4) allocValidNodeOfParFFon 获取⼀一 列的所有有效节点 5) allocNodeByParFFonId 获取⼀一个 TopoCluster 的某个分区中分配⼀一 个的节点 6) allocValidNodeByParFFonId 获取 ⼀一个 TopoCluster 某个分区中分配⼀一个可⽤用的节点 7) allocAllNode 获取集群所有节点 8) allocAllValidNode 获取集群所有有效节点 9) getNodeStatus 根据节点spec获取当前节点的 状态 10) getNodeMetaInfo 根据节点spec获取当前节点 的MetaInfo信息 11) getParFFonCnt 获取⼀一个 TopoCluster 中的分 区数 12) getNodeCntOfParFFon 获取⼀一个 TopoCluster 中的某分区的节点数 13) freeNode 释放节点 14) freeNodes 释放多个节点
Tiechou DESIGN 2# 功能特性 同步ConfigServer CMServer上的节点信息同步到ConfigServer 根据配置, 可以将某些集群的信息同步的 ConfigServer, ⽅方便基于Hsf/
Configserver 框架的Java前端,这样就可以通过 ConfigServer 来获取搜索后 台服务的有效节点信息, 直接访问, ⽽而不再通过VIP⽅方式访问
Tiechou DESIGN 2# 功能特性 PHP扩 展 订阅者支持Nginx+Php 基于共享内存⽅方式同步集群变更信息的CMSubProxy 和 Php
Extension Lib 订阅者支持Nginx+Lua 基于共享内存⽅方式同步集群变更信息的CMSubProxy 和 Lua Extension Lib 订阅者支持TNginx 基于共享内存⽅方式同步集群变更信息的CMSubProxy 和 Tnginx Module
Tiechou DESIGN 2# 功能特性 负载均衡 LB_ROUNDROBIN 轮询 随机分配 LB_RANDOM
LB_WEIGHT 根据权重 LB_CONHASH 指定⾏行失败后,⽤用 ⼀一致性获取节点 指定选取哪⼀一⾏行 LB_LOCATING
Tiechou DESIGN 2# 功能特性 监控&警报 监控&&报警 • Zk服务监控 •
CMServer服务和配置⽂文件监控 • 集群状态和内部节点的状态监控 • 同步到ConfigServer上的节点信息监控 WebServer • 上下线集群和节点 • 查看所有的订阅者 • 查看集群状态和内部节点的状态 • 查看同步到ConfigServer上的节点信息
Tiechou DESIGN ⺫⽬目录 CONTENTS 整体架构 3
Tiechou DESIGN 3# 整体架构
Tiechou DESIGN 3# 整体架构 Z K ü 提供可靠的持久化存储服务与Leader选举机制实现多台Server间主从互备
Tiechou DESIGN 3# 整体架构 ü 管理机器,负责管理集群拓扑结构、收集 节点状态信息、向使用者推送集群 CMSe r ve
r
Tiechou DESIGN 3# 整体架构 ü Server级联功能 CMServer2
Tiechou DESIGN 3# 整体架构 ü 集群管理工具:用来提供 集群的增/删/改,节点的 offline/online等操作 C M
C t r l
Tiechou DESIGN 3# 整体架构 ü 操作集群,监控和报警 WebServer
Tiechou DESIGN 3# 整体架构 ü 定期向CMServer汇报心跳和负载信息 H B N o
d e
Tiechou DESIGN 3# 整体架构 ü CMServer端定期检查服务状态、 APPServer
Tiechou DESIGN 3# 整体架构 ü 定期同步管理的结点信息给 ConfigServer ConfigServer
Tiechou DESIGN 3# 整体架构 ü 集群的订阅者,先向CMServer 订阅集群信息,构建拓扑集群 Subscriber
Tiechou DESIGN 3# 整体架构 ü 读取共享内存,构 建内部拓扑结构 FE
Tiechou DESIGN ⺫⽬目录 CONTENTS 应⽤用表现 4
Tiechou DESIGN 4# 应⽤用表现 测试说明 1. 测试机器:线上CM5机房机器 2. 编译选项:-‐g -O2
3. 机器部署:ZK(3台机器), CMServer(2台机器),⼼心跳节点(55 台机器),七层健康检查节点(55台 机器,复⽤用), 四层健康检查节点 (55台机器,复⽤用), 订阅者(55台机 器,复⽤用) 4. 配置说明: hb_interval=100ms 7level_check_period=1000ms 4level_check_period=1000ms sub_status_interval=500ms 测试结果 测试结论: 1. 随着订阅者数量增加到10K, ⺴⽹网络Bytes Out到达100M+, CMServer管理的集群节点开始不稳 定 2. CMServer对节点数量没有限 制,可以⽀支持10K个订阅者 性能分析
Tiechou DESIGN 4# 应⽤用表现 业务成果 1. 管理搜索内部所有集群,14个业务线 2. 订阅者有180个
3. 统⼀一内部所有服务定位和集群管理 4. 替换搜索内部LB负载均衡设备
Tiechou DESIGN 4# 应⽤用表现 发展展望 1. 快速应对业务需求,⽀支持多种语⾔言的服务 2. 监控更加简洁智能、运维⾃自动化
3. 搜索内外部流量使⽤用CM2替换负载均衡设备 4. 搜索内部使⽤用CM2进⾏行服务定位 5. 技术分享,推⼲⼴广到更多的业务平台
Tiechou DESIGN ⺫⽬目录 CONTENTS 快速使⽤用 5
Tiechou DESIGN 5# 快速使⽤用 4/参考文档 • hfp://10.232.41.135:8080/ • hfp://searchwiki.taobao.ali.com/index.php/CM2
1/编译依赖 • arpc ⺴⽹网络通讯框架 • auFl, anet, alog提供的公共 库 • pb 定义的消息结构 • zk 做leader选举机制 • hsf,easy 同步configserver 3/启动服务 • 配置修改 cm_server.cfg 运⾏行cmserver,建议2-‐3台机器来运⾏行cm_server • 配置修改cm_client.xml 启动⼼心跳节点 • 配置修改cm_client.xml 启动订阅者 2/代码编译 • 进⼊入代码⺫⽬目录; • 执⾏行 sh install_depend_lib.sh,会在当前⺫⽬目录下,创建⼀一个 contribute⺫⽬目录; • 执⾏行 scons install_prefix=[安装路径] mode=release install 编 译代码和安装; • 执⾏行 scons check,编译和运⾏行单元测试。
Tiechou DESIGN 跨·越 只为⾛走得更远。。。 @Fechou 铁丑
Tiechou DESIGN THANKS