# springbootstudy **Repository Path**: alterzhang/springbootstudy ## Basic Information - **Project Name**: springbootstudy - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README * 分布式任务调度 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0412/150700_7d23b2d1_1751028.jpeg "在这里输入图片标题") * 为什么会有分布式任务 避免单点问题,多个机器部署保证高可用性 * 分布式带来的问题 多个机器同时执行,一个任务跑了多次 * 解决思路 这个时候我们要考虑出现一个服务协调者,类似一个任务调度中心,管理哪些服务在那个机器哪个时间运行 这样我们就需要实现这样有个功能可以有如下步骤 1.注册中心选择,可以及时同步上下线的机器,便于多个机器之间的协调(zk) 2.实现选择,基于quartz二次开发实现。 3.功能扩展 任务分片,均摊压力,统一任务不同分类协调在不同服务器之间 ESjob的具体处理 Elastic-Job-Lite应运而生,定位为轻量级无中心化解决方案,使用jar包的形式提供最轻量级的分布式任务的协调服务,外部依赖仅Zookeeper。 1.分片 任务的分布式执行,需要将一个任务拆分为多个独立的任务项,然后由分布式的服务器分别执行某一个或几个分片项。 2.分片项与业务处理解耦 Elastic-Job并不直接提供数据处理的功能,框架只会将分片项分配至各个运行中的作业服务器,开发者需要自行处理分片项与真实数据的对应关系。 3.个性化参数的适用场景 个性化参数即shardingItemParameter,可以和分片项匹配对应关系,用于将分片项的数字转换为更加可读的业务代码。 4.分布式调度 Elastic-Job-Lite并无作业调度中心节点,而是基于部署作业框架的程序在到达相应时间点各自触发调度。注册中心仅用于作业注册和监控信息存储。而主作业节点仅仅用于处理分片和清理等功能。 5.作业高可用 Elastic-Job-Lite提供最安全的方式执行作业。将分片总数设置为1,并使用多于1台的服务器执行作业,作业将会以1主n从的方式执行。一旦执行作业的服务器崩溃,等待执行的服务器将会在下次作业启动时替补执行。 6.最大限度利用资源 Elastic-Job-Lite也提供最灵活的方式,最大限度的提高执行作业的吞吐量。将分片项设置为大于服务器的数量。最好是大于服务器倍数的数量,作业将会合理的利用分布式资源,动态的分配分片项。