For ENGLISH
juice是沪江(hujiang)学习系统项目组(LMS)所开发的一套基于Mesos Framework的分布式任务调度云系统,基于此系统,可以实现任何作业型任务的调度工作。
耗时计算型任务处理在沪江一直是个持续的需求,例如多媒体转码,Map Reduce,密集计算等等任务。在Juice出现以前,各个项目组各显神通,开发着不同的任务处理系统,不但耗费人力,还特别耗费服务器。 Juice利用Mesos集群空闲的计算能力,负责统一的接口返回和任务查询功能,其优点如下:
- 基于Mesos集群,最大程度利用空闲资源完成耗时计算
- 异步调度,并提供结果查询和回调两种方法获取执行结果
- 分布式管理,所有耗时任务都在资源池中无状态调度。
- 任务查询,目前只开放通过接口查询任务的状态和结果。
- 安装zookeeper集群
- 安装Mesos集群,并加入Zookeeper集群中。
配置zookeeper地址到项目配置文件中:
1.juice-service/src/main/resources/application-dev.properties
mesos.framework.zk=your_zk1_ip:port,your_zk2_ip:port,your_zk3_ip:port,your_zk4_ip:port,your_zk5_ip:port
PS juice-service通过zookeeper获取mesos master地址,所以必须将mesos集群配置到zookeeper中进行HA切换。
- 安装mysql5.6以上版本
1.创建mysql数据库juice,schema为juice
2.执行/script/juice_2017-V1.0-OPEN.sql创建2张表juice_framework、juice_task。
3.修改文件juice-jooq/pom.xml:
<configuration>
<jdbc>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://your_ip:your_port/juice</url> <!-- ip & port & database name -->
<user>your username</user> <!-- username of database -->
<password>your password</password> <!-- password of database -->
</jdbc>
<generator>
<database>
<name>org.jooq.util.mysql.MySQLDatabase</name>
<includes>juice_task|juice_framework</includes>
<inputSchema>juice</inputSchema> <!-- schema name -->
<outputSchema></outputSchema>
<outputSchemaToDefault>true</outputSchemaToDefault>
</database>
<generate>
<pojos>true</pojos>
<!--<springAnnotations>true</springAnnotations>-->
<!--<validationAnnotations>true</validationAnnotations>-->
</generate>
<target>
<packageName>com.hujiang.jooq.juice</packageName>
<directory>target/generated-sources/jooq-mysql</directory>
</target>
</generator>
</configuration>
修改以下内容,将4,5中内容修改为数据库安装时的配置信息。
4.juice-rest/src/main/resources/config/application-dev.properties
spring.datasource.url=jdbc:mysql://your_ip:port/juice?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
spring.datasource.username=user
spring.datasource.password=password
5.juice-service/src/main/resources/application-dev.properties
db.url=jdbc:mysql://your_ip:port/juice?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
db.user=user
db.password=password
- 安装Redis3.0以上版本
修改以下内容,将1,2内容修改为Redis安装时的配置信息。
1.juice-rest/src/main/resources/config/application-dev.properties
spring.redis.host=redis_ip
spring.redis.port=redis_port
spring.redis.password=
2.juice-service/src/main/resources/application-dev.properties
redis.host=redis_ip
redis.port=redis_port
redis.password=
在项目根目录执行mvn clean install -U编译项目,编译后产生juice-service和juice-rest2个jar包。
项目启动:
* java -Dsystem.environment=dev -jar juice-service.jar
* java -Dspring.profiles.active=dev -jar juice-rest.jar
创建任务步骤:
- 开发能够使用Docker启动的任务(主业务逻辑)并PUSH到Docker镜像仓库。
- 调用Juice API发起任务
- 等待回调结果,或主动fetch结果
Juice最适合运行Docker任务,通常做法将Jar包打入一个Docker镜像,提交此镜像到dockerhub上,提交一个Container模式的任务到到Juice,其中参数dockerImage为Docker镜像名。
Juice会自动的寻找一个合适的Agent来执行此任务,调用方不必关心在哪个Host上执行,而只需要关心任务是否执行成功即可。
QQ group:554271921