Elastic-Job-Cloud 微信h5牛牛房卡网站开发源码下载分析

环境要求

1、微信h5牛牛房卡网站开发(Q1687054422) 下载

2、Eclipse IDE for Java EE Mars 2 (4.5.2) 下载

3、Apache Maven 3.3+ 下载

4、MySql 5.7+ 下载

云作业App配置类

CloudAppConfiguration,云作业App配置。实现代码如下:


public final class CloudAppConfiguration {
/**
* 应用名
*/
private final String appName;
/**
* 应用包地址
*/
private final String appURL;
/**
* 应用启动脚本
*/
private final String bootstrapScript;
/**
* cpu 数量
*/
private double cpuCount = 1;
/**
* 内存 大小
*/
private double memoryMB = 128;
/**
* 每次执行作业时是否从缓存中读取应用。禁用则每次执行任务均从应用仓库下载应用至本地
*/
private boolean appCacheEnable = true;
/**
* 常驻作业事件采样率统计条数,默认不采样全部记录。
* 为避免数据量过大,可对频繁调度的常驻作业配置采样率,即作业每执行N次,才会记录作业执行及追踪相关数据
*/
private int eventTraceSamplingCount;
}

  • 在 Elastic-Job-Lite 里,打包作业,部署到服务器里启动。而在 Elastic-Job-Cloud 里,打包作业上传至可下载的地址。作业被调度时,Mesos 会从 appURL 下载应用包,
  • 操作云作业App配置

    云作业App配置有多种操作:

    1. 添加 / 更新 / 删除
    2. 开启 / 禁用

    有两种方式进行操作,以添加举例子:

    • 调用 HTTP 接口:

      
      
      curl -l -H "Content-type: application/json" -X POST -d '{"appName":"foo_app","appURL":"http://app_host:8080/yourJobs.gz","cpuCount":0.1,"memoryMB":64.0,"bootstrapScript":"bin/start.sh","appCacheEnable":true,"eventTraceSamplingCount":0}' http://elastic_job_cloud_host:8899/api/app
    • 运维平台

      Elastic-Job-Cloud 微信h5牛牛房卡网站开发源码下载分析

    运维平台是对调用 HTTP 接口的UI封装,实现代码如下:

    
    
    // CloudAppRestfulApi
    @Path("/app")
    public final class CloudAppRestfulApi {
    /**
    * 注册应用配置.
    *
    * @param appConfig 应用配置
    */
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public void register(final CloudAppConfiguration appConfig) {
    Optional<CloudAppConfiguration> appConfigFromZk = appConfigService.load(appConfig.getAppName());
    if (appConfigFromZk.isPresent()) {
    throw new AppConfigurationException("app '%s' already existed.", appConfig.getAppName());
    }
    appConfigService.add(appConfig);
    }
    }
    // CloudAppConfigurationService.java
    /**
    * 添加云作业APP配置.
    *
    * @param appConfig 云作业App配置对象
    */
    public void add(final CloudAppConfiguration appConfig) {
    regCenter.persist(CloudAppConfigurationNode.getRootNodePath(appConfig.getAppName()), CloudAppConfigurationGsonFactory.toJson(appConfig));
    }
    // CloudAppConfigurationNode.JAVA
    public final class CloudAppConfigurationNode {
    public static final String ROOT = "/config/app";
    private static final String APP_CONFIG = ROOT + "/%s"; // %s = ${APP_NAME}
    }
    • CloudAppRestfulApi,云作业应用的REST API,实现了云作业App配置的多种操作的 HTTP 接口。
    • CloudAppConfigurationService,云作业App配置服务,实现了云作业应用的存储功能。
    • 调用 AppConfigService#add(...) 方法,存储 CloudAppConfiguration 到注册中心( Zookeeper )的持久数据节点${NAMESPACE}/config/app/${APP_NAME},JSON 格式化对象。使用 zkClient 查看如下: