夸父通讯中间件<br />任卿 <br />淘宝核心系统研发部<br />1<br />
议程<br />2<br />一、夸父系统简介<br />二、夸父的使用与消息路由<br />三、夸父应用效果<br />四、小结<br />
什么是夸父<br />夸父(KuaFu Communicator),淘宝与阿里巴巴集团研究院联合开发的Linux下分布式消息中间件。<br />夸父的特点:<br />基于Agent代理通信<br />集群通信模型<br />灵活的路由模式<b...
我们希望解决的问题<br />WebServer<br />Apache<br />Server<br />Apache<br />ServerAPP<br />Apache<br />ServerAPP<br />Apache<br />Se...
夸父应用架构<br />WebServer<br />Server<br />K<br />F<br />C<br />Apache<br />ServerAPP<br />Apache<br />ServerAPP<br />Apache<b...
夸父-系统目标<br />高吞吐量(千兆网卡线速),高QPS(单进程26000以上)<br />响应时间短,略高于TCP socket通信的开销<br />消息丢失率低,稳定可靠<br />屏蔽下层通讯细节,应用系统编程简单<br />自动负载...
议程<br />7<br />一、夸父系统简介<br />二、夸父的使用与消息路由<br />三、夸父应用效果<br />四、小结<br />
夸父-最简洁的API<br />kfc_join:加入通讯组<br />kfc_send:指定条件向某个通讯组发送消息<br />kfc_recv:设定条件从某个通讯组接受消息<br />kfc_leave:离开通讯组<br />
夸父-基本概念<br />夸父组:<br />一组server为一组client提供某个服务。<br />服务端和客户端的进程不需要关心路由、灾难恢复具体实现的细节。<br />一个夸父进程可以服务多个组。<br />Domain Socket...
夸父-基本概念<br />Key<br />client消息的一个伴随值<br />由client Agent根据client App传递的key值,选择适当的目标server节点<br />Server可以选择要处理的key range<br...
夸父-通信模型<br />
夸父-消息寻址<br />如何实现消息的代理转发?<br />
消息寻址<br />应用程序之间通过 “消息传递” 的方式进行通讯<br />一个客户端的进程可以把一条消息发送到:<br />一个夸父组<br />一个夸父组,并且带有key<br />一个特定的服务端进程<br />组内的每一台server...
路由策略<br />所谓“路由”,是指把数据从一个地方传送到另一个地方的行为和动作。<br />夸父提供的路由策略:<br />Round Robin,在所有的代理进程中轮询调度(默认方式)<br />Multikey,服务端驱动,服务端应用程...
路由策略-Round Robin模式<br />缺省的路由模式。<br />支持动态负载均衡,适用于Server机器性能不同的情况<br />请求被发送到每一个满足下面条件的夸父进程上:<br />已经连接(加入组)<br />已经激活,也就是...
路由策略-Round Robin模式<br />msg{1,5,9}<br />Server-1<br />msg{2,6,10}<br />Server-2<br />msg{1…10}<br />Client<br />msg{3,7}<b...
Round Robin-灾难恢复策略<br />msg{1,4,7,10}<br />Server-1<br />msg{2,6,10}<br />Server-2<br />msg{1…10}<br />Client<br />msg{2,5...
路由策略-Routed模式<br />服务端进程进入组时,无需声明key。<br />和key模式类似,客户端发送请求时,需指定一个key<br />通过固定的路由和统一的灾难恢复机制,达到缓存绑定最大化的目的。<br />
路由策略-Routed模式<br />msg{1,5,9}<br />Server-1<br />msg{2,6,10}<br />Server-2<br />msg{1…10}<br />Client<br />msg{3,7}<br />S...
Routed模式-灾难恢复策略<br />msg{1,2,5,9}<br />Server-1<br />msg{2,6,10}<br />Server-2<br />msg{1…10}<br />Client<br />msg{3,6,7}<...
路由策略- Multikey模式<br />服务端进程声明它要接收的key的列表范围。<br />客户端进程每次发送请求时,提供一个key值(正整数)。<br />重叠的key列表是允许的。<br />请求被分发到对应key列表的服务端进程。<...
路由策略- Multikey模式<br />msg{1,3,5}<br />Server-1@{1-5}<br />msg{2,4}<br />Server-2@{1-5}<br />msg{1…10}<br />Client<br />msg...
Multikey模式-灾难恢复策略<br />msg{1,2,3,4,5}<br />Server-1@{1-5}<br />msg{2,4}<br />Server-2@{1-5}<br />msg{1…10}<br />Client<br ...
夸父 – 状态监控<br />
议程<br />25<br />一、夸父系统简介<br />二、夸父的使用与消息路由<br />三、夸父应用效果<br />四、小结<br />
夸父-性能评测<br />
夸父-性能评测<br />
夸父vs TCP<br />
议程<br />29<br />一、夸父系统简介<br />二、夸父的使用与消息路由<br />三、夸父应用效果<br />四、小结<br />
小结<br />夸父目前已经在淘宝多个业务系统中稳定性运行<br />数百台机器集群的应用规模<br />后续将考虑开源(code.taobao.org)<br />
   Q & A<br />谢谢!<br />
Upcoming SlideShare
Loading in …5
×

夸父通讯中间件

2,224 views

Published on

2011.01.22 北京 OpenParty

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,224
On SlideShare
0
From Embeds
0
Number of Embeds
84
Actions
Shares
0
Downloads
33
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

夸父通讯中间件

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

×