搜索
当前位置: M5平台官网 > 调度作业 >

揭秘贝壳找房作业调度系统KOB

gecimao 发表于 2019-04-13 15:19 | 查看: | 回复:

  贝壳找房是2018年4月推出的“新居住”服务平台,为消费者提供包括二手房、新房、租赁等全方位的居住服务。随着公司业务的发展和中台战略的推进,为了管理大量的分布式调度任务,贝壳找房技术团队开发了一套中心化的作业调度系统KOB(Ke Job的简称),定义了公司的任务调度模型,实现了任务调度的统一管理和监控。

  作为贝壳找房的大型开源项目之一,KOB背后的核心功能和创新点是大家关心的重点。针对一些关键问题,我们采访了项目负责人赵禹光。

  说来话长,随着公司业务的发展和中台战略的推进,很多大型项目拆分成多个小项目和微服务。我们之前使用Quartz来实现作业调度功能,但随着项目的增多,作业调度任务也分散在许多不同的项目和微服务中。这样不仅不利于作业调度任务的统一管理,也会浪费大量的服务资源,同时也无法实现跨项目间的任务调度。

  基于以上思考,我们开发了第一版作业调度系统,又经过了1年多的沉淀,开源了KOB作业调度系统。

  带着公司在发展中遇到的作业调度问题,我们调研了很多市场上的产品,发现并没有能很好地解决我们需求的产品,因此我们决定自研。现在经过了1年多的沉淀,把我们的方案和产品以开源的方式回馈给社区,希望可以为作业调度方向提供新的解决方案,让大家共同参与建设。

  作业调度系统是每个互联网公司的基础服务,国内常用的有Elastic-job、TBSchedule等开源产品。

  首先,它们都基于Quartz实现任务调度,每个项目需要建立相应的配置和存储,有一定的接入成本,且任务调度模块的扩展性较低。而KOB的作业调度组件都是自研的,各种配置由服务端统一管理,接入成本比较低,并且基于KOB做功能定制会更加灵活。

  其次,KOB在中心化的实现方案下,保证了每个业务线机器资源的弹性伸缩,同时也实现了任务调度的统一管理和监控,降低了每个项目的管理成本。

  再次,KOB实现了管道队列模块,在调度任务较多时,会将任务保留并延迟执行,保证调度任务必然运行,不会因为负载过高而丢失任务。

  最后,我们支持对已接入的项目做资源隔离,使得各个项目的接入更加简单,不必考虑其他项目。其他的差异可以查看我们做的竞品分析:KOB竞品分析

  以Quartz为例,Quartz用MySQL的行锁解决任务分配问题。但对于大量短任务的这种情况,每个客户端都会抢占数据库锁,这样就会出现大量的线程等待,对客户端是非常不友好的。而KOB是用ZooKeeper来实现任务调度的,会统一由服务端分配调度任务,预先分配好了执行任务的客户端,避免了客户端抢占数据库锁这样的资源浪费。

  Q:KOB目前可以支持那些语言的客户端呢?其他语言想接入KOB会不会成本很高?

  目前只有Java版本的客户端,正在规划增加对其他语言的支持。在这里也希望大家加入我们的队伍,一起开发其他语言的客户端。

  其他语言的客户端开发也比较容易,因为KOB的架构主要的逻辑在服务端,客户端通过与ZooKeeper通信来实现任务调度。

  目前在公司内部,已经接入了数百个线上服务,每天完成几万次的任务调度,调度准确性达99.999%,时间误差在毫秒级,支持失效转移,稳定性是有保证的。

  不会的,KOB的服务端是实现了高可用的,服务失败会自动处理,不会耗费运维人力,另外我司的基础监控也比较完善。

  目前KOB并不需要专职的运维同学,在服务的承载能力下,任何业务方都可以自由地在平台上进行接入,自行查看任务运行情况。并且每个项目间都是逻辑隔离的,不用担心受到其他业务的影响。

  KOB作业调度系统使用了目前市场最主流的技术栈,可靠性、扩展性都很高,而学习成本很低。

  我们会抓紧推进KOB社区的建设,同社区一起发展,在功能上即将发布跨项目调度功能,正在考虑增加DAG调度等新功能。

  团队目前有一些其他技术类项目,解决业务中遇到的一些具体的问题,比如帮助线上定位问题、数据一致性组件等,也有开源计划,暂时保密。

本文链接:http://olivierlutaud.net/diaoduzuoye/47.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部