网站的提交重置按钮怎么做,上海网站建设基础,网站密码管理制度,高端网站建设企业简介
分布式任务调度 SchedulerX 是阿里巴巴基于 Akka 架构自研的的分布式任务调度平台#xff0c;今天正式登陆阿里云容器服务Kubernetes应用目录#xff0c;支持用户以云原生的方式获取定时、工作流任务编排、分布式批量调度等功能#xff0c;同时具有高可靠、海量任务、…简介
分布式任务调度 SchedulerX 是阿里巴巴基于 Akka 架构自研的的分布式任务调度平台今天正式登陆阿里云容器服务Kubernetes应用目录支持用户以云原生的方式获取定时、工作流任务编排、分布式批量调度等功能同时具有高可靠、海量任务、秒级调度能力Schedulerx详细信息请查看产品文档了解更多。 本文将带您快速了解如何在阿里云容器服务Kubernetes上使用Schedulerx让您在5min内以云原生的方式获得强大的任务调度能力。
前提条件
创建Kubernetes集群开通EDAS免费EDAS组件中心开通Schedulerx组件免费
安装SchedulerX任务调度组件
登录容器服务Kubernetes 版控制台在左侧导航栏选择市场 应用目录在右侧选中 ack-schedulerx 进入ack-schedulerx安装页面点击参数标签页填写以下参数 controller.cluster_idKubernetes集群id controller.region_idregion id目前支持的region如下 cn-shanghaicn-beijingcn-hangzhoucn-shenzhen 检查安装结果 CRDs安装正确运行命令“kubectl get crd | grep schedulerx”应该打印出3个CRD分别是 xgroups.schedulerx.alibabacloud.comxcronjobs.schedulerx.alibabacloud.comxagentpools.schedulerx.alibabacloud.comController安装正确运行命令“kubectl get pods -n schedulerx-system”应该有一个运行状态为Running的pod
核心概念
用户使用Schedulerx需要理解3个概念
分组
具有两个功能
客户端的组织单位任务的组织单位
任务
调度单位用户需要创建任务配置所属分组
客户端
任务执行节点用户需要引入Schedulerx客户端实现对应Java任务处理接口配置所属分组启动名为SchedulerxWorker的Agent。
三者的关系就是任务只能调度到对应分组的客户端比如我们创建分组group-sample在该分组下创建任务job-sample同时配置所属分组为group-sample来启动客户端agent1, agent2, agent3那么job-sample就会调度到agent1, agent2, agent3上面运行。
更多概念见名词解释。
创建分组
CRD信息
ack-schedulerx提供CRD创建分组信息如下
GVK信息
groupversionkind信息如下
apiVersionschedulerx.alibabacloud.com/v1alpha1kind: XGroup
spec信息
参数名类型默认值是否必填说明appNamestring无必填应用名用户自定义用于后续管理
例子
创建xgroup.yaml文件包含以下内容
apiVersion: schedulerx.alibabacloud.com/v1alpha1
kind: XGroup
metadata:name: xgroup-sample
spec:appName: ackApp
在Kubernetes中运行以下命令
kubectl apply -f xgroup.yaml
查看xgroup资源
kctl get xgroup xgroup-sample -o yaml
打印结果如下
apiVersion: schedulerx.alibabacloud.com/v1alpha1
kind: XGroup
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{apiVersion:schedulerx.alibabacloud.com/v1alpha1,kind:XGroup,metadata:{annotations:{},name:xgroup-sample,namespace:default},spec:{appName:ackApp}}creationTimestamp: 2019-09-19T04:21:12Zfinalizers:- GroupCleanupgeneration: 1name: xgroup-samplenamespace: defaultresourceVersion: 143176160selfLink: /apis/schedulerx.alibabacloud.com/v1alpha1/namespaces/default/xgroups/xgroup-sampleuid: e9a1fb81-da94-11e9-a156-be9f1a43fbb7
spec:appName: ackApp
status:appGroupId: 283conditions:- lastTransitionTime: 2019-09-19T04:21:12ZlastUpdateTime: 2019-09-19T04:21:12Zreason: CreateGroupSuccessstatus: Truetype: Ready
看到status中conditions中Ready为true表示创建成功此时可以登录应用分组管理控制台查看分组创建情况 注意事项
分组下如果任务数不为0或者客户端数量不为0无法删除分组分组一旦创建不允许更新如果需要更新请删除后创建
创建/更新/删除任务
CRD信息
ack-schedulerx提供CRD创建/更新/删除任务创建和更新都是apply自定义资源删除就是删除该资源CRD信息如下
GVK信息
groupversionkind信息如下
apiVersionschedulerx.alibabacloud.com/v1alpha1kind: XCronJob
spec信息
参数名类型默认值是否必填说明groupstring无是该任务所属分组名jobTypestringjava否任务类型指实现任务的编程语言当前支持 java, python, shell, gojobProcessorstring无否有条件任务实现全限定类名如果jobType java 该字段必填contentstring无否有条件任务实现代码如果jobType ! java该 字段必填executeModestringstandalone否任务执行模式当前支持standalone, broadcast, parallel, grid, batch具体意思见执行模式文档demo程序见descriptionstring无否任务描述timeTypeint1否任务调度表达式类型当前支持cron(1)fix_rate(3), second_delay(4)timeExpressionstring无是任务调度表达式比如 cron: 0 0 2 ? 要确保频率大于分钟级; fix_rate: 30(0) 单位是s, 每30s运行一次; second_delay: 2(1-60) 单位是s, 上次运行结束后延迟2s运行下次parametersstring无否任务参数可以在任务运行时从上下文获取maxConcurrencyint1否最大同时运行任务实例数默认是1超过该并发度的调度实例会被忽略retryMaxAttemptsint0否失败重试次数默认为0不重置retryIntervalint30否失败重试间隔单位s默认30s
例子
创建xcronjob.yaml文件包含以下内容
apiVersion: schedulerx.alibabacloud.com/v1alpha1
kind: XCronJob
metadata:name: xcronjob-sample
spec:group: xgroup-samplejobType: javajobProcessor: processor.SimpleJobProcessorexecuteMode: standalonetimeExpression: 0 0 2 * * ?
可以看到指定的group是刚刚创建的group默认使用cron调度表达式java任务类型处理的接口类名是processor.SimpleJobProcessor在Kubernetes中运行以下命令
kubectl apply -f xcronjob.yaml
查看xcronjob资源
kctl get xcronjob xcronjob-sample -o yaml
打印结果如下
apiVersion: schedulerx.alibabacloud.com/v1alpha1
kind: XCronJob
metadata:creationTimestamp: 2019-09-19T06:33:13Zfinalizers:- JobCleanupgeneration: 1name: xcronjob-samplenamespace: defaultownerReferences:- apiVersion: schedulerx.alibabacloud.com/v1alpha1blockOwnerDeletion: truecontroller: truekind: XGroupname: xgroup-sampleuid: e9a1fb81-da94-11e9-a156-be9f1a43fbb7resourceVersion: 143570391selfLink: /apis/schedulerx.alibabacloud.com/v1alpha1/namespaces/default/xcronjobs/xcronjob-sampleuid: 5b5e6e94-daa7-11e9-a76d-4af3350b44d3
spec:executeMode: standalonegroup: xgroup-samplejobProcessor: processor.SimpleJobProcessorjobType: javatimeExpression: 0 0 2 * * ?
status:conditions:- lastTransitionTime: 2019-09-19T06:33:13ZlastUpdateTime: 2019-09-19T06:33:14Zreason: JobUpdateSuccessstatus: Truetype: ReadyjobId: 1304
看到status中conditions中Ready为true表示创建成功此时可以登录任务管理控制台查看任务创建情况jobId可以方便后续在控制台进行任务和执行历史的搜索 创建/更新/删除客户端
CRD信息
ack-schedulerx提供CRD创建/更新/删除客户端创建和更新都是apply自定义资源删除就是删除该资源CRD信息如下
GVK信息
groupversionkind信息如下
apiVersionschedulerx.alibabacloud.com/v1alpha1kind: XAgentPool
spec信息
参数名类型默认值是否必填说明groupstring无是该任务所属分组名replicasint无是执行器个数templatePodSpec无是任务执行器Pod模板
客户端开发
程序开发
开发Schedulerx客户端主要做2件事
初始化 SchedulerxWorker新建实现任务调度的类
初始化SchedulerxWorker
针对不同应用在初始化 SchedulerxWorker 的时候会有所区别下面分别说明
1、独立Java和Spring应用
1在应用程序的pom.xml文件中添加 SchedulerxWorker 依赖
dependency
groupIdcom.aliyun.schedulerx/groupId
artifactIdschedulerx2-worker/artifactId
version${schedulerx2.version}/version
/dependency
其中${schedulerx2.version}版本见版本说明使用ack-schedulerx需要至少使用1.0.9版本。
2初始化SchedulerxWorker或者作为一个bean注入
private static void initSchedulerxWorker() throws Exception {SchedulerxWorker schedulerxWorker new SchedulerxWorker();schedulerxWorker.init();}
2、Springboot应用
1在应用程序的pom.xml文件中添加 SchedulerxWorker 依赖
dependency
groupIdcom.aliyun.schedulerx/groupId
artifactIdschedulerx2-spring-boot-starter/artifactId
version${schedulerx2.version}/version
/dependency
其中${schedulerx2.version}版本见版本说明使用ack-schedulerx需要至少使用1.0.9版本。
2初始化 SchedulerxWorker
新建实现任务调度的类
package processor;import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import com.alibaba.schedulerx.worker.processor.ProcessResult;/*** author yanxun on 2019/9/2.*/
public class SimpleJobProcessor extends JavaProcessor {Overridepublic ProcessResult process(JobContext context) throws Exception {System.out.println(hello schedulerx2.0);return new ProcessResult(true);}
}
更多类型见Demo示例。
镜像制作
打包上面程序启动Schedulerx即可下面是一个Dockerfile例子
FROM openjdk:8-jdk-alpine
COPY ./target/schedulerx-k8s-demo-1.0-SNAPSHOT-spring-boot.jar app.jar
ENTRYPOINT [java,-jar,/app.jar]
为方便大家快速体验我们已经将例子中的镜像上传供大家使用
registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latest
例子
创建xagentpool.yaml文件包含以下内容
apiVersion: schedulerx.alibabacloud.com/v1alpha1
kind: XAgentPool
metadata:name: xagentpool-sample
spec:group: xgroup-samplereplicas: 2template:containers:- name: standaloneimage: registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latest
可以看到指定的group是刚刚创建的group运行两个执行器执行器镜像为image该image即客户端镜像。
在Kubernetes中运行以下命令
kubectl apply -f xagentpool.yaml
查看xagentpool资源
kctl get xagentpool xagentpool-sample -o yaml
打印结果如下
apiVersion: schedulerx.alibabacloud.com/v1alpha1
kind: XAgentPool
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{apiVersion:schedulerx.alibabacloud.com/v1alpha1,kind:XAgentPool,metadata:{annotations:{},name:xagentpool-sample,namespace:default},spec:{group:xgroup-sample,replicas:2,template:{containers:[{image:registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latest,name:standalone}]}}}creationTimestamp: 2019-09-25T10:11:39Zgeneration: 1name: xagentpool-samplenamespace: defaultownerReferences:- apiVersion: schedulerx.alibabacloud.com/v1alpha1blockOwnerDeletion: truecontroller: truekind: XGroupname: xgroup-sampleuid: c920a50b-df7c-11e9-a76d-4af3350b44d3resourceVersion: 170986882selfLink: /apis/schedulerx.alibabacloud.com/v1alpha1/namespaces/default/xagentpools/xagentpool-sampleuid: dd83910f-df7c-11e9-a156-be9f1a43fbb7
spec:group: xgroup-samplereplicas: 2template:containers:- image: registry.cn-shanghai.aliyuncs.com/schedulerx/demo:latestname: standaloneresources: {}
status:conditions:- lastTransitionTime: 2019-09-25T10:11:40ZlastUpdateTime: 2019-09-25T10:11:40Zreason: update deployment sucessstatus: Truetype: Ready
看到status中conditions中Ready为true表示创建成功实际上每个agentPool的创建都会在相同命名空间下创建名为[agentPoolName]-deployment的Deployment可以自行查看除此之外可以登录应用分组管理控制台查看执行器启动情况是否正常连接到schedulerx客户端可以看到已经正常启动两个客户端 卸载SchedulerX任务调度组件
容器服务控制台左侧导航栏中“应用 发布”菜单选择Helm标签页找到发布名称是ack-schedulerx的数据点击对应的删除即可有两点注意一下
注意在删除之前请确保集群内的所有XGroupXCronJobXAgentPool类型资源都已经删除完毕否则无法删除CRDs导致下次安装出现问题。XGroup删除之后对应的schedulerx应用分组不会自动删除需要用户到应用分组管理控制台手动删除。
更多
Schedulerx还支持报警工作流调度运行实例查看更多功能请查看Schedulerx控制台使用文档登录Schedulerx控制台进行配置。
原文链接 本文为云栖社区原创内容未经允许不得转载。