分布式任务调度框架选型,如何选择一个合适的框架?

分布式任务调度框架选型,如何选择一个合适的框架?,第1张

首先,这种框架现在市面上是有的。强烈建议,不要重复造轮子。

先介绍几种比较主流的。

Elastic-Job,是当当网开源的分布式调度解决方案,支持任务分片功能,可以充分利用资源。Elastic-Job有两个独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。具体实现可以参考官方教程。其整体架构图如下。
Elastic-Job的特点:

1、分布式调度 2、作业高可用 3、任务分片执行。

另外,还有其他的一些框架,可以对比使用。比如TBSchedule是阿里巴巴开源的分布式调度框架,完全由java实现,目前被应用于淘宝,阿里巴巴,支付宝,京东, 汽车 之家等。大众点评开源的xxl-job,也是应用比较广泛的分布式调度任务。

目前我使用过的有 Elastic-Job和xxl-job。两者功能都很强大,后台管理也比较完善。很容易上手。都可以满足日常的工作需要。区别就是 Elastic-Job依赖zk,但是xxl-job不依赖zk,只依赖数据库。

目前市面上应该还有一些其他的框架,但是以上是比较主流的,可以根据自己的需要来选择。切记不要重复造轮子,造轮子需要大量的时间去验证。会让你在坑里爬不出来。
1XXL-JOB

2Elastic-Job

Elastic-Job 是一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。

定位为轻量级无中心化解决方案,使用 jar 包的形式提供分布式任务的协调服务。

支持分布式调度协调、d性扩容缩容、失效转移、错过执行作业重触发、并行调度、自诊断和修复等等功能特性。

分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。
Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。选择该项目可以满足大多数it企业的需求。
Elastic-Job-Cloud使用Mesos + Docker的解决方案,额外提供资源治理、应用分发以及进程隔离等服务。
轻量级无中心化:Elastic-Job-Lite并无作业调度中心节点,而是基于部署作业框架的程序在到达相应时间点时各自触发调度。

灵活的增删改查作业,集中式管理调度作业

支持高可用:一旦执行作业的服务器崩溃,等待执行的服务器将会在下次作业启动时替补执行。开启失效转移功能效果更好,可以保证在本次作业执行时崩溃,备机立即启动替补执行。

支持分片:作业分片一致性,保证同一分片在分布式环境中仅一个执行实例

任务监控:通过监听Elastic-Job-Lite的zookeeper注册中心的几个关键节点即可完成作业运行状态监控功能

一致性:使用zookeeper作为注册中心,为了保证作业的在分布式场景下的一致性,一旦作业与注册中心无法通信,运行中的作业会立刻停止执行,但作业的进程不会退出,这样做的目的是为了防止作业重分片时,将与注册中心失去联系的节点执行的分片分配给另外节点,导致同一分片在两个节点中同时执行。

同时支持动态扩容,将任务拆分为n个任务项后,各个服务器分别执行各自分配到的任务项。一旦有新的服务器加入集群,或现有服务器下线,elastic-job将在保留本次任务执行不变的情况下,下次任务开始前触发任务重分片
3opencron

opencron是一个功能完善且通用的开源定时任务调度系统,拥有先进可靠的自动化任务管理调度功能,提供可 *** 作的 web 图形化管理满足多种场景下各种复杂的定时任务调度,同时集成了 linux 实时监控、webssh 等功能特性

4quartz

支持集群和分布式,但是没有友好的管理界面,功能单一,对于管理调用的任务比较困难。
quartz使用数据库锁。在quartz的集群解决方案里有张表scheduler_locks,quartz采用了悲观锁的方式对triggers表进行行加锁,以保证任务同步的正确性。一旦某一个节点上面的线程获取了该锁,那么这个Job就会在这台机器上被执行,同时这个锁就会被这台机器占用。同时另外一台机器也会想要触发这个任务,但是锁已经被占用了,就只能等待,直到这个锁被释放。
quartz的分布式调度策略是以数据库为边界资源的一种异步策略。各个调度器都遵守一个基于数据库锁的 *** 作规则从而保证了 *** 作的唯一性。同时多个节点的异步运行保证了服务的可靠。但这种策略有自己的局限性:集群特性对于高CPU使用率的任务效果很好,但是对于大量的短任务,各个节点都会抢占数据库锁,这样就出现大量的线程等待资源。这种情况随着节点的增加会越来越严重。
缺点:quartz的分布式只是解决了高可用的问题,并没有解决任务分片的问题,还是会有单机处理的极限。

5Saturn

Saturn
基于当当Elastic Job代码基础上自主研发的任务调度系统,是唯品会开源的分布式作业调度平台,取代传统的Linux Cron/Spring Batch Job的方式,做到统一配置,统一监控,任务高可用以及分片并发处理。主要是去中心化,高可用,可分片,动态扩容,有认证和授权功能。
主要特性
支持多种语言作业,语言无关(Java/Go/C++/PHP/Python/Ruby/shell)

支持秒级调度

支持作业分片并行执行

支持依赖作业串行执行

支持作业高可用和智能负载均衡

支持异常检测和自动失败转移

支持异地容灾

支持多个集群部署

支持跨机房区域部署

支持d性动态扩容

支持优先级和权重设置

支持docker容器,容器化友好

支持cron时间表达式

支持多个时间段暂停执行控制

支持超时告警和超时强杀控制

支持灰度发布

支持异常、超时和无法高可用作业监控告警和简易的故障排除

支持失败率最高、最活跃和负荷最重的各域各节点TOP10的作业统计

优点:源码清晰,学习入手容易。应用部署简单,提供运维控制台,集中管理作业,运维控制台功能强大,提供作业统计报表 ,告警,增删改查作业,作业统一配置。
最后一个是国内团队封装的

前端时间研究了两款分布式任务调度框架,一个是XXL-Job,现在非常主流,很多常见的一些公司都在使用,像滴滴美团这样的公司都在用,这也是一款开源产品,下载下来导入IDEA就可以使用,分调度器和执行器和管理UI,有很美观的UI界面,可以对任务做增删改查,以及支持自定义开发,有很详细的帮助文档,还提供有demo,傻瓜式的,很简单,亮点是提供了管理界面。

另一个是Quartz,这个组件单机和集群都支持,单机的话是RAMJobStore任务存储,而要支持集群的话,就要将配置改成数据库方式,Quartz提供的有十几张表,其分布式的原理是利用了数据库的行锁,Quartz很简单,也是一款轻量级的开源产品,我们公司一直用这款组件,很成熟无Bug,推荐使用!

springcloudtask,springclouddataflow,正在学习中

就是同一个服务,把数据库的不同部分分开建立到不同的服务器上。以缓解数据库大量数据访问的压力。

很多大公司的业务量比较大,每天的访问量都达到几百万上千万,甚至上亿的访问量,在访问量不是很大的情况下,是可以通过提高单台服务器的配置来满足需求的。但是当单台服务器已经满足不了需求的时候就需要做分布式处理了。毕竟一台服务器的处理能力是有限的。

如果分散到几台甚至几十台几百天电脑上,其优势就显现出来了。

交换机与集线器的区别
技术的进步带动了交换机价格的迅速下降,普通用户也有能力去购买这样的设备,但是同早期的网络设备(主要是同集线器HUB的对比)相比较,它有什么优势呢?这也是大多数用户所关心的问题。下面就对两种实现结果相同、但是工作机理不同的设备:交换机(Switch)和集线器(HUB)做一对比。
从工作现象看,它们都是通过多端口连接Ethernet的设备,可以将多个用户通过网络以星型结构连接起来,共享资源或交流数据。但是细分它们的工作状态,却完全不同。
集线器的工作机理是广播(broadcast),无论是从哪一个端口接收到什么类型的信包,都以广播的形式将信包发送给其余的所有端口,由连接在这些端口上的网卡(NIC)判断处理这些信息,符合的留下处理,否则丢弃掉,这样很容易产生广播风暴,当网络较大时网络性能会受到很大的影响。从它的工作状态看,HUB的执行效率比较低(将信包发送到了所有端口),安全性差(所有的网卡都能接收到,只是非目的地网卡丢弃了信包)。而且一次只能处理一个信包,在多个端口同时出现信包的时候就出现碰撞,信包按照串行进行处理,不适合用于较大的网络主干中。
交换机的工作就完全不同,现在低端的交换机都是Layer 2交换机,基于MAC地址进行交换。它通过分析Ethernet包的包头信息(其中包含了原MAC地址、目标MAC地址、信息长度等),取得目标MAC地址后,查找交换机中存储的地址对照表(MAC地址对应的端口),确认具有此MAC地址的网卡连接在哪个端口上,然后仅将信包送到对应端口,有效的有效的抑制广播风暴的产生。这就是Switch 同HUB最大的不同点。而Switch内部转发信包的背板带宽也远大于端口带宽,因此信包处于并行状态,效率较高,可以满足大型网络环境大量数据并行处理的要求。
局域网交换机分类
●从传输介质和传输速度上看,局域网交换机可以分为以太网交换机、快速以太网交换机、千兆以太网交换机、FDDI交换机、ATM交换机和令牌环交换机等多种,这些交换机分别适用于以太网、快速以太网、FDDI、ATM和令牌环网等环境。
●按照最广泛的普通分类方法,局域网交换机可以分为桌面型交换机(Desktop Switch)、组型交换机(Workgroup Switch)和校园网交换机(Campus Switch)三类。
1. 桌面型交换机是最常见的一种交换机,使用最广泛,尤其是在一般办公室、小型机房和业务受理较为集中的业务部门、多媒体制作中心、网站管理中心等部门。在传输速度上,现代桌面型交换机大都提供多个具有10/100Mbps自适应能力的端口。
2. 组型交换机即工作组交换机,常用来作为扩充设备,在桌面型交换机不能满足需求时,大多直接考虑组型交换机。虽然组型交换机只有较少的端口数量,但却支持较多的MAC地址,并具有良好的扩充能力,端口的传输速度基本上为100Mbps。
3. 校园网交换机,这种交换机应用相对较少,仅应用于大型网络,且一般作为网络的骨干交换机,并具有快速数据交换能力和全双工能力,可提供容错等智能特性,还支持扩充选项及第三层交换中的虚拟局域网(VLAN)等多种功能。
●根据架构特点,人们还将局域网交换机分为机架式、带扩展槽固定配置式、不带扩展槽固定配置式3种产品。
1. 机架式交换机 这是一种插槽式的交换机,这种交换机扩展性较好,可支持不同的网络类型,如以太网、快速以太网、千兆以太网、ATM、令牌环及FDDI等,但价格较贵,高端交换机有不少采用机架式结构。
2. 带扩展槽固定配置式交换机 它是一种有固定端口数并带少量扩展槽的交换机,这种交换机在支持固定端口类型网络的基础上,还可以通过扩展其他网络类型模块来支持其他类型网络。这类交换机的价格居中。
3. 不带扩展槽固定配置式交换机 这类交换机仅支持一种类型的网络(一般是以太网),可应用于小型企业或办公室环境下的局域网,价格最便宜,应用也最广泛。
局域网交换机常见技术指标
局域网交换机基本技术指标较多,这些技术指标全面反映了交换机的技术性能和功能,是用户选购产品时参考的重要数据来源。其中比较重要的技术指标如下。
1. 机架插槽数:指机架式交换机所能安插的最大模块数。
2. 扩展槽数:指固定配置式带扩展槽交换机所能安插的最大模块数。
3. 最大可堆叠数:指可堆叠交换机的堆叠单元中所能堆叠的最大交换机数目。显然,此参数也说明了一个堆叠单元中所能提供的最大端口密度与信息点连接能力。
4. 支持的网络类型:一般情况下,固定配置式不带扩展槽交换机仅支持一种类型的网络,机架式交换机和固定配置式带扩展槽交换机可支持一种以上类型的网络,如支持以太网、快速以太网、千兆以太网、ATM、令牌环及FDDI等。一台交换机所支持的网络类型越多,其可用性和可扩展性将越强。
5. 最大SONET端口数: SONET(Synchronous Optical Network,同步光传输网络)是一种高速同步传输网络规范,最大速率可达25Gbps。一台交换机的最大SONET端口数是指这台交换机的最大下联的SONET接口数。
6. 背板吞吐量: 背板吞吐最也称背板带宽,单位是每秒通过的数据包个数(pps),表示交换机接口处理器或接口卡和数据总线间所能吞吐的最大数据量。一台交换机的背板带宽越高,所能处理数据的能力就越强,但同时成本也将会越高。
7. MAC地址表大小:连接到局域网上的每个端口或设备都需要一个MAC地址,其他设备要用到此地址来定位特定的端口及更新路由表和数据结构。一个设备的MAC地址表的大小反映了连接到该设备能支持的最大节点数。
8. 支持的协议和标准:局域网交换机所支持的协议和标准内容,直接决定了交换机的网络适应能力。这些协议和标准一般是指由国际标准化组织所制定的联网规范和设备标准。由于交换机工作在第二层或第三层上,工作中要涉及到第三层以下的各类协议,一般来讲,根据开放互联网络模型可进行如下分类。
(1)第一层(物理层)协议 包括EIA/TIA-232、EIA/TIA-449、X21和EIA530/EIA530A接口定义等,这些定义基本上决定了交换机上各物理接口的类型与作用。
(2)第二层(链路层)协议 包括8021d/SPT、8021Q、8021p及8023x等。
(3)第三层(网络层)协议 包括IP、IPX、RIP1/2、OSPF、BGP4、VRRP,以及组播协议等等。
局域网交换机选购要素
用户在选购局域网交换机时,应该主要考虑以下因素。
1、外型尺寸的选择
如果网络较大,或已完成楼宇级的综合布线,工程要求网络设备上机架集中管理,应选机架式组型交换机或者校园网交换机。如果没有上述需求,桌面型的交换机具有更高的性能价格比。
2、可伸缩性
局域网交换机的可伸缩性是选择局域网交换机的一个重要问题。可伸缩性好并非仅仅是产品拥有很多端口数量。因为交换机应用最重要的事情之一,是确定其端口在什么情况下会出现拥塞。所以用户需要考虑下面两个方面的问题。
(1) 内部可伸缩性 在2个堆叠的交换机之间,最大的可伸缩性是多少?带宽的增长在交换机没有过载时,有多少个端口的传输速率可以从10Mbps提高到100Mbps?
(2) 外部可伸缩性 和交换机上联的最高速率有关。例如,有1台24用户端口的可堆叠局域网交换机,假设这24个端口能传输的流量全都是10Mbps,并且该交换机上联的速率为1Gbps,因此,如果其中有8个端口的速率提高到100Mbps,就会导致上联的饱和。因为8个端口的传输速率达到100Mbps时,总流量就是800Mbps。而剩下的16个端口,每个端口速率为10Mbps,总共才160Mbps。这样,24个端口流量总和为960Mbps。说明这台交换机再也无法处理快速以太网的连接了,否则就会出现拥塞。如果交换机上联的速率为2Gbps,则它最多只能处理19个快速以太网端口,否则就会发生拥塞。所以,交换机的可伸缩性,直接决定了局域网各信息点传输速率的升级能力。
3、可管理性
对局域网交换机来说,在运行和管理方面所付出的代价,同样远远超过购买成本。基于这方面考虑,可管理性已开始成为评定交换机的另一个关键因素。
一般来讲,交换机本身就具有一定的可管理性能,至于可堆叠式交换机还具有可以把几个所堆叠的交换机作为1台交换机来管理的优点,而不需要对每一台局域网交换机分别进行管理和监视。需要注意的是,在可管理内容中包括了处理具有优先权流量的服务质量(QoS)、增强策略管理的能力、管理虚拟局域网流量的能力,以及配置和 *** 作的难易程度。其中QoS性能主要表现在保留所需要的带宽,从而支持不同服务级别的需求。可管理性还涉及到交换机对策略的支持,策略是一组规则,它控制交换机工作。网络管理员采用策略分配带宽,并对每个应用流量和控制网络访问指定优先级。其重点是带宽管理策略,且必须满足服务级别协议SLA。分布式策略是堆成组叠交换机的重要内容,应该检查可堆叠交换机是否支持目录管理功能,如轻型目录访问协议(LDAP),以提高交换机的可管理性。
4、端口带宽及类型
选择什么类型的局域网交换机,用户应首先应根据自己组网带宽需要决定,再从交换机端口带宽设计方面来考虑。从端口带宽的配置看,目前市场上主要有以下三类。
第一种配置:n×10M+m×100M低快速端口专用型
一般骨干网的传输速率为100Mbps全双工,分支速率为10Mbps。从技术角度看,这类配置的局域网交换机严格限制了网络的升级,用户无法实现高速多媒体网络,因此国内外厂商已基本停止生产这种产品。
第二种配置:n×10/100Mbps端口自适应型
目前这种交换机是市场上的主流产品,因为它们有自动协商功能(Auto Negotiation),能够检测出其下联设备的带宽是100M还是10M,是全双工还是半双工。当网卡与交换机相联时,如果网卡支持全双工,这条链路可以收发各占100M,实现200M的带宽,同样的情况可能出现在交换机到交换机的连接中,应用环境非常宽松。
第三种配置:n×1000M+m×100M高速端口专用型
与第一类交换机配置方式相似,所不同的是不仅带宽要多几个数量级,而且端口类型也完全不同。采用这种配置方案的交换机,是当前高速网络和光纤网络接入方案中的重要设备,可彻底解决网络服务器之间的瓶颈问题。如3Com公司的3C39024(1×1000SX+24×10/100BaseTX)、3C39036(1×1000SX+36×10/100BaseTX)千兆上联至服务器,解决了服务器到服务器的瓶颈问题。但成本要远远高于前两类产品。

分布式防火墙技术
在前面已提到一种新的防火墙技术,即分布式防火墙技术已在逐渐兴起,并在国外一些大的网络设备开发商中得到了实现,由于其优越的安全防护体系,符合未来的发展趋势,所以这一技术一出现便得到许多用户的认可和接受。下面我们就来介绍一下这种新型的防火墙技术。
因为传统的防火墙设置在网络边界,外于内、外部互联网之间,所以称为"边界防火墙(Perimeter Firewall)"。随着人们对网络安全防护要求的提高,边界防火墙明显感觉到力不从心,因为给网络带来安全威胁的不仅是外部网络,更多的是来自内部网络。但边界防火墙无法对内部网络实现有效地保护,除非对每一台主机都安装防火墙,这是不可能的。基于此,一种新型的防火墙技术,分布式防火墙(Distributed Firewalls)技术产生了。它可以很好地解决边界防火墙以上的不足,当然不是为每对路主机安装防火墙,而是把防火墙的安全防护系统延伸到网络中各对台主机。一方面有效地保证了用户的投资不会很高,另一方面给网络所带来的安全防护是非常全面的。
我们都知道,传统边界防火墙用于限制被保护企业内部网络与外部网络(通常是互联网)之间相互进行信息存取、传递 *** 作,它所处的位置在内部网络与外部网络之间。实际上,所有以前出现的各种不同类型的防火墙,从简单的包过滤在应用层代理以至自适应代理,都是基于一个共同的假设,那就是防火墙把内部网络一端的用户看成是可信任的,而外部网络一端的用户则都被作为潜在的攻击者来对待。而分布式防火墙是一种主机驻留式的安全系统,它是以主机为保护对象,它的设计理念是主机以外的任何用户访问都是不可信任的,都需要进行过滤。当然在实际应用中,也不是要求对网络中每对台主机都安装这样的系统,这样会严重影响网络的通信性能。它通常用于保护企业网络中的关键结点服务器、数据及工作站免受非法入侵的破坏


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13260596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-28
下一篇 2023-06-28

发表评论

登录后才能评论

评论列表(0条)

保存