您的位置:首页 > 运维架构 > 网站架构

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

2018-03-31 15:14 597 查看

环境要求

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配置有多种操作:添加 / 更新 / 删除
开启 / 禁用
有两种方式进行操作,以添加举例子:调用 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
运维平台


运维平台是对调用 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.JAVApublic 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 查看如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: