分布式任务调度可选方案

 1、除了基于jvm的java之处,新接触一个JVM语言——SCALA,一种同时面向脚本和面向函数的语言,spark大数据框架是基于scala语言。照着网络教程,简单的写了几个例子,感觉object,class与java语境中还是有一定的差异,但与java体系结合的很好,还有groovy语言,都是比较小巧敏捷的语言各类,但未真正实际,今年时间中要简单实际应用一下。

2、在搜索API GATEWAY开源产品的过程中,除了netflix zuul组件,发现KONG组件可以应用,其基于openresty实现,同时openrestry又是lua语言实现,简单接触lua,是一个小巧但又强大的脚本语言,京东的开涛在京东页面高并发场景下,利用nginx + lua编程解决了不少问题。KONG实现了接口网关的权限控制、请求的限流、分发、监控、负载均衡等,KONG基于数据存储,借助于postgresql或cassandra数据库实现。

3、一直使用Quartz组件,但对misfire这种机制均未涉及到。针对实际应用场景,可采取不同策略来应对。常用的xml配置方式,是基于RAMJOBSTORE的方式,同时还存在一种JDBCJOBSTORE的方式,借助数据库来存储任务,支持不同数据库。同时利用jdbcjobstore的方式实现集群的配置。但耦合性比较强,可以采用任务调度与执行分开的方式来运作,将调度与执行分开,提高运行效率与扩展性。

4、xxl-job的开源产品完美实现这一方式,admin配置、调度中心,执行器独立部署,部署时可以jar或war两种方式,由于内置jetty中间件,在通讯方式中没有障碍。一个中心、多个集群高可用式的执行器,任务监控,任务日志一览无余。xxl-job基于数据库来共同管理任务,是个很好的分布式任务方案。 除此之外还有Tbschedule和elstic-job可选方案,两者基于db外,还可以基于zookeeper中间件来实现。

只是了解 ,尚未实际应用到项目中,需要检验可靠性、可行性。

扫描二维码关注公众号,回复: 275752 查看本文章

关注公众号,获取更多相关技能

猜你喜欢

转载自bakcom.iteye.com/blog/2363832