Elastic-Job中常见问题
2016-09-26 12:07
169 查看
原文地址:http://dangdangdotcom.github.io/elastic-job/post/faq/
回答:
回答:
我们并未将
回答:
回答:
分布式问题非常难于调试和重现,为此
如果您怀疑某些场景出现问题,可参照dump文档将作业运行时信息发给我们、提交
回答:
作业启动成功后修改作业名称视为新作业,原作业废弃。
同一台作业服务器只能运行一个相同的作业实例,因为作业运行时是按照
一旦有服务器波动,或者修改分片项,将会触发重新分片;触发重新分片将会导致运行中的流式处理的作业在执行完本次作业后不再继续执行,等待分片结束后再恢复正常。
开启
回答:
动态添加作业这个概念每个人理解不尽相同。
但注册中心与作业部署机无从属关系,注册中心并不能控制将单点的作业分发至其他作业机,也无法将远程服务器未启动的作业启动。
但需要将作业打包上传,并调用
综上所述,
回答:
回答:
根据测试,使用
回答:
基于扩展性提升,概念明晰和命名规范化的考虑,
重新定义
配置分为
作业从继承抽象类改为接口化,提供
重新定义
删除
作业的
删除非核心功能
删除
删除n分钟内正确错误数量统计功能,未来由更加全面的作业事件追踪功能替换。
删除内嵌的
废弃过时
删除废弃作业类,包括
删除废弃作业调度器类,包括
不再支持非
1. 阅读源码时为什么会出现编译错误?
回答:Elastic-Job使用
lombok实现极简代码。关于更多使用和安装细节,请参考lombok官网。
2. 使用Spring
命名空间时在网上相应地址找不到xsd
?
回答:Spring命名空间使用规范并未强制要求将
xsd文件部署至公网地址,只需在
jar包的
META-INF\spring.schemas配置,并在
jar包中相关位置存在即可。
我们并未将
http://www.dangdang.com/schema/ddframe/reg/reg.xsd和
http://www.dangdang.com/schema/ddframe/job/job.xsd部署至公网,但并不影响使用。相关问题请参考
Spring命名空间规范。
3. 为什么在代码或Spring
配置文件中修改了作业配置,注册中心配置却没有更新?
回答:Elastic-Job-Lite采用无中心化设计,若每个客户端的配置不一致,不做控制的话,最后一个启动的客户端配置将会成为注册中心的最终配置。
Elastic-Job-Lite提出了
overwrite概念,可通过
JobConfiguration或
Spring命名空间配置。
overwrite=true即允许客户端配置覆盖注册中心,反之则不允许。如果注册中心无相关作业的配置,则无论
overwrite是否配置,客户端配置都将写入注册中心。
4. 怀疑Elastic-Job-Lite
在分布式环境中有问题,但无法重现又不能在线上环境调试,应该怎么做?
回答:分布式问题非常难于调试和重现,为此
Elastic-Job-Lite提供了
dump命令。
如果您怀疑某些场景出现问题,可参照dump文档将作业运行时信息发给我们、提交
issue或发至
IP等敏感信息过滤,
dump出来的信息可在公网安全传输。
5. Elastic-Job
有何使用限制?
回答:Elastic-Job-Lite和
Elastic-Job-Cloud的共同使用限制:
作业启动成功后修改作业名称视为新作业,原作业废弃。
Elastic-Job-Lite的使用限制:
同一台作业服务器只能运行一个相同的作业实例,因为作业运行时是按照
IP注册和管理的。
一旦有服务器波动,或者修改分片项,将会触发重新分片;触发重新分片将会导致运行中的流式处理的作业在执行完本次作业后不再继续执行,等待分片结束后再恢复正常。
开启
monitorExecution才能实现分布式作业幂等性(即不会在多个作业服务器运行同一个分片)的功能,但
monitorExecution对短时间内执行的作业(如每5秒一触发)性能影响较大,建议关闭并自行实现幂等性。
6. 是否支持动态添加作业?
回答:动态添加作业这个概念每个人理解不尽相同。
elastic-job-lite为
jar包,由开发或运维人员负责启动。启动时自动向注册中心注册作业信息并进行分布式协调,因此并不需要手工在注册中心填写作业信息。
但注册中心与作业部署机无从属关系,注册中心并不能控制将单点的作业分发至其他作业机,也无法将远程服务器未启动的作业启动。
elastic-job-lite并不会包含
ssh免密管理等功能。
elastic-job-cloud为
mesos框架,由
mesos负责作业启动和分发。
但需要将作业打包上传,并调用
elastic-job-cloud提供的
REST API写入注册中心。 打包上传属于部署系统的范畴
elastic-job-cloud并未涉及。
综上所述,
elastic-job已做了基本动态添加功能,但无法做到真正意义的完全自动化添加。
7. 使用Spring
占位符出错?
回答:Elastic-Job的
Spring命名空间以及占位符仅支持
Spring 4及其以上版本。低版本的
Spring不支持这些功能。
8. Zookeeper
版本不是3.4.6
会有什么问题?
回答:根据测试,使用
3.3.6版本的
Zookeeper在使用
Curator 2.10.0的
CuratorTransactionFinal的
commit时会导致死锁。
9. Elastic-Job 2.0.0
版本API
改动较大,升级时需要注意哪些问题?
回答:基于扩展性提升,概念明晰和命名规范化的考虑,
elastic-job 2.100版本决定抛弃原有包袱的束缚,重新定义了
JAVA API,
Spring命名空间并且删除了已废弃的
API。
重新定义
JAVA API
配置分为
Core,
Type和
Root3个层级,使用类装饰者模式创建。
作业从继承抽象类改为接口化,提供
SimpleJob,
DataflowJob和
ScriptJob接口。
DataflowJob作业类型简化,去除批量和逐条处理分别,统一使用批量处理,
THROUGHPUT和
SEQUENCE作业不再提供单独接口,而是统一通过配置方式实现。
重新定义
Spring命名空间
删除
<job:bean>,细化为
<job:simple>,
<job:dataflow>,
<job:script>具体类型。
Spring命名空间属性由驼峰式修正为
Spring命名空间标准命名规范(多单词以
-分隔)。
作业的
Spring命名空间属性
regCenter变更为
registry-center-ref。
删除非核心功能
删除
offset功能。
删除n分钟内正确错误数量统计功能,未来由更加全面的作业事件追踪功能替换。
删除内嵌的
Zookeeper注册中心,改为在
example启动时开启内嵌注册中心,而非在
Elastic-Job的核心代码中开启。
废弃过时
API
删除废弃作业类,包括
AbstractOneOffElasticJob,
AbstractPerpetualElasticJob和
AbstractSequencePerpetualElasticJob。
删除废弃作业调度器类,包括
com.dangdang.ddframe.job.schedule.JobController和
com.dangdang.ddframe.job.spring.schedule.SpringJobController。
不再支持非
Spring命名空间通过
xml方式配置
bean,如有需要请使用
Spring Java Config。
相关文章推荐
- CentOS Unknown host问题导致Elastic Job项目启动出错
- Elastic-Job-Lite 项目编译问题
- Elastic-Job分布式环境中有问题的解决方法
- Elastic-Job任务重复执行问题解决
- CentOS7上elasticsearch5.0 常见问题
- ODAC使用指南 (一)ODAC常见问题集
- [导入]转贴:C++语言常见问题解:#94 ~ #104
- 一个典型的例子解决常见的高级Windows程序设计问题
- VC常见入门问题总结(二)
- Microsoft .NET 框架常见问题
- [导入]转贴:C++语言常见问题解:#54 ~ #80
- Windows Server 2003 常见问题(一)
- JS版常见问题(一)层遇到select框时?
- JS版常见问题(二)兼容版本的无提示关闭窗口!
- SQL中与IP相关的常见问题
- WINAMP SDK 常见问题回答(FAQ)
- VC++初学者常见问题解惑
- Microsoft .NET 框架常见问题
- [导入]转贴:C++语言常见问题解:#1 ~ #15
- XML 中的常见问题