Skip to content

goodluckwgw/Juice

This branch is 11 commits behind HujiangTechnology/Juice:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1e124b2 · Apr 19, 2017

History

7 Commits
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017
Apr 19, 2017

Repository files navigation

For ENGLISH

Why Juice

juice是沪江(hujiang)学习系统项目组(LMS)所开发的一套基于Mesos Framework的分布式任务调度云系统,基于此系统,可以实现任何作业型任务的调度工作。

耗时计算型任务处理在沪江一直是个持续的需求,例如多媒体转码,Map Reduce,密集计算等等任务。在Juice出现以前,各个项目组各显神通,开发着不同的任务处理系统,不但耗费人力,还特别耗费服务器。 Juice利用Mesos集群空闲的计算能力,负责统一的接口返回和任务查询功能,其优点如下:

  • 基于Mesos集群,最大程度利用空闲资源完成耗时计算
  • 异步调度,并提供结果查询和回调两种方法获取执行结果
  • 分布式管理,所有耗时任务都在资源池中无状态调度。
  • 任务查询,目前只开放通过接口查询任务的状态和结果。
Latest Release Version:1.0-OPEN

Getting Started

Requirements

Install

  • 安装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

How To Use Juice###

创建任务步骤:

  • 开发能够使用Docker启动的任务(主业务逻辑)并PUSH到Docker镜像仓库。
  • 调用Juice API发起任务
  • 等待回调结果,或主动fetch结果
Juice最适合运行Docker任务,通常做法将Jar包打入一个Docker镜像,提交此镜像到dockerhub上,提交一个Container模式的任务到到Juice,其中参数dockerImage为Docker镜像名。
Juice会自动的寻找一个合适的Agent来执行此任务,调用方不必关心在哪个Host上执行,而只需要关心任务是否执行成功即可。

About

A Distribution Task Management System

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.9%
  • Shell 0.1%