【niubi-job——一个开源的分布式任务调度框架】-----安装教程

 niubi-job是什么

  

  niubi-job是LZ耗时三个星期,费尽心血打造的一个具备高可靠性以及水平扩展能力的分布式任务调度框架,采用quartz作为底层的任务调度管理器,zookeeper做集群的管理与协调。

  

niubi-job可以做什么

  

  niubi-job与Hadoop的MR框架,包括storm等的目标不同,niubi-job主要针对的是需要定时执行,且同一时间只能有一个节点运行此任务的场景。例如,有一个定时任务是定时去请求某个API获取交易的状态,然后将状态更新到数据库里。类似于这样的job,就非常适合niubi-job去做。

  特别强调,niubi-job强制保证同一个任务在同一时间只可能被一个节点运行,这是niubi-job最大的特征,也是用好niubi-job必须要知道的。

  

特性

  

  1、动态发布任务,通过web控制台上传jar包即可发布任务,发布新任务时,正在运行的任务不受任何影响。

  2、可靠性较高的灾备机制,采用成熟的分布式系统解决方案zookeeper处理节点间的协作。

  3、智能负载均衡,拥有理论上无限的伸缩能力(仅master-slave模式支持)

  4、有较为详细的任务执行日志。

  5、支持spring的运行环境。

  6、支持多种模式,例如单机模式、伪分布式以及真正的分布式。

  7、简单易用,降低门槛。

  8、未完待续...

  

安装使用

  

  好了,对于框架本身的介绍就暂时到这里,本文主要的任务是教会大家如何使用niubi-job。后续,LZ还会出一系列文章去讲解niubi-job的框架设计,原理以及一些其它的内容,比如类加载机制等。

  

安装要求

  

  使用niubi-job,你需要具备以下环境和软件。

  1、JDK1.8+(正确配置JAVA_HOME,且保证java -version可以正确运行)

  2、关系型数据库(MYSQL最佳,因为niubi-job默认的数据库配置是mysql,请手动建立一个叫做job的数据库)

  3、zookeeper-3.4.7。

  4、tomcat7+。

  除了以上之外,你当然还需要下载niubi-job相关的软件。niubi-job主要分为两部分,一部分是web控制台,以war包方式提供,可以在tomcat等web容器当中运行。另外一部分就是节点的运行程序,以zip和tar.gz方式提供,请根据自己的操作系统自由选择。

  下载的地址可以到LZ的个人博客里下载最新版本,地址分别如下。

  http://www.zuoxiaolong.com/download/niubi-job-cluster.zip

  http://www.zuoxiaolong.com/download/niubi-job-cluster.tar.gz

  http://www.zuoxiaolong.com/download/niubi-job-console.war

  当然了,也可以从LZ的github上面clone下来源码自己编译,不过这需要你的本机有maven和git,然后一一执行以下命令即可。

  git clone git@github.com:xiaolongzuo/niubi-job.git
  git checkout niubi-job-0.9.2
  cd niubi-job
  mvn clean package

  执行完以上命令后,在你当前文件夹里,就会出现上面的三个文件。

  

安装步骤

  

  好了,有了以上环境,基本上已经安装了一半了。不要害怕,接下来很简单,跟着LZ一起往下进行吧。

  

启动三个zookeeper

  

  如果你已经下载好了zookeeper-3.4.7的安装包,那么请启动三个zookeeper。当然,一个也是完全可以的。具体的安装步骤这里就不赘述了,搜索“zookeeper伪分布式安装”,网络上有大量的教程。

  LZ这里只给大家一个方便下载zookeeper的链接,大家可以点击下载zookeeper-3.4.7,地址为:http://www.zuoxiaolong.com/download/zookeeper-3.4.7.tar.gz

  

启动数据库

  

  以mysql为例,mysql安装的步骤不再赘述,请自行参考网络上的资料,一把一把的。只需要切记,建立一个叫job的database就行了。niubi-job的orm框架采用hibernate,可以逆向生成数据库的表,因此不需要数据库的初始化脚本,只需要建立好数据库即可。

  如果你没有mysql数据库,也没有关系,在接下来自行配置一下即可。只要不是特别奇葩的关系型数据库,相信hibernate都是支持的。

  

启动niubi-job-console

  

  niubi-job-console是niubi-job项目的web控制台,是给开发人员操作的Web UI界面,用它可以上传jar包,发布和停止任务,查看节点和任务运行情况等。

  首先下载tomcat7或8,然后解压,将niubi-job-console.war包放到tomcat容器的webapps目录下,接下来启动tomcat。 

  接下来,见证奇迹的时刻就到了,进入http://localhost:8080/niubi-job-console,你会看到如下界面。

  当然了,你也可能会启动报错,不过这没关系,99%的可能是你数据库或者zookeeper的配置不对,请进入到下面的文件夹

${tomcat_home}/webapps/niubi-job-console/WEB-INF/classes

  你会看到一个叫config.properties的文件,或许你需要修改一下这个文件。它的内容如下。

  

  这些参数的解释如下,你可以根据自己的需要修改。

  connectString:zookeeper地址

  driverClass:数据库驱动(具体的配置请根据自己的数据库自行选择,此外,请自行引入相应的数据库驱动包,放在lib文件夹下)

  jdbcUrl:数据库连接地址(ps:LZ这里默认的数据库叫job,当然了,你如果不喜欢的话,那就改了它!)

  user & password:这两项很明显是用户名和密码了。

  hibernate.dialect:数据库方言(ps:如果你使用了其它数据库,记得把方言改成你的数据库方言。)

  hibernate.*:接下来的参数就不一一介绍了,这属于hibernate的知识,有兴趣的可以自行研究下。(ps:还有很多参数在这里并没有出现,但也同样支持)

  

启动niubi-job-cluster

  

  启动好console以后,重点就来了。niubi-job-cluster是整个niubi-job项目的核心,也是最耗费LZ心血的地方。它是niubi-job中节点的应用程序,每一个启动的节点都是集群中的一员,它们相互协作,来完成任务的调度。

  niubi-job-cluster的启动方式比较简单,下载完以后,解压它,你可以看到如下目录。

  如果你是linux或者mac操作系统,就进入bin目录执行./startup.sh(ps:如果你不是用源码构建出来的jar包,或许你需要在执行前需要执行 chmod +x startup.sh)。如果你是windows系列操作系统,则双击startup.bat。

  如果启动成功,则如下。(LZ的操作系统是mac,仅供参考)

   

Tips[如未遇到,请忽略]:  

  由于操作系统编码的格式问题,可能会出现这个错误:bad interpreter: No such file or directory

  这个时候只需要执行以下命令即可解决。

  vi startup.sh

  :set ff=unix     //这是在vi模式下输入的

  :wq                //保存退出。

  不要忘了将以上操作对shutdown.sh和bootstrap.sh同样都做一遍。

  好了,咱们看下日志文件里面是什么,如下。

  

  到这里,你已经启动了一个节点,niubi-job-cluster默认的模式为master-slave模式。因此进入控制台的master-slave页面,并且进入node manager页面,就可以看到我们的节点了。

  接下来,我们来尝试在一个机器上启动多个niubi-job-cluster(伪分布式),首先将niubi-job-cluster复制出三份。然后进入每个niubi-job-cluster的conf文件夹。可以看到有一个job.properties文件,如下。

  这些参数的含义如下,可以按照自己的需要配置。

  zookeeper.addresses:zookeeper集群地址

  jar.repertory.url:console的地址

  node.mode:枚举类型(standby和masterSlave二选一)

  shutdown.port:关闭需要监听的端口(伪分布式主要就是把这个端口改成不一样的,比如三个节点分别是9101,9102,9103)

  给每个niubi-job-cluster改完端口以后,就可以依次启动另外两个节点了。这个时候,你会看到node manager里面出现了三个节点。如下。

  好了,到这里基本上一个伪分布式的niubi-job集群已经部署好了。

  

上传jar包和发布任务

  

  所谓的jar包,其实就是你的任务,具体的开发模板请参考LZ的github,里面有两个示例,一个是普通的java项目,一个是基于spring的项目。地址如下。

  https://github.com/xiaolongzuo/niubi-job-examples

  简单介绍下里面的三个module,其中niubi-job-example-common和niubi-job-example-spring都是简单的示例任务模板(niubi-job的任务可以按照这两个模板来开发),至于niubi-job-test这个module,请忽略它,那是LZ自己没事写着玩的一些测试类。

  LZ已经给上面两个示例项目打好了jar包(切记,打包时要把自己的依赖也打进去,同时将niubi-job-scheduler排除在外,在LZ的这两个示例项目中,打包时只需要激活release的profile即可),可以从LZ的个人网站上下载,地址如下。

  http://www.zuoxiaolong.com/download/niubi-job-example-common.jar

  http://www.zuoxiaolong.com/download/niubi-job-example-spring.jar

  下载完以后,进入控制台的upload jar界面,就可以上传jar包了。这里需要填写一下需要扫描的packages,这是必须要填的。如下。

  如此将两个jar都上传后,在job runtime manager页面可以看到四个任务。如下。

  如图,按照图中所示即可进入任务发布界面,输入cron表达式后,选择execute,任务将会被启动。咱们将四个任务都启动,可以看到如下图。

 

  接下来,我们进入node manager界面,可以看到任务是平均分配的。如下图。

  其中master上面运行了两个任务,而两个子节点分别被分配了一个任务。这个时候,你可以尝试关闭其中一个节点,你会发现任务将会被平均分配到剩下的节点当中。比如你这时候把master关掉,那么剩下的两个slave将有一个成为master,并且剩下的两个节点会每个有两个任务。

  

结束语

  

  到现在为止,你的niubi-job已经搭建起来了。当然了,这只是单机版的体验方式,真正在生产中使用的时候,需要使用真正的分布式模式,而且还需要做一些其它方面的工作,以期让niubi-job更好的工作。比如,可以把console存储jar包的地方,和节点下载jar后存放的位置指向同一个硬盘,这样节点将不再需要下载jar包。

  由于本次发布的是niubi-job的第一版,因此还有很多不足之处,包括web控制台的UI也非常粗糙。LZ欢迎大家去github上面给niubi-job提issue,或者提交PR。当然,你也可以和LZ在网上交流(联系方式在左侧),或者在下方留言。

 

未完待续......

springboot2.0企业中台实战之权限统一管理与应用统一授权 (dubbo分布式系统实战)

12-07
本课程是一门具有很强实践性质的“项目实战”课程,即“企业中台系统实战”,其中主要包含三大块核心内容,如下图所示(右键可以在新标签页中打开图片放大查看): 即主要包含以下三大块内容: ① 企业内部应用系统菜单资源和操作权限的统一管理; ② 分布式应用系统通信时的统一授权,即基于AccessToken的授权与认证; ③ 分布式服务/系统通信时的两大方式(基于dubbo rpc协议和基于http协议的restful api实战)。   值得一提的是,这套中台系统由于讲解了如何统一管理企业内部各大应用系统的“菜单资源列表”、“操作权限”,故而本门课程的“代码实战”是建立在之前debug录制的“企业权限管理平台”这套课程的基础之上的,故而在这里debug建议没有项目开发基础的小伙伴可以先去学习我的那套“企业权限管理平台”的实战课程,之后再来学习我的这套中台系统的实战才不会很吃力(课程链接:)   本课程的课程大纲如下图所示(右键可以在新标签页中打开图片放大查看):   除此之外,这套“中台系统”由于统一管理了企业内部各大应用系统的“菜单资源和操作权限”以及“应用系统之间通信时的统一授权”,故而难免需要涉及到“中台系统”与“中台子系统”、“中台子系统”与“中台子系统”之间的通信(即分布式服务之间的通信),在这里我们是采用“dubbo + zookeeper”的方式加以落地实现的,详情如下图所示(右键可以在新标签页中打开图片放大查看):   而众所周知,作为一款知名以及相当流行的分布式服务调度中间件,dubbo现如今已经晋升为Apache顶级的开源项目,未来也仍将成为“分布式系统”开发实战的一大利器,如下图所示为dubbo底层核心系统架构图(右键可以在新标签页中打开图片放大查看): 而在这门“中台系统实战”的课程中,我们也将始终贯彻、落地dubbo的这一核心系统架构图,即如何将中台系统开发的服务注册/发布到注册中心zookeeper,中台子系统如何订阅/消费/调度中台系统发布在zookeeper的接口服务,中台子系统在走http协议调度通信时dubbo如何进行拦截、基于token认证接口的调用者等等,这些内容我们在课程中将一一得到代码层面的实战落地!   下图为本课程中涉及到的分布式系统/服务之间 采用“http协议restful api”方式通信时的Token授权、认证的流程图(右键可以在新标签页中打开图片放大查看): 而不夸张地说,基于AccessToken的授权、认证方式在现如今微服务、分布式时代系统与系统在通信期间最为常用的“授权方式”了,可想而知,掌握其中的流程思想是多么的重要!   以下为本门课程的部分截图(右键可以在新标签页中打开图片放大查看):     核心技术列表: 值得一提的是,由于本门课程是一门真正介绍“中台思想”以及将“中台思想”和“分布式系统开发实战”相结合落地的课程,故而在学完本门课程之后,可以掌握到的核心技术自然是相当多的。主要由SpringBoot2.0、SpringMVC、Mybatis、Dubbo、ZooKeeper、Redis、OkHttp3、Guava-Retrying重试机制、JWT(Json Web Token)、Shiro、分布式集群session共享、Lombok、Stream API、Dubbo-Filter以及ServiceBean等等。如下图所示(右键可以在新标签页中打开图片放大查看):
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值