夸父通讯中间件

  • 1,881 views
Uploaded on

2011.01.22 北京 OpenParty

2011.01.22 北京 OpenParty

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,881
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
31
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 夸父通讯中间件
    任卿
    淘宝核心系统研发部
    1
  • 2. 议程
    2
    一、夸父系统简介
    二、夸父的使用与消息路由
    三、夸父应用效果
    四、小结
  • 3. 什么是夸父
    夸父(KuaFu Communicator),淘宝与阿里巴巴集团研究院联合开发的Linux下分布式消息中间件。
    夸父的特点:
    基于Agent代理通信
    集群通信模型
    灵活的路由模式
    最简洁的API
  • 4. 我们希望解决的问题
    WebServer
    Apache
    Server
    Apache
    ServerAPP
    Apache
    ServerAPP
    Apache
    ServerAPP
    ServerAPP
    WebServer
    ServerAPP
    Apache
    Apache
    Server
    Apache
    ServerAPP
    Apache
    ServerAPP
    ServerAPP
    WebServer
    ServerAPP
    Apache
    ServerAPP
    Apache
    Apache
    Apache
    Server
    ServerAPP
    WebServer
    ServerAPP
    Apache
    ServerAPP
    Apache
    ServerAPP
    Apache
    Apache
    ServerAPP
  • 5. 夸父应用架构
    WebServer
    Server
    K
    F
    C
    Apache
    ServerAPP
    Apache
    ServerAPP
    Apache
    ServerAPP
    Apache
    ServerAPP
    ServerAPP
    WebServer
    Apache
    Apache
    Server
    Apache
    ServerAPP
    Apache
    ServerAPP
    ServerAPP
    WebServer
    ServerAPP
    Apache
    ServerAPP
    Apache
    Apache
    Apache
    Server
    ServerAPP
    ServerAPP
    WebServer
    Apache
    ServerAPP
    Apache
    ServerAPP
    Apache
    ServerAPP
    Apache
    K
    F
    C
    K
    F
    C
    K
    F
    C
    CMS
    K
    F
    C
    K
    F
    C
    K
    F
    C
  • 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模式
    msg{1,5,9}
    Server-1
    msg{2,6,10}
    Server-2
    msg{1…10}
    Client
    msg{3,7}
    Server-3
    msg{4,8}
    Server-4
  • 17. Round Robin-灾难恢复策略
    msg{1,4,7,10}
    Server-1
    msg{2,6,10}
    Server-2
    msg{1…10}
    Client
    msg{2,5,8}
    Server-3
    msg{3,6,9}
    Server-4
    所有的消息都被打乱了重新确定目标服务器。
  • 18. 路由策略-Routed模式
    服务端进程进入组时,无需声明key。
    和key模式类似,客户端发送请求时,需指定一个key
    通过固定的路由和统一的灾难恢复机制,达到缓存绑定最大化的目的。
  • 19. 路由策略-Routed模式
    msg{1,5,9}
    Server-1
    msg{2,6,10}
    Server-2
    msg{1…10}
    Client
    msg{3,7}
    Server-3
    msg{4,8}
    Server-4
  • 20. Routed模式-灾难恢复策略
    msg{1,2,5,9}
    Server-1
    msg{2,6,10}
    Server-2
    msg{1…10}
    Client
    msg{3,6,7}
    Server-3
    msg{4,8,10}
    Server-4
    原来发到server2的请求2,6,10,被分摊到server1, server3, sever4上面。而server1和server3, server4原来响应的key,仍然保持不变。
  • 21. 路由策略- Multikey模式
    服务端进程声明它要接收的key的列表范围。
    客户端进程每次发送请求时,提供一个key值(正整数)。
    重叠的key列表是允许的。
    请求被分发到对应key列表的服务端进程。
    提供了灾难自动恢复机制
  • 22. 路由策略- Multikey模式
    msg{1,3,5}
    Server-1@{1-5}
    msg{2,4}
    Server-2@{1-5}
    msg{1…10}
    Client
    msg{6,8,10}
    Server-3@{6-10}
    msg{7,9}
    Server-4@{6-10}
  • 23. Multikey模式-灾难恢复策略
    msg{1,2,3,4,5}
    Server-1@{1-5}
    msg{2,4}
    Server-2@{1-5}
    msg{1…10}
    Client
    msg{6,8,10}
    Server-3@{6-10}
    msg{7,9}
    Server-4@{6-10}
  • 24. 夸父 – 状态监控
  • 25. 议程
    25
    一、夸父系统简介
    二、夸父的使用与消息路由
    三、夸父应用效果
    四、小结
  • 26. 夸父-性能评测
  • 27. 夸父-性能评测
  • 28. 夸父vs TCP
  • 29. 议程
    29
    一、夸父系统简介
    二、夸父的使用与消息路由
    三、夸父应用效果
    四、小结
  • 30. 小结
    夸父目前已经在淘宝多个业务系统中稳定性运行
    数百台机器集群的应用规模
    后续将考虑开源(code.taobao.org)
  • 31. Q & A
    谢谢!