一致性哈希环在分布式任务系统中的应用

来源:互联网 发布:淘宝您的访问受限 编辑:程序博客网 时间:2024/05/19 23:11

一致性哈希环在缓存管理方面的应用,已经说过了。详见:一致性哈希环的简单理解

在实际开发中,我们尝试着将一致性哈希环应用到业务系统中,于是就有了这篇博文。当你看到这篇博文的时候,一个小的基于一致性哈希环的任务调度系统,已经在运行了。

历史恩怨:

一个交易相关的系统,伴随着业务的增长,所需要的交易时间越来越长,并且越来越不稳定,这严重的影响了系统稳定,交易安全和用户体验。

设计目的:

终于,有一天,一帮程序员受不了客服人员的碎碎念和产品人员的叨叨,决定对系统进行重构,重构的目的就是解决伴随着业务的增长,系统性能变缓的问题。并且提供一种可扩展的,适合集群部署的业务系统。系统必须能满足分布式部署的需要,并且能够适应将来增加分布式部署的灵活性要求。

详细设计:

首先,将任务异步化,由于系统客户端能对业务进行比较严格的校验,提交错误任务的几率相当小,所以,异步化真个业务流程是可行的,所以我们决定将这个业务流程异步化。即将整个流程分为订单提交,订单处理,订单返回三个阶段。

由于任务提交部分业务简单,运算量少,所以这部分会相当快。而用户能直接看到的,也就是这部分。所以用户体验部分能很好的解决。

对于已经提交的订单,有后台部署的处理集群,对提交的订单进行处理。该部分是性能和负载均衡的重灾区,也是哈希环的用武之地。这个留到下面进行具体说明。

订单结果返回:

订单处理完成后,会生成返回结果,生成的返回结果,会推送到客户端,提示用户已经处理成功(一般情况下,用户并不十分关心这部分信息)。

这样,整个的任务处理被分为三个部分,而而用户体验到的,只是第一个订单提交部分,大大提高了系统的用户体验度。

而对于压力比较大的订单处理部分。我们可以采用集群来处理。而集群中,任务的分配,是由基于“一致性哈希环”的任务调度系统组成。

敬请期待


0 0
原创粉丝点击