E-Job是怎么来的?
在当当的 ddframe框架中,需要一个任务调度系统(作业系统)。
实现的话有两种思路,一个是修改开源产品,一种是基于开源产品搭建(封装),当当选择了后者,最开始这个调度系统叫做 dd-job。它是一个无中心化的分布式调度框架。因为数据库缺少分布式协调功能(比如选主),替换为 Zookeeper后,增加了弹性扩容和数据分片的功能。
Elastic-Job是 ddframe中的 dd-job作业模块分离出来的作业框架,基于 Quartz和 Curator开发,在 2015年开源。
轻量级,无中心化解决方案。
为什么说是去中心化呢?因为没有统一的调度中心。集群的每个节点都是对等的,节点之间通过注册中心进行分布式协调。E-Job存在主节点的概念,但是主节点没有调度的功能,而是用于处理一些集中式任务,如分片,清理运行时信息等。
思考:如果 ZK挂了怎么办?
每个任务有独立的线程池。
从官网开始
http://elasticjob.io/docs/elastic-job-lite/00-overview/
https://github.com/elasticjob
Elastic-Job最开始只有一个 elastic-job-core的项目,在 2.X版本以后主要分为Elastic-Job-Lite和 Elastic-Job-Cloud两个子项目。其中,Elastic-Job-Lite定位为轻量级无中心化解决方案,使用 jar包的形式提供分布式任务的协调服务。而Elastic-Job-Cloud使用 Mesos + Docker的解决方,额外提供资源治理、应用分发以及进程隔离等服务(跟 Lite的区别只是部署方式不同,他们使用相同的 API,只要开发一次)。