夸父通讯中间件
-
Upload
open-party -
Category
Documents
-
view
1.932 -
download
0
description
Transcript of 夸父通讯中间件
1
夸父通讯中间件
任卿淘宝核心系统研发部
2
议程
2
一、夸父系统简介
二、夸父的使用与消息路由
三、夸父应用效果
四、小结
3
什么是夸父
夸父(KuaFu Communicator),淘宝与阿里巴巴集团研究院联合开发的Linux下分布式消息中间件。
夸父的特点:
基于Agent代理通信
集群通信模型
灵活的路由模式
最简洁的API
4
我们希望解决的问题
WebServer
Apache
Apache
ApacheApache
WebServer
Apache
Apache
Apache
WebServer
Apache
Apache
Apache
Apache
WebServer
Apache
Apache
Apache
Server
ServerAPP
ServerAPP
ServerAPP
ServerAPP
Server
ServerAPP
ServerAPP
ServerAPP
Server
ServerAPP
ServerAPP
ServerAPP
ServerAPP
ServerAPP
ServerAPP
ServerAPP
Apache
Apache
ServerAPP
5
WebServer
Apache
Apache
Apache
Apache
K
F
C
WebServer
Apache
Apache
Apache
Apache
WebServer
Apache
Apache
Apache
Apache
WebServer
Apache
Apache
Apache
Apache
Server
ServerAPP
ServerAPP
ServerAPP
ServerAPP
ServerAPP
Server
ServerAPP
ServerAPP
ServerAPP
ServerAPP
ServerAPP
Server
ServerAPP
ServerAPP
ServerAPP
ServerAPP
ServerAPP
夸父应用架构
K
F
C
K
F
C
K
F
C
K
F
C
K
F
C
K
F
C
CMS
6
夸父-系统目标
高吞吐量(千兆网卡线速),高QPS(单进程26000以上)
响应时间短,略高于TCP socket通信的开销
消息丢失率低,稳定可靠
屏蔽下层通讯细节,应用系统编程简单
自动负载均衡,高度可扩展性
自动的故障屏蔽和恢复机制
7
议程
7
一、夸父系统简介
二、夸父的使用与消息路由
三、夸父应用效果
四、小结
8
夸父-最简洁的API
kfc_join:加入通讯组
kfc_send:指定条件向某个通讯组发送消息
kfc_recv:设定条件从某个通讯组接受消息
kfc_leave:离开通讯组
9
夸父-基本概念
夸父组:
一组server为一组client提供某个服务。
服务端和客户端的进程不需要关心路由、灾难恢复具体实现的细节。
一个夸父进程可以服务多个组。
Domain Socket:
夸父在特定的Unix Domain Socket端口上侦听
用于夸父与应用程序之间通信
将来会用共享内存方案替代
10
夸父-基本概念
Key
client消息的一个伴随值
由client Agent根据client App传递的key值,选择适当的目标server节点
Server可以选择要处理的key range
队列
消息缓存
每个连接保持一个队列
队列满了以后会自动清掉队列里所有的消息
11
夸父-通信模型
12
夸父-消息寻址
如何实现消息的代理转发?
13
消息寻址
应用程序之间通过 “消息传递” 的方式进行通讯
一个客户端的进程可以把一条消息发送到:
一个夸父组
一个夸父组,并且带有key
一个特定的服务端进程
组内的每一台server主机上面的夸父进程。
支持特定的路由策略
服务端的进程只能把消息发送到特定的客户端进程。
通常是服务端进程所接收的最后一条请求对应的客户端进程。
14
路由策略
所谓“路由”,是指把数据从一个地方传送到另一个地方的行为和动作。
夸父提供的路由策略:
Round Robin,在所有的代理进程中轮询调度(默认方式)
Multikey,服务端驱动,服务端应用程序指定处理的规则
Routed,客户端驱动,客户端夸父程序确定处理规则
15
路由策略-Round Robin模式
缺省的路由模式。
支持动态负载均衡,适用于Server机器性能不同的情况
请求被发送到每一个满足下面条件的夸父进程上:
已经连接(加入组)
已经激活,也就是已经有进程附着于它。
16
路由策略-Round Robin模式
Client
Server-1
Server-2
Server-3
Server-4
msg{1…10}
msg{1,5,9}
msg{2,6,10}
msg{3,7}
msg{4,8}
17
Round Robin-灾难恢复策略
Client
Server-1
Server-2
Server-3
Server-4
msg{1…10}
msg{1,4,7,10}
msg{2,6,10}
msg{2,5,8}
msg{3,6,9}
所有的消息都被打乱了重新确定目标服务器。
18
路由策略-Routed模式
服务端进程进入组时,无需声明key。
和key模式类似,客户端发送请求时,需指定一个key
通过固定的路由和统一的灾难恢复机制,达到缓存绑定最大化的目的。
19
路由策略-Routed模式
Client
Server-1
Server-2
Server-3
Server-4
msg{1…10}
msg{1,5,9}
msg{2,6,10}
msg{3,7}
msg{4,8}
20
Routed模式-灾难恢复策略
Client
Server-1
Server-2
Server-3
Server-4
msg{1…10}
msg{1,2,5,9}
msg{2,6,10}
msg{3,6,7}
msg{4,8,10}
原来发到server2的请求2,6,10,被分摊到server1,
server3, sever4上面。而server1和server3, server4原
来响应的key,仍然保持不变。
21
路由策略- Multikey模式
服务端进程声明它要接收的key的列表范围。
客户端进程每次发送请求时,提供一个key值(正整数)。
重叠的key列表是允许的。
请求被分发到对应key列表的服务端进程。
提供了灾难自动恢复机制
22
路由策略- Multikey模式
Client
Server-1@{1-5}
Server-2@{1-5}
Server-3@{6-10}
Server-4@{6-10}
msg{1…10}
msg{1,3,5}
msg{2,4}
msg{6,8,10}
msg{7,9}
23
Multikey模式-灾难恢复策略
Client
Server-1@{1-5}
Server-2@{1-5}
Server-3@{6-10}
Server-4@{6-10}
msg{1…10}
msg{1,2,3,4,5}
msg{2,4}
msg{6,8,10}
msg{7,9}
24
夸父 – 状态监控
25
议程
25
一、夸父系统简介
二、夸父的使用与消息路由
三、夸父应用效果
四、小结
26
夸父-性能评测
27
夸父-性能评测
28
夸父 vs TCP
0
50
100
150
200
250
夸父 TCP
mean rt(微秒)
min rt(微秒)
29
议程
29
一、夸父系统简介
二、夸父的使用与消息路由
三、夸父应用效果
四、小结
30
小结
夸父目前已经在淘宝多个业务系统中稳定性运行
数百台机器集群的应用规模
后续将考虑开源(code.taobao.org)
31
Q & A
谢谢!