xuxueli 8 年 前
コミット
2190120de5
共有4 個のファイルを変更した174 個の追加167 個の削除を含む
  1. 2 2
      README.md
  2. 88 85
      doc/XXL-JOB-English-Documentation.md
  3. 83 79
      doc/XXL-JOB官方文档.md
  4. 1 1
      xxl-job-admin/src/main/webapp/WEB-INF/template/help.ftl

+ 2 - 2
README.md ファイルの表示

@@ -37,8 +37,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
37 37
 
38 38
 
39 39
 ## Documentation
40
-- [中文文档](https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB官方文档.md)
41
-- [English Documentation](https://github.com/xuxueli/xxl-job/blob/master/doc/XXL-JOB-English-Documentation.md)
40
+- [中文文档](http://www.xuxueli.com/xxl-job/)
41
+- [English Documentation](http://www.xuxueli.com/xxl-job/en/)
42 42
 
43 43
 
44 44
 ## Features

+ 88 - 85
doc/XXL-JOB-English-Documentation.md ファイルの表示

@@ -1,4 +1,4 @@
1
-# 《A lightweight distributed task scheduling framework. "XXL-JOB"
1
+# 《Distributed task scheduling framework XXL-JOB
2 2
 
3 3
 [![Build Status](https://travis-ci.org/xuxueli/xxl-job.svg?branch=master)](https://travis-ci.org/xuxueli/xxl-job)
4 4
 [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/)
@@ -41,8 +41,9 @@ In 2015 - November, XXL-JOB finally RELEASE the first big version of V1.0, then
41 41
 In 2015 - December, I will XXL-JOB published to our internal knowledge base, and get internal colleagues recognized.
42 42
 In 2016 - 01 months, my company started XXL-JOB internal access and custom work, in this thank Yuan and Yin two colleagues contribution, but also to thank the internal other attention and support colleagues.
43 43
 In 2017-05-13, the link of "let the code run" in "[the 62nd source of open source China Genesis](https://www.oschina.net/event/2236961)" held in Shanghai,, I stepped on and made a speech about the XXL-JOB, five hundred spectators in the audience reacted enthusiastically ([pictorial review](https://www.oschina.net/question/2686220_2242120)).
44
-#### My company have access to XXL-JOB, internal alias "Ferrari" (Ferrari based on XXL-JOB V1.1 version customization, new access application recommended to upgrade the latest version).
44
+> Our company have access to XXL-JOB, internal alias "Ferrari" (Ferrari based on XXL-JOB V1.1 version customization, new access application recommended to upgrade the latest version).
45 45
 According to the latest statistics, from 2016-01-21 to 2017-07-07 period, the system has been scheduled about 600,000 times, outstanding performance. New access applications recommend the latest version, because after several major updates, the system's task model, UI interaction model and the underlying scheduling communication model has a greater optimization and upgrading, the core function more stable and efficient.
46
+
46 47
 So far, XXL-JOB has access to a number of companies online product line, access to scenes such as electronic commerce, O2O business and large data operations, as of 2016-07-19, XXL-JOB has access to the company But not limited to:
47 48
 
48 49
 	- 1、大众点评;
@@ -82,11 +83,17 @@ So far, XXL-JOB has access to a number of companies online product line, access
82 83
     - 35、北京诺亦腾科技有限公司
83 84
     - 36、增长引擎(北京)信息技术有限公司
84 85
 	- ……
85
-	
86
+
87
+> The company that access and use this product is welcome to register at the [address](https://github.com/xuxueli/xxl-job/issues/1 ), only for product promotion. 
88
+
86 89
 Welcome everyone's attention and use, XXL-JOB will also embrace changes, sustainable development.
87 90
 
88 91
 ### 1.4 Download
89 92
 
93
+#### Documentation
94
+- [中文文档](http://www.xuxueli.com/xxl-job/)
95
+- [English Documentation](http://www.xuxueli.com/xxl-job/en/)
96
+
90 97
 #### Source repository address (The latest code will be released in the two git warehouse in the same time)
91 98
 
92 99
 Source repository address | Release Download
@@ -104,19 +111,15 @@ Source repository address | Release Download
104 111
 </dependency>
105 112
 ```
106 113
 
107
-#### Blog address
108
-
109
-- [oschina address](http://my.oschina.net/xuxueli/blog/690978)
110
-- [cnblogs address](http://www.cnblogs.com/xuxueli/p/5021979.html)
111
-
112 114
 #### Technical exchange group (technical exchange only)
113 115
 
114
-- Group 6:399758605
115
-- Group 5:138274130    (Group is full, please add group 6)
116
-- Group 4:464762661    (Group is full, please add group 6)
117
-- Group 3:242151780    (Group is full, please add group 6)
118
-- Group 2:438249535    (Group is full, please add group 6)
119
-- Group 1:367260654    (Group is full, please add group 6)
116
+- Tecent QQ Group 6:399758605
117
+- Tecent QQ Group 5:138274130
118
+- Tecent QQ Group 4:464762661
119
+- Tecent QQ Group 3:242151780
120
+- Tecent QQ Group 2:438249535
121
+- Tecent QQ Group 1:367260654
122
+- [Gitter](https://gitter.im/xuxueli/xxl-job)
120 123
 
121 124
 ### 1.5 Environment
122 125
 - JDK:1.7+
@@ -399,7 +402,7 @@ Actually it is a python script fragment.
399 402
 
400 403
 
401 404
 ## 4. Task Management
402
-#### 4.0 configure executor
405
+### 4.0 configure executor
403 406
 click"执行器管理" on the left menu,it will go to the page as shown below:
404 407
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/12223509_Hr2T.png "在这里输入图片标题")
405 408
 
@@ -409,7 +412,7 @@ click"执行器管理" on the left menu,it will go to the page as shown below:
409 412
 If you want to create a new executor,please click "+新增执行器" button: 
410 413
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/12223617_g3Im.png "在这里输入图片标题")
411 414
 
412
-#### Description of executor attributes
415
+### Description of executor attributes
413 416
 
414 417
     AppName: the unique identity of the executor cluster,executor will registe automatically and periodically by appName so that it can be scheduled.
415 418
     名称: the name of ther executor,it is used to describe the executor.
@@ -419,29 +422,29 @@ If you want to create a new executor,please click "+新增执行器" button:
419 422
         手动录入:fill in executor address manually and it will be used by schedule center, multiple address separated by commas. 
420 423
     机器地址:only effective when "注册方式" is "手动录入",support fill in executor address manually.
421 424
 
422
-#### 4.1 create new task
425
+### 4.1 create new task
423 426
 Go to task management list page,click “新增任务” button on the upper right corner,on the pop-up window“新增任务”page configure task property and save.learn more info please go and see "3,task details".
424 427
 
425
-#### 4.2 edit task
428
+### 4.2 edit task
426 429
 Go to task management list page and choose the task you want to edit ,click”编辑”button on the right side of the task,on the pop-up window “编辑任务”page edit task property and save.
427 430
 
428
-#### 4.3 edit GLUE source code
431
+### 4.3 edit GLUE source code
429 432
 
430 433
 Only fit to GLUE task.
431 434
 
432 435
 choose the task you want to edit and click” GLUE”button on the right side of the task, it will go to the Web IDE page of GLUE task,then you can edit task source code on this page.you can read "3.2 GLUE模式(Java)" for more info.
433 436
 
434
-#### 4.4 pause/recover task
437
+### 4.4 pause/recover task
435 438
 You can pause or recover task but it just fit to follow up schedule trigger and won’t affect scheduled tasks,if you want to stop tasks which has been triggered,please go and see “4.8 stop the running task”
436 439
 
437 440
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24130337_ZAhX.png "在这里输入图片标题")
438 441
 
439
-#### 4.5 manually trigger
442
+### 4.5 manually trigger
440 443
 You can trigger a task manually by Click “执行”button,it won’t affect original scheduling rules.
441 444
 
442 445
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24133348_Z5wp.png "在这里输入图片标题")
443 446
 
444
-#### 4.6 view schedule log
447
+### 4.6 view schedule log
445 448
 You can view task’s history schedule log by click “日志” button,on the history schedule log list page you can view every time of task’s schedule result,execution result and so on,click “执行日志” button can view the task’s full execute log.
446 449
 
447 450
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24133500_9235.png "在这里输入图片标题")
@@ -461,12 +464,12 @@ You can view task’s history schedule log by click “日志” button,on the h
461 464
         "执行日志"button:click this button you can view task’s execution detail log,go and see chapter 4.7 “view execution log” for more info;
462 465
         "终止任务"button:click this button you can stop the task’s execution thread on this executor,include bloked task instance which didn’t has started;
463 466
 
464
-#### 4.7 view execution log
467
+### 4.7 view execution log
465 468
 Click the “执行日志” button on the right side of the record,you can go to the execution log page,you can view the full execution log of the logic business code, shown as below:
466 469
 
467 470
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/25124816_tvGI.png "在这里输入图片标题")
468 471
 
469
-#### 4.8 stop running tasks
472
+### 4.8 stop running tasks
470 473
 Just fit to running tasks,on the task log list page,click “终止任务” button on the right side of the record, it will send stop command to the executor where the task was executed,finally the task was killed and the task instance execute queue of this task will be clear.
471 474
 
472 475
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24140048_hIci.png "在这里输入图片标题")
@@ -488,26 +491,26 @@ try{
488 491
 If JobHandler start child thread,child thread also must not catch InterruptedException,and it should throw exception.
489 492
 
490 493
 
491
-#### 4.9 delete execution log
494
+### 4.9 delete execution log
492 495
 On the task log list page, after you select executor and task, you can click"删除" button on the right side and it will pop-up "日志清理" window,on the pop-up window you can choose different log delete policy,choose the policy you want to execute and click "确定" button it will delele relative logs:
493 496
 ![输入图片说明](https://static.oschina.net/uploads/img/201705/08210711_Ypik.png "在这里输入图片标题")
494 497
 
495 498
 ![输入图片说明](https://static.oschina.net/uploads/img/201705/08211152_EB65.png "在这里输入图片标题")
496 499
 
497
-#### 4.10 delete task
500
+### 4.10 delete task
498 501
 Click the delete button on the right side of the task,the task will be deteted.
499 502
 
500 503
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24140641_Z9Qr.png "在这里输入图片标题")
501 504
 
502 505
 ## 5. Overall design
503
-#### 5.1 Source directory introduction
506
+### 5.1 Source directory introduction
504 507
     - /doc :documentation and material
505 508
     - /db :db scripts
506 509
     - /xxl-job-admin :schedule and admin center
507 510
     - /xxl-job-core :common core Jar
508 511
     - /xxl-job-executor-samples :executor,Demo project(you can develop on this demo project or adjust your own exist project to executor project)
509 512
 
510
-#### 5.2 configure database
513
+### 5.2 configure database
511 514
 XXL-JOB schedule module is implemented based on Quartz cluster,it’s “database” is extended based on Quartz’s 11 mysql tables.
512 515
 
513 516
 XXL-JOB custom Quartz table structure prefix(XXL_JOB_QRTZ_).
@@ -523,15 +526,15 @@ The added tables as shown below:
523 526
 
524 527
 So XXL-JOB database total has 16 tables.
525 528
 
526
-#### 5.3 Architecture design
527
-##### 5.3.1 Design target
529
+### 5.3 Architecture design
530
+#### 5.3.1 Design target
528 531
 All schedule behavior has been abstracted into “schedule center” common platform , it dosen’t include business logic and just responsible for starting schedule requests.
529 532
 
530 533
 All tasks was abstracted into separate JobHandler and was managed by executors, executor is responsible for receiving schedule request and execute the relative JobHandler business.
531 534
 
532 535
 So schedule and task can be decoupled from each other, by the way it can improve the overall stability and scalability of the system.
533 536
 
534
-##### 5.3.2 System composition
537
+#### 5.3.2 System composition
535 538
 - **Schedule module(schedule center)**:
536 539
     it is responsible for manage schedule info,send schedule request accord task configuration and it is not include an business code.schedule system decouple with the task, improve the overall stability and scalability of the system, at the same time schedule system performance is no longer limited to task modules. 
537 540
     Support visualization, simple and dynamic management schedule information, include create,update,delete, GLUE develop and task alarm and so on, All of the above operations will take effect in real time,support monitor schedule result and execution log and executor failover.
@@ -539,24 +542,24 @@ So schedule and task can be decoupled from each other, by the way it can improve
539 542
     it is responsible for receive schedule request and execute task logic,task module focuses on the execution of the task, Development and maintenance is simpler and more efficient.
540 543
     Receive execution request, end request and log request from schedule center.
541 544
 
542
-##### 5.3.3 Architecture diagram
545
+#### 5.3.3 Architecture diagram
543 546
 
544 547
 ![输入图片说明](https://static.oschina.net/uploads/img/201707/17190028_aEE2.png "在这里输入图片标题")
545 548
 
546
-#### 5.4 Schedule module analysis
547
-##### 5.4.1 Disadvantage of quartz
549
+### 5.4 Schedule module analysis
550
+#### 5.4.1 Disadvantage of quartz
548 551
 Quartz is a good open source project and was often as the first choice for job schedule.Tasks was managed by api in quartz cluster so it can avoid some  disadvantages of single quartz instance,but it also has some disadvantage as shown below:
549 552
     - problem 1:it is not humane while operate task by call apill.
550 553
     - problem 2:it is need to store business QuartzJobBean into database, System Invasion is quite serious.
551 554
     - problem 3:schedule logic and couple with QuartzJobBean in the same project,it will lead a problem in case that if schedule tasks gradually increased and task logic gradually increased,under this situation the performance of the schedule system will be greatly limited by business.
552 555
 XXL-JOB solve above problems of quartz.
553 556
 
554
-##### 5.4.2 RemoteHttpJobBean
557
+#### 5.4.2 RemoteHttpJobBean
555 558
 Under Quartz develop,task logic often was maintained by QuartzJobBean, couple is very serious.in XXL-JOB"Schedule module" and "task module" are completely decoupled,all scheduled tasks in schedule module use the same QuartzJobBean called RemoteHttpJobBean.the params of the tasks was maintained in the extended tables,when trigger RemoteHttpJobBean,it will parse different params and start remote cal l and it wil call relative remote executor.
556 559
 
557 560
 This call module is like RPC,RemoteHttpJobBean provide call proxy functionality,the executor is provided as remote service.
558 561
 
559
-##### 5.4.3 Schedule Center HA(Cluster)
562
+#### 5.4.3 Schedule Center HA(Cluster)
560 563
 It is based on Quartz cluster,databse use Mysql;while QUARTZ task schedule is used in Clustered Distributed Concurrent Environment,all nodes will report task info and store into database.it will fetch trigger from database while execute task,if trigger name and execute time is the same only one node will execute the task.
561 564
 
562 565
 ```
@@ -568,7 +571,7 @@ org.quartz.jobStore.isClustered: true
568 571
 org.quartz.jobStore.clusterCheckinInterval: 1000
569 572
 ```
570 573
 
571
-##### 5.4.4 Schedule threadpool
574
+#### 5.4.4 Schedule threadpool
572 575
 Default threads in the threadpool is 10 so it can avoid task schedule delay because of single thread block.
573 576
 
574 577
 ```
@@ -582,12 +585,12 @@ business logic was executed on remote executor in XXL-JOB,schedule center just s
582 585
 
583 586
 the logic of task in XXL-JOB schedule center is very light and single job average run time alaways under 100ms,(most  is network time consume).so it can use limited threads to support a large mount of job run concurrently, 10 threads configured above can support at least 100 JOB normal execution.
584 587
 
585
-##### 5.4.5 @DisallowConcurrentExecution
588
+#### 5.4.5 @DisallowConcurrentExecution
586 589
 This annotation is not used default by the schedule center of XXL-JOB schedule module, it use concurrent policy default,because RemoteHttpJobBean is common QuartzJobBean,so it greatly improve the capacity of schedule system and decrease the blocked chance of schedule module in the case of multi-threaded schedule.
587 590
 
588 591
 Every schedule module was scheduled and executed parallel in XXL-JOB,but tasks in executor is executed serially and support stop task.
589 592
 
590
-##### 5.4.6 misfire
593
+#### 5.4.6 misfire
591 594
 The handle policy when miss the job’s trigger time.
592 595
 he reason may be:restart service,schedule thread was blocked by QuartzJobBean, threads was exhausted,some task enable @DisallowConcurrentExecution,the last schedule  was blocked and next schedule was missed.
593 596
 
@@ -608,7 +611,7 @@ CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobIn
608 611
 CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
609 612
 ```
610 613
 
611
-##### 5.4.7 log callback service
614
+#### 5.4.7 log callback service
612 615
 When schedule center of the schedule module was deployed as web service, on one side it play as schedule center, on the other side it also provide api service for executor. 
613 616
 
614 617
 The source code location of schedule center’s “log callback api service” as shown below:
@@ -618,7 +621,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
618 621
 
619 622
 Executor will execute task when it receive task execute request.it will notify the task execute result to schedule center when the task is done. 
620 623
 
621
-##### 5.4.8 task HA(Failover)
624
+#### 5.4.8 task HA(Failover)
622 625
 If executor project was deployed as cluster schedule center will known all online executor nodes,such as:“127.0.0.1:9997, 127.0.0.1:9998, 127.0.0.1:9999”.
623 626
 
624 627
 When "路由策略" select "故障转移(FAILOVER)",it will send heart beat check request in order while schedule center start schedule request.  The first alive checked executor node will be selected and send schedule request to it.
@@ -629,7 +632,7 @@ When "路由策略" select "故障转移(FAILOVER)",it will send heart beat chec
629 632
 
630 633
 “调度备注” will display local schedule route path、executor’s "注册方式"、"地址列表" and task’s "路由策略"。Under "故障转移(FAILOVER)" policy, schedule center take first address to do heartbeat detection, heat beat fail will automatically skip, the second address heart beat fail…… until the third address “127.0.0.1:9999” heart beat success, it was selected as target executor, then send schedule request to target executor, now the schedule process is end wait for the executor’s callback execution result.
631 634
 
632
-##### 5.4.9 schedule log
635
+#### 5.4.9 schedule log
633 636
 Every time when task was scheduled in the schedule center it will record a task log, the task log include three part as shown below:
634 637
 
635 638
 - 任务信息:include executor address、JobHandler and executor params,accord these parameters it can locate specific machine and task code that the task will be executed.
@@ -650,7 +653,7 @@ Schedule log stands fo single task schedule, attribute description is as follows
650 653
 - 执行备注:task execute remark info in the executor,such as exception log.
651 654
 - 执行日志:full execution log of the business code during execution of the task,go and see “4.7 view execution log”.
652 655
 
653
-##### 5.4.10 Task dependency
656
+#### 5.4.10 Task dependency
654 657
 principle:every task has a task key in XXL-JOB, every task can configure property “child task Key”,it can match task dependency relationship through task key.
655 658
 
656 659
 When parent task end execute and success, it will match child task dependency accord child task key, it will trigger child task execute once if it matched child task.
@@ -661,12 +664,12 @@ On the task log page ,you can see matched child task and triggered child task’
661 664
 
662 665
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24194212_jOAU.png "在这里输入图片标题")
663 666
 
664
-#### 5.5 Task "run mode" analysis
665
-##### 5.5.1 "Bean模式" task
667
+### 5.5 Task "run mode" analysis
668
+#### 5.5.1 "Bean模式" task
666 669
 Development steps:go and see "chapter 3" . 
667 670
 principle: every Bean mode task is a Spring Bean instance and it is maintained in executor project’s Spring container. task class nedd to add “@JobHander(value="name")” annotation, because executor identify task bean instance in spring container through annotation. Task class nedd to implements interface IJobHandler, task logic code in method execute(), the task logic in execute() method will be executed when executor received a schedule request from schedule center.
668 671
 
669
-##### 5.5.2 "GLUE模式(Java)" task
672
+#### 5.5.2 "GLUE模式(Java)" task
670 673
 Development steps:go and see "chapter 3" .
671 674
 Principle : every "GLUE模式(Java)" task code is a class implemets interface IJobHandler, when executor received schedule request from schedule center these code will be loaded by Groovy classloader and instantiate into a Java object and inject spring bean service declared in this code at the same time(please confirm service and class reference in Glue code exist in executor project), then call the object’s execute() method and execute task logic.
672 675
 
@@ -680,7 +683,7 @@ All supported types of scripts as shown beloes:
680 683
     - python script: python script task will be enabled when select " GLUE模式(Python)"as task run mode.
681 684
     
682 685
 
683
-##### 5.5.4 executor
686
+#### 5.5.4 executor
684 687
 Executor is actually an embedded Jetty server with default port 9999, as shown below(parameter:xxl.job.executor.port).
685 688
 
686 689
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/10174923_TgNO.png "在这里输入图片标题")
@@ -689,7 +692,7 @@ Executor will identify Bean mode task in spring container through @JobHander Whe
689 692
 
690 693
 When executor received schedule request from schedule center, if task type is “Bean模式” it will match bean mode task in Spring container and call it’s execute() method and execute task logic. if task type is “GLUE模式”, it will load Glue code, instantiate a Java object and inject other spring service(notice: the spring service injected in Glue code must exist in the same executor project), then call execute() method and execute task logic. 
691 694
 
692
-##### 5.5.5 task log
695
+#### 5.5.5 task log
693 696
 XXL-JOB will generate a log file for every schedule request, the log info will be recorded by XxlJobLogger.log() method, the log file will be loaded when view log info through schedule center.
694 697
 
695 698
 (history version is implemented by overriding LOG4J’s Appender so it exists dependency restrictions, The way has been discraded in the new version)
@@ -698,17 +701,17 @@ The location of log file can be specified in executor configuration file, defaul
698 701
 
699 702
 When start child thread in JobHandler, child thread will print log in parent JobHandler thread’s execute log in order to trace execute log.
700 703
 
701
-#### 5.6 Communication module analysis
704
+### 5.6 Communication module analysis
702 705
 
703
-##### 5.6.1 A complete task schedule communication process
706
+#### 5.6.1 A complete task schedule communication process
704 707
     - 1,schedule center send http request to executor, and the service in executor in fact is a jetty server with default port 9999.
705 708
     - 2,executor execute task logic.
706 709
     - 3,executor http callback with schedule center for schedule result, the service in schedule center used to receive callback request from executor is a set of api opended to executor.
707 710
 
708
-##### 5.6.2 Encrypt Communication data
711
+#### 5.6.2 Encrypt Communication data
709 712
 When scheduler center send request to executor, it will use RequestModel and ResponseModel object to encapsulate schedule request parameters and response data, these two object will be serialized before communication, data protocol and time stamp will be checked so that achieve data encryption target.
710 713
 
711
-#### 5.7 task register and task auto discover  
714
+### 5.7 task register and task auto discover  
712 715
 Task executor machine property has been canceled from v1.5, instead of task register and auto discovery, get remote machine address dynamic.
713 716
 
714 717
     AppName: unique identify of executor cluster,  executor is minimal unite of task register, every task recognize machine addresses under the executor on which it was binded.
@@ -717,10 +720,10 @@ Task executor machine property has been canceled from v1.5, instead of task regi
717 720
 
718 721
 To ensure system lightweight and reduce learning costs, it did not use Zookeeper as register center, Use DB as register center to do task registration.
719 722
 
720
-#### 5.8 task execute result
723
+### 5.8 task execute result
721 724
 Since v1.6.2, the task execute result is recognized through ReturnT of IJobHandler, it executes success when return value meets the condition "ReturnT.code == ReturnT.SUCCESS_CODE" , or it executes fail, and it can callback error message info to schedule center through ReturnT.msg, so it can control task execute results in the task logic.
722 725
 
723
-#### 5.9 slice broadcat & dynamic slice   
726
+### 5.9 slice broadcat & dynamic slice   
724 727
 When “分片广播” is selected as route policy in executor cluster, one task schedule will broadcast all executor node in cluster to trigger task execute in every executor, pass slice parameter at the same time, so we can develop slice task by slice parameters. 
725 728
 
726 729
 "分片广播"  break the task by the dimensions of executor, support dynamic extend executor cluster so that it can add slice number dynamically to do business process, In case of large amount of data process can significantly improve task processing capacity and speed.
@@ -738,7 +741,7 @@ This feature applies to scenes as shown below:
738 741
 - 1、slice task scene:when 10 executor to handle 10w records,  1w records need to be handled per machine, time-consuming 10 times lower;
739 742
 - 2、Broadcast task scene:broadcast all cluster nodes to execute shell script、broadcast all cluster nodes to update cache.
740 743
 
741
-#### 5.10 AccessToken
744
+### 5.10 AccessToken
742 745
 To improve system security it is need to check security between schedule center and executor, just allow communication between them when AccessToken of each other matched.
743 746
 
744 747
 The AccessToken of scheduler center and executor can be configured by xxl.job.accessToken.
@@ -750,7 +753,7 @@ There are only two settings when communication between scheduler center and exec
750 753
 
751 754
 
752 755
 ## 6 Version update log
753
-#### 6.1 version V1.1.x,New features [2015-12-05]
756
+### 6.1 version V1.1.x,New features [2015-12-05]
754 757
 **【since V1.1.x,XXL-JOB was used by company hiring me,alias Ferrari inner company,the latest version is recommended for new project】**
755 758
 - 1、simple:support CRUD operation through Web page, simple and one minute to get started;
756 759
 - 2、dynamic:support dynamic update task status,pause/recover task and effective in real time;
@@ -761,7 +764,7 @@ There are only two settings when communication between scheduler center and exec
761 764
 - 7、support for custom parameters;
762 765
 - 8、Support pause task execution remotely .
763 766
 
764
-#### 6.2 version V1.2.x,New features [2016-01-17]
767
+### 6.2 version V1.2.x,New features [2016-01-17]
765 768
 - 1、support task group;
766 769
 - 2、suport local task, remote task;
767 770
 - 3、support two types underlying communication ,Servlet or JETTY;
@@ -779,7 +782,7 @@ There are only two settings when communication between scheduler center and exec
779 782
 		- High scalability;
780 783
 		- stability;
781 784
 
782
-#### 6.3 version V1.3.0,New features [2016-05-19]
785
+### 6.3 version V1.3.0,New features [2016-05-19]
783 786
 - 1、discard local task module, remote task was recommended, easy to decouple system, the JobHander of task was called executor.
784 787
 - 2、dicard underlying communication type servlet, JETTY was recommended, schedule and callback bidirectional communication, rebuild the communication logic;
785 788
 - 3、UI interactive optimization:optimize left menu expansion and menu item selected status , task list opens the table with compression optimization;
@@ -789,7 +792,7 @@ There are only two settings when communication between scheduler center and exec
789 792
 		- BEAN mode executor:every executor is a Spring Bean instance,it was recognized and scheduled by XXL-JOB through @JobHander annotation;
790 793
 		 -GLUE mode executor:every executor corresponds to a piece of code,edited and maintained online by Web, Dynamic compile and takes effect in real time, executor is responsible for loading GLUE code and executing;
791 794
 
792
-#### 6.4 version V1.3.1,New features [2016-05-23]
795
+### 6.4 version V1.3.1,New features [2016-05-23]
793 796
 - 1、Update project directory structure:
794 797
 	- /xxl-job-admin -------------------- 【schedule center】:Responsible for managing schedule information,send schedule request according to schedule configuration;
795 798
 	- /xxl-job-core -----------------------  Public core dependence
@@ -799,12 +802,12 @@ There are only two settings when communication between scheduler center and exec
799 802
 - 2、Upgrade the user manual under the new directory structure;
800 803
 - 3、Optimize some interactions and UI;
801 804
 
802
-#### 6.5 version V1.3.2,New features [2016-05-28]
805
+### 6.5 version V1.3.2,New features [2016-05-28]
803 806
 - 1、Schedule logic for transactional handle;
804 807
 - 2、executor asynchronous callback execution log;
805 808
 - 3、【important】based on HA support of schedule center,extend executor’s Failover support,Support configure multiple execution addresses;
806 809
 
807
-#### 6.6 version V1.4.0 New features [2016-07-24]
810
+### 6.6 version V1.4.0 New features [2016-07-24]
808 811
 - 1、Task dependency: it is implemented by trigger event, it will automatically trigger a child task schedule after Task execute success and callback, multiple child tasks are separated by commas;
809 812
 - 2、executor source code has been reconstructed, optimize underlying db script;
810 813
 - 3、optimize task thread group logic of executor, before it is group by executor’s JobHandler so when multiple task reuse Jobhanlder will cause block with each other. Now it is grouped by task of schedule center so tasks are isolated from task execution.
@@ -823,7 +826,7 @@ There are only two settings when communication between scheduler center and exec
823 826
 
824 827
 Tips: V1.3.x release has been published , enter the maintenance phase, branch  address is [V1.3](https://github.com/xuxueli/xxl-job/tree/v1.3) .New features will be updated continuously in the master branch.
825 828
 
826
-#### 6.7 version V1.4.1 New features [2016-09-06]
829
+### 6.7 version V1.4.1 New features [2016-09-06]
827 830
 - 1、project successfully pushed to maven central warehouse, Central warehouse address and dependency  as shown below:
828 831
     ```
829 832
     <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
@@ -841,14 +844,14 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
841 844
 - 7、optimize table structure and the table name now is upper case;
842 845
 - 8、modify ContentType of JSON response from exception handler of schedule center to fix the bug that it is could not recognized by browser.
843 846
 
844
-#### 6.8 version V1.4.2 New features [2016-09-29]
847
+### 6.8 version V1.4.2 New features [2016-09-29]
845 848
 - 1、push V1.4.2 to maven central warehouse, main version V1.4 enter maintenance phase;
846 849
 - 2、fix problem task list offset when add task;
847 850
 - 3、fix a style disorder problem that caused by bootstrap does not support the modal frame overlap , the problem occurs when the task is edited;
848 851
 - 4、optimize schedule status when schedule timeout and Handler could not matched;
849 852
 - 5、the task could not stop problem caused by catch exception has given solution;
850 853
 
851
-#### 6.9 version V1.5.0 New features [2016-11-13]
854
+### 6.9 version V1.5.0 New features [2016-11-13]
852 855
 - 1、task register: executor registers the task automatically, schedule center will automatically discover the registered task and trigger execution.
853 856
 - 2、add parameter AppName for executor: AppName is the unique identifier of each executor cluster, register periodically and automatically with AppName.
854 857
 - 3、add column executor management in schedule center : manage online executors, automatically discover registered executors via the property AppName。Only managed executors are allowed to be used;
@@ -858,14 +861,14 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
858 861
 - 7、adjust table structure, reconstruct the project;
859 862
 - 8、schedule center automatically registered and found, failover: schedule center periodically registered automatically, task callback can recognize all online schedule center addresses, task callback support failover so that it can avoid single point of risk.
860 863
 
861
-#### 6.10 version V1.5.1 New features [2016-11-13]
864
+### 6.10 version V1.5.1 New features [2016-11-13]
862 865
 - 1、Reconstruct the underlying code and optimize logic, clean POM and Clean Code;
863 866
 - 2、Servlet/JSP Spec selected 3.0/2.2;
864 867
 - 3、Spring updated to 3.2.17.RELEASE version;
865 868
 - 4、Jetty updated to version 8.2.0.v20160908;
866 869
 - 5、has push V1.5.0 and V1.5.1 to maven central warehouse;
867 870
 
868
-#### 6.10 version V1.5.2 New features [2017-02-28]
871
+### 6.10 version V1.5.2 New features [2017-02-28]
869 872
 - 1、optimize IP tools class which used to gets IP address,IP static cache;
870 873
 - 2、both executor and schedule center support customize registered IP address;Solve problem when machine has multiple network card and get the wrong card;
871 874
 - 3、solve the problem that it will generate multiple log files when executed across days;
@@ -875,7 +878,7 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
875 878
 - 7、reconstruct underlying code and optimize logic and Clean Code;
876 879
 - 8、optimize Dependency Injection Logic of GLUE, support injected as alias;
877 880
 
878
-#### 6.11 version V1.6.0 New features [2017-03-13]
881
+### 6.11 version V1.6.0 New features [2017-03-13]
879 882
 - 1、upgrade communication scheme,the HEX communication model is adjusted to the B-RPC model based on HTTP;
880 883
 - 2、executor supports set execution address list manually,provide switch to use automatically registered address or manually set address;
881 884
 - 3、executor route rules:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
@@ -886,20 +889,20 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
886 889
 - 8、new created task defaults to a non-running state;
887 890
 - 9、optimize update logic of GLUE mode task instance , The original update is based on the timeout value and now is updated according to the version number,version number plus one while source changed;
888 891
 
889
-#### 6.12 version V1.6.1 New features [2017-03-25]
892
+### 6.12 version V1.6.1 New features [2017-03-25]
890 893
 - 1、Rolling log;
891 894
 - 2、reconstruct WebIDE interactive;
892 895
 - 3、enhanced communication check,filter unnormal requests effectively;
893 896
 - 4、enhanced permission check,Using dynamic login TOKEN(recommend instead of internal SSO);
894 897
 - 5、optimize database configuration,solve garbled problem;
895 898
 
896
-#### 6.13 version V1.6.2 New features [2017-04-25]
899
+### 6.13 version V1.6.2 New features [2017-04-25]
897 900
 - 1、execution report:support view run time data in real time, such as task number, total schedule number, executor number etc., include schedule report , such as scheduled distribution graph on date, scheduled success distribution graph etc;
898 901
 - 2、JobHandler support set return value for tasks, it is easy to control task execute result in task logic;
899 902
 - 3、the problem could not view exception info when resource path include space or chinese word casused resource file could not be loaded;
900 903
 - 4、optimize route policy:fix problems that Loop and LFU routing policy counters are no limit and first route is focused on the first machine;
901 904
 
902
-#### 6.14 version V1.7.0 New features [2017-05-02]
905
+### 6.14 version V1.7.0 New features [2017-05-02]
903 906
 - 1、script task:support develop and run script task by GLUE, include script type such as Shell、Python and Groovy;
904 907
 - 2、add spring-boot type executor example project;
905 908
 - 3、upgrade jetty to version 9.2;
@@ -907,7 +910,7 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
907 910
 - 5、executor remove GlueLoader dependency,instead of push mode,thus GLUE source code load no longer rely on JDBC;
908 911
 - 6、get the project name when login and redirect, solve 404 problem when it is not deployed by the directory;
909 912
 
910
-#### 6.15 version V1.7.1 New features [2017-05-08]
913
+### 6.15 version V1.7.1 New features [2017-05-08]
911 914
 - 1、unified write and read code of execute log as UTF-8,solve log garbled problem under windows environment;
912 915
 - 2、communication timeout period is limited to 10s,To avoid schedule thread is occupied under abnormal situation;
913 916
 - 3、adjust executor , server stat, destroy and register logic;
@@ -917,7 +920,7 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
917 920
 - 7、pop-up component is replaced by layer;
918 921
 - 8、upgrade quartz to version 2.3.0;
919 922
 
920
-#### 6.16 version V1.7.2 New features [2017-05-17]
923
+### 6.16 version V1.7.2 New features [2017-05-17]
921 924
 - 1、block handle policy:the policy when schedule is too frequently and the executor it too late to handle, include multiple strategies:single machine serially execute(default)、discard subsequent schedule、override before schedule;
922 925
 - 2、fail handle policy:handle policy when scheduled fail, include :failure alarm(default)、failed to retry;
923 926
 - 3、The communication timeout is adjusted to 180s;
@@ -925,7 +928,7 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
925 928
 - 5、fix executor parameters lost bug when edit;
926 929
 - 6、add task test Demo to make task logic test easier;
927 930
 
928
-#### 6.17 version V1.8.0 New features [2017-07-17]
931
+### 6.17 version V1.8.0 New features [2017-07-17]
929 932
 - 1、optimize update logic of task Cron,instead of rescheduleJob,at the same time preventing set cron repeatedly;
930 933
 - 2、optimize API callback service failed status code,facilitate troubleshooting;
931 934
 - 3、XxlJobLogger support multi-parameter;
@@ -938,7 +941,7 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
938 941
 - 10、supports filter execute log based on running status;
939 942
 - 11、optimize scheduling Center Task Registration Detection Logic;
940 943
 
941
-#### 6.18 version V1.8.1 New features [2017-07-30]
944
+### 6.18 version V1.8.1 New features [2017-07-30]
942 945
 - 1、slice broadcast task:When slice broadcast is selected as route policy in executor cluster, one task schedule will broadcast all executor node in cluster to trigger task execute in every executor, pass slice parameter at the same time, so we can develop slice task by slice parameters;
943 946
 - 2、dynamic slice: break the task by the dimensions of executor, support dynamic extend executor cluster so that it can add slice number dynamically to do business process, In case of large amount of data process can significantly improve task processing capacity and speed;
944 947
 - 3、executor JobHandler disables name conflicts;
@@ -951,12 +954,12 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
951 954
 - 10、upgrade springboot version to 1.5.6.RELEASE of executor;
952 955
 - 11、unify maven version dependency management;
953 956
 
954
-#### 6.19 version V1.8.2 New features[Coding]
957
+### 6.19 version V1.8.2 New features[Coding]
955 958
 - 1,support configuring the HTTPS for executor callback URL;
956 959
 - 2,Standardize project directory for extend multi executors;
957 960
 - 3,add JFinal type executor sample project;
958 961
 
959
-#### TODO LIST
962
+### TODO LIST
960 963
 - 1,Task privilege management:control privilege on executor, check privilege on core operations;
961 964
 - 2,Task slice routing:using consistent Hash algorithm to calculate slice order as stable as possible, even if there is fluctuation in the registration machine will not cause large fluctuations in the order of slice. Currently using IP natural sorting can meet the demand,to be determined;
962 965
 - 3,Failure retry optimization:The current failure to retry logic is execute the request logic once again after the scheduled request fails。The optimization point is retry for both scheduling and execution failures, retry a full schedule when retrying,This may lead schedule failure to an infinite loop,to be determined;
@@ -970,22 +973,22 @@ Tips: V1.3.x release has been published , enter the maintenance phase, branch  a
970 973
 
971 974
 ## 7. Other
972 975
 
973
-#### 7.1 report problem
974
-XXL-JOB project is on Github,If you have any questions, you can ask questions at [ISSUES](https://github.com/xuxueli/xxl-job/issues/) You can also join the above technical exchange group;
976
+### 7.1 Contributing
977
+Contributions are welcome! Open a pull request to fix a bug, or open an [Issue](https://github.com/xuxueli/xxl-job/issues/) to discuss a new feature or change.
975 978
 
976
-#### 7.2 used records(record just for spread,Product is open source and free of charge)
979
+### 7.2 used records(record just for spread,Product is open source and free of charge)
977 980
 Record for spread product and product is free and open source. 
978 981
 Welcome to [check in](https://github.com/xuxueli/xxl-job/issues/1 )on github.
979 982
 
980
-#### 7.3 Open source protocol and version
981
-Product is open source and free of charge,will provide free community technical support continuously,Personal or company internal free access and use.
983
+### 7.3 Copyright and License
984
+This product is open source and free, and will continue to provide free community technical support. Individual or enterprise users are free to access and use.
982 985
 
983
-XXL-JOB uses GPLv3 protocol to ensure the user's right of free use. The agreement avoids special risk of patent applications "the GPL assures that patents cannot be used to render the program non-free.(From GPLv3)".
984
-Copyright (c) 2015-present, xuxueli.
986
+- Licensed under the GNU General Public License (GPL) v3.
987
+- Copyright (c) 2015-present, xuxueli.
985 988
 
986 989
 ---
987
-#### donation
988
-scan it if want to support project,reward a cup of coffee to author:
990
+### Donate
991
+To support the author, donate the author to buy a cup of coffee:
989 992
 
990 993
 webchat:![输入图片说明](https://static.oschina.net/uploads/img/201707/07214300_qhxT.png "在这里输入图片标题")
991 994
 Alipay:![输入图片说明](http://images2015.cnblogs.com/blog/554415/201605/554415-20160513183306234-1939652116.png "在这里输入图片标题")

+ 83 - 79
doc/XXL-JOB官方文档.md ファイルの表示

@@ -1,4 +1,4 @@
1
-# 《分布式任务调度平台XXL-JOB》
1
+## 《分布式任务调度平台XXL-JOB》
2 2
 
3 3
 [![Build Status](https://travis-ci.org/xuxueli/xxl-job.svg?branch=master)](https://travis-ci.org/xuxueli/xxl-job)
4 4
 [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.xuxueli/xxl-job/)
@@ -48,7 +48,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
48 48
 
49 49
 于2017-05-13,在上海举办的 "[第62期开源中国源创会](https://www.oschina.net/event/2236961)" 的 "放码过来" 环节,我登台对XXL-JOB做了演讲,台下五百位在场观众反响热烈([图文回顾](https://www.oschina.net/question/2686220_2242120) )。
50 50
 
51
-#### 我司大众点评目前已接入XXL-JOB,内部别名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入应用推荐升级最新版本)。
51
+> 我司大众点评目前已接入XXL-JOB,内部别名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入应用推荐升级最新版本)。
52 52
 据最新统计, 自2016-01-21接入至2017-07-07期间,该系统已调度约60万余次,表现优异。新接入应用推荐使用最新版本,因为经过数个大版本的更新,系统的任务模型、UI交互模型以及底层调度通讯模型都有了较大的优化和提升,核心功能更加稳定高效。
53 53
 
54 54
 至今,XXL-JOB已接入多家公司的线上产品线,接入场景如电商业务,O2O业务和大数据作业等,截止2016-07-19为止,XXL-JOB已接入的公司包括不限于:
@@ -91,10 +91,18 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
91 91
     - 36、增长引擎(北京)信息技术有限公司
92 92
 	- ……
93 93
 
94
+> 更多接入的公司,欢迎在 [登记地址](https://github.com/xuxueli/xxl-job/issues/1 ) 登记,登记仅仅为了产品推广。
95
+
94 96
 欢迎大家的关注和使用,XXL-JOB也将拥抱变化,持续发展。
95 97
 
98
+
96 99
 ### 1.4 下载
97 100
 
101
+#### 文档地址
102
+
103
+- [中文文档](http://www.xuxueli.com/xxl-job/)
104
+- [English Documentation](http://www.xuxueli.com/xxl-job/en/)
105
+
98 106
 #### 源码仓库地址
99 107
 
100 108
 源码仓库地址 | Release Download
@@ -114,11 +122,6 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
114 122
 </dependency>
115 123
 ```
116 124
 
117
-#### 博客地址
118
-
119
-- [oschina地址](http://my.oschina.net/xuxueli/blog/690978)
120
-- [cnblogs地址](http://www.cnblogs.com/xuxueli/p/5021979.html)
121
-
122 125
 #### 技术交流
123 126
 
124 127
 - 腾讯QQ群(6):399758605
@@ -287,7 +290,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
287 290
 本示例以新建一个 “GLUE模式(Java)” 运行模式的任务为例。更多有关任务的详细配置,请查看“章节三:任务详解”。
288 291
 ( “GLUE模式(Java)”的执行代码托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,更加简便轻量)
289 292
 
290
-#### 前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;
293
+> 前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;
291 294
 
292 295
 #### 步骤一:新建任务:
293 296
 登录调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存。
@@ -411,7 +414,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
411 414
 
412 415
 
413 416
 ## 四、任务管理
414
-#### 4.0 配置执行器  
417
+
418
+### 4.0 配置执行器  
415 419
 点击进入"执行器管理"界面, 如下图:
416 420
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/12223509_Hr2T.png "在这里输入图片标题")
417 421
 
@@ -421,7 +425,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
421 425
 点击按钮 "+新增执行器" 弹框如下图, 可新增执行器配置:
422 426
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/12223617_g3Im.png "在这里输入图片标题")
423 427
 
424
-#### 执行器属性说明
428
+### 执行器属性说明
425 429
 
426 430
     AppName: 是每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;
427 431
     名称: 执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性;
@@ -431,30 +435,30 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
431 435
         手动录入:人工手动录入执行器的地址信息,多地址逗号分隔,供调度中心使用;
432 436
     机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;
433 437
 
434
-#### 4.1 新建任务
438
+### 4.1 新建任务
435 439
 进入任务管理界面,点击“新增任务”按钮,在弹出的“新增任务”界面配置任务属性后保存即可。详情页参考章节 "三、任务详解"。
436 440
 
437
-#### 4.2 编辑任务
441
+### 4.2 编辑任务
438 442
 进入任务管理界面,选中指定任务。点击该任务右侧“编辑”按钮,在弹出的“编辑任务”界面更新任务属性后保存即可,可以修改设置的任务属性信息:
439 443
 
440
-#### 4.3 编辑GLUE代码
444
+### 4.3 编辑GLUE代码
441 445
 
442 446
 该操作仅针对GLUE任务。
443 447
 
444 448
 选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发。可参考章节 "3.2 GLUE模式(Java)"。
445 449
 
446
-#### 4.4 暂停/恢复任务
450
+### 4.4 暂停/恢复任务
447 451
 可对任务进行“暂停”和“恢复”操作。
448 452
 需要注意的是,此处的暂停/恢复仅针对任务的后续调度触发行为,不会影响到已经触发的调度任务,如需终止已经触发的调度任务,可查看“4.8 终止运行中的任务”
449 453
 
450 454
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24130337_ZAhX.png "在这里输入图片标题")
451 455
 
452
-#### 4.5 手动触发一次调度
456
+### 4.5 手动触发一次调度
453 457
 点击“执行”按钮,可手动触发一次任务调度,不影响原有调度规则。
454 458
 
455 459
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24133348_Z5wp.png "在这里输入图片标题")
456 460
 
457
-#### 4.6 查看调度日志
461
+### 4.6 查看调度日志
458 462
 点击“日志”按钮,可以查看任务历史调度日志。在历史调入日志界面可查看每次任务调度的调度结果、执行结果等,点击“执行日志”按钮可查看执行器完整日志。
459 463
 
460 464
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24133500_9235.png "在这里输入图片标题")
@@ -474,12 +478,12 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
474 478
         "执行日志"按钮:点击可查看本地任务执行的详细日志信息;详见“4.7 查看执行日志”;
475 479
         "终止任务"按钮:点击可终止本地调度对应执行器上本任务的执行线程,包括未执行的阻塞任务一并被终止;
476 480
 
477
-#### 4.7 查看执行日志
481
+### 4.7 查看执行日志
478 482
 点击执行日志右侧的 “执行日志” 按钮,可跳转至执行日志界面,可以查看业务代码中打印的完整日志,如下图;
479 483
 
480 484
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/25124816_tvGI.png "在这里输入图片标题")
481 485
 
482
-#### 4.8 终止运行中的任务
486
+### 4.8 终止运行中的任务
483 487
 仅针对执行中的任务。
484 488
 在任务日志界面,点击右侧的“终止任务”按钮,将会向本次任务对应的执行器发送任务终止请求,将会终止掉本次任务,同时会清空掉整个任务执行队列。
485 489
 
@@ -502,26 +506,27 @@ try{
502 506
 而且,在JobHandler中开启子线程时,子线程也不可catch处理"InterruptedException",应该主动向上抛出。
503 507
 
504 508
 
505
-#### 4.9 删除执行日志
509
+### 4.9 删除执行日志
506 510
 在任务日志界面,选中执行器和任务之后,点击右侧的"删除"按钮将会出现"日志清理"弹框,弹框中支持选择不同类型的日志清理策略,选中后点击"确定"按钮即可进行日志清理操作;
507 511
 ![输入图片说明](https://static.oschina.net/uploads/img/201705/08210711_Ypik.png "在这里输入图片标题")
508 512
 
509 513
 ![输入图片说明](https://static.oschina.net/uploads/img/201705/08211152_EB65.png "在这里输入图片标题")
510 514
 
511
-#### 4.10 删除任务
515
+### 4.10 删除任务
512 516
 点击删除按钮,可以删除对应任务。
513 517
 
514 518
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24140641_Z9Qr.png "在这里输入图片标题")
515 519
 
520
+
516 521
 ## 五、总体设计
517
-#### 5.1 源码目录介绍
522
+### 5.1 源码目录介绍
518 523
     - /doc :文档资料
519 524
     - /db :“调度数据库”建表脚本
520 525
     - /xxl-job-admin :调度中心,项目源码
521 526
     - /xxl-job-core :公共Jar依赖
522 527
     - /xxl-job-executor-samples :执行器,Sample示例项目(大家可以在该项目上进行开发,也可以将现有项目改造生成执行器项目)
523 528
 
524
-#### 5.2 “调度数据库”配置
529
+### 5.2 “调度数据库”配置
525 530
 XXL-JOB调度模块基于Quartz集群实现,其“调度数据库”是在Quartz的11张集群mysql表基础上扩展而成。
526 531
 
527 532
 XXL-JOB首先定制了Quartz原生表结构前缀(XXL_JOB_QRTZ_)。
@@ -537,15 +542,15 @@ XXL-JOB首先定制了Quartz原生表结构前缀(XXL_JOB_QRTZ_)。
537 542
 
538 543
 因此,XXL-JOB调度数据库共计用于16张数据库表。
539 544
 
540
-#### 5.3 架构设计
541
-##### 5.3.1 设计思想
545
+### 5.3 架构设计
546
+#### 5.3.1 设计思想
542 547
 将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。
543 548
 
544 549
 将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。
545 550
 
546 551
 因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性;
547 552
 
548
-##### 5.3.2 系统组成
553
+#### 5.3.2 系统组成
549 554
 - **调度模块(调度中心)**:
550 555
     负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
551 556
     支持可视化、简单且动态的维管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。
@@ -553,24 +558,24 @@ XXL-JOB首先定制了Quartz原生表结构前缀(XXL_JOB_QRTZ_)。
553 558
     负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;
554 559
     接收“调度中心”的执行请求、终止请求和日志请求等。
555 560
 
556
-##### 5.3.3 架构图
561
+#### 5.3.3 架构图
557 562
 
558 563
 ![输入图片说明](https://static.oschina.net/uploads/img/201707/17190028_aEE2.png "在这里输入图片标题")
559 564
 
560
-#### 5.4 调度模块剖析
561
-##### 5.4.1 quartz的不足
565
+### 5.4 调度模块剖析
566
+#### 5.4.1 quartz的不足
562 567
 Quartz作为开源作业调度中的佼佼者,是作业调度的首选。但是集群环境中Quartz采用API的方式对任务进行管理,从而可以避免上述问题,但是同样存在以下问题:
563 568
     - 问题一:调用API的的方式操作任务,不人性化;
564 569
     - 问题二:需要持久化业务QuartzJobBean到底层数据表中,系统侵入性相当严重。
565 570
     - 问题三:调度逻辑和QuartzJobBean耦合在同一个项目中,这将导致一个问题,在调度任务数量逐渐增多,同时调度任务逻辑逐渐加重的情况加,此时调度系统的性能将大大受限于业务;
566 571
 XXL-JOB弥补了quartz的上述不足之处。
567 572
 
568
-##### 5.4.2 RemoteHttpJobBean
573
+#### 5.4.2 RemoteHttpJobBean
569 574
 常规Quartz的开发,任务逻辑一般维护在QuartzJobBean中,耦合很严重。XXL-JOB中“调度模块”和“任务模块”完全解耦,调度模块中的所有调度任务使用同一个QuartzJobBean,即RemoteHttpJobBean。不同的调度任务将各自参数维护在各自扩展表数据中,当触发RemoteHttpJobBean执行时,将会解析不同的任务参数发起远程调用,调用各自的远程执行器服务。
570 575
 
571 576
 这种调用模型类似RPC调用,RemoteHttpJobBean提供调用代理的功能,而执行器提供远程服务的功能。
572 577
 
573
-##### 5.4.3 调度中心HA(集群)
578
+#### 5.4.3 调度中心HA(集群)
574 579
 基于Quartz的集群方案,数据库选用Mysql;集群分布式并发环境中使用QUARTZ定时任务调度,会在各个节点会上报任务,存到数据库中,执行时会从数据库中取出触发器来执行,如果触发器的名称和执行时间相同,则只有一个节点去执行此任务。
575 580
 
576 581
 ```
@@ -582,7 +587,7 @@ org.quartz.jobStore.isClustered: true
582 587
 org.quartz.jobStore.clusterCheckinInterval: 1000
583 588
 ```
584 589
 
585
-##### 5.4.4 调度线程池
590
+#### 5.4.4 调度线程池
586 591
 默认线程池中线程的数量为10个,避免单线程因阻塞而引起任务调度延迟。
587 592
 
588 593
 ```
@@ -596,12 +601,12 @@ XXL-JOB系统中业务逻辑在远程执行器执行,调度中心每次调度
596 601
 
597 602
 XXL-JOB调度中心中每个JOB逻辑非常 “轻”,单个JOB一次运行平均耗时基本在 "100ms" 之内(基本是网络开销);因此,可以保证使用有限的线程支撑大量的JOB并发运行;上面配置的10个线程至少可以支撑100个JOB正常运行;
598 603
 
599
-##### 5.4.5 @DisallowConcurrentExecution
604
+#### 5.4.5 @DisallowConcurrentExecution
600 605
 XXL-JOB调度模块的“调度中心”默认不使用该注解,即默认开启并行机制,因为RemoteHttpJobBean为公共QuartzJobBean,这样在多线程调度的情况下,调度模块被阻塞的几率很低,大大提高了调度系统的承载量。
601 606
 
602 607
 XXL-JOB的每个调度任务虽然在调度模块是并行调度执行的,但是任务调度传递到任务模块的“执行器”确实串行执行的,同时支持任务终止。
603 608
 
604
-##### 5.4.6 misfire
609
+#### 5.4.6 misfire
605 610
 错过了触发时间,处理规则。
606 611
 可能原因:服务重启;调度线程被QuartzJobBean阻塞,线程被耗尽;某个任务启用了@DisallowConcurrentExecution,上次调度持续阻塞,下次调度被错过;
607 612
 
@@ -622,7 +627,7 @@ CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobIn
622 627
 CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
623 628
 ```
624 629
 
625
-##### 5.4.7 日志回调服务
630
+#### 5.4.7 日志回调服务
626 631
 调度模块的“调度中心”作为Web服务部署时,一方面承担调度中心功能,另一方面也为执行器提供API服务。
627 632
 
628 633
 调度中心提供的"日志回调服务API服务"代码位置如下:
@@ -632,7 +637,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
632 637
 
633 638
 “执行器”在接收到任务执行请求后,执行任务,在执行结束之后会将执行结果回调通知“调度中心”:
634 639
 
635
-##### 5.4.8 任务HA(Failover)
640
+#### 5.4.8 任务HA(Failover)
636 641
 执行器如若集群部署,调度中心将会感知到在线的所有执行器,如“127.0.0.1:9997, 127.0.0.1:9998, 127.0.0.1:9999”。
637 642
 
638 643
 当任务"路由策略"选择"故障转移(FAILOVER)"时,当调度中心每次发起调度请求时,会按照顺序对执行器发出心跳检测请求,第一个检测为存活状态的执行器将会被选定并发送调度请求。
@@ -644,7 +649,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
644 649
 “调度备注”可以看出本地调度运行轨迹,执行器的"注册方式"、"地址列表"和任务的"路由策略"。"故障转移(FAILOVER)"路由策略下,调度中心首先对第一个地址进行心跳检测,心跳失败因此自动跳过,第二个依然心跳检测失败……
645 650
 直至心跳检测第三个地址“127.0.0.1:9999”成功,选定为“目标执行器”;然后对“目标执行器”发送调度请求,调度流程结束,等待执行器回调执行结果。
646 651
 
647
-##### 5.4.9 调度日志
652
+#### 5.4.9 调度日志
648 653
 调度中心每次进行任务调度,都会记录一条任务日志,任务日志主要包括以下三部分内容:
649 654
 
650 655
 - 任务信息:包括“执行器地址”、“JobHandler”和“执行参数”等属性,根据这些参数,可以精确的定位任务执行的具体机器和任务代码;
@@ -665,7 +670,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
665 670
 - 执行备注:执行器,任务执行的备注信息,如异常日志等;
666 671
 - 执行日志:任务执行过程中,业务代码中打印的完整执行日志,见“4.7 查看执行日志”;
667 672
 
668
-##### 5.4.10 任务依赖
673
+#### 5.4.10 任务依赖
669 674
 原理:XXL-JOB中每个任务都对应有一个任务Key,同时,每个任务支持设置属性“子任务Key”,因此,通过“任务Key”可以匹配任务依赖关系。
670 675
 
671 676
 当父任务执行结束并且执行成功时,将会根据“子任务Key”匹配子任务依赖,如果匹配到子任务,将会主动触发一次子任务的执行。
@@ -676,12 +681,12 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
676 681
 
677 682
 ![输入图片说明](https://static.oschina.net/uploads/img/201607/24194212_jOAU.png "在这里输入图片标题")
678 683
 
679
-#### 5.5 任务 "运行模式" 剖析
680
-##### 5.5.1 "Bean模式" 任务
684
+### 5.5 任务 "运行模式" 剖析
685
+#### 5.5.1 "Bean模式" 任务
681 686
 开发步骤:可参考 "章节三" ;
682 687
 原理:每个Bean模式任务都是一个Spring的Bean类实例,它被维护在“执行器”项目的Spring容器中。任务类需要加“@JobHander(value="名称")”注解,因为“执行器”会根据该注解识别Spring容器中的任务。任务类需要继承统一接口“IJobHandler”,任务逻辑在execute方法中开发,因为“执行器”在接收到调度中心的调度请求时,将会调用“IJobHandler”的execute方法,执行任务逻辑。
683 688
 
684
-##### 5.5.2 "GLUE模式(Java)" 任务
689
+#### 5.5.2 "GLUE模式(Java)" 任务
685 690
 开发步骤:可参考 "章节三" ;
686 691
 原理:每个 "GLUE模式(Java)" 任务的代码,实际上是“一个继承自“IJobHandler”的实现类的类代码”,“执行器”接收到“调度中心”的调度请求时,会通过Groovy类加载器加载此代码,实例化成Java对象,同时注入此代码中声明的Spring服务(请确保Glue代码中的服务和类引用在“执行器”项目中存在),然后调用该对象的execute方法,执行任务逻辑。
687 692
 
@@ -695,7 +700,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
695 700
     - python脚本:任务运行模式选择为 "GLUE模式(Python)"时支持 "python" 脚本任务;
696 701
     
697 702
 
698
-##### 5.5.4 执行器
703
+#### 5.5.4 执行器
699 704
 执行器实际上是一个内嵌的Jetty服务器,默认端口9999,如下图配置文件所示(参数:xxl.job.executor.port)。
700 705
 
701 706
 ![输入图片说明](https://static.oschina.net/uploads/img/201703/10174923_TgNO.png "在这里输入图片标题")
@@ -704,7 +709,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
704 709
 
705 710
 “执行器”接收到“调度中心”的调度请求时,如果任务类型为“Bean模式”,将会匹配Spring容器中的“Bean模式任务”,然后调用其execute方法,执行任务逻辑。如果任务类型为“GLUE模式”,将会加载GLue代码,实例化Java对象,注入依赖的Spring服务(注意:Glue代码中注入的Spring服务,必须存在与该“执行器”项目的Spring容器中),然后调用execute方法,执行任务逻辑。
706 711
 
707
-##### 5.5.5 任务日志
712
+#### 5.5.5 任务日志
708 713
 XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过 "XxlJobLogger.log" 打印执行日志,“调度中心”查看执行日志时将会加载对应的日志文件。
709 714
 
710 715
 (历史版本通过重写LOG4J的Appender实现,存在依赖限制,该方式在新版本已经被抛弃)
@@ -713,17 +718,17 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
713 718
 
714 719
 在JobHandler中开启子线程时,子线程将会将会把日志打印在父线程即JobHandler的执行日志中,方便日志追踪。
715 720
 
716
-#### 5.6 通讯模块剖析
721
+### 5.6 通讯模块剖析
717 722
 
718
-##### 5.6.1 一次完整的任务调度通讯流程 
723
+#### 5.6.1 一次完整的任务调度通讯流程 
719 724
     - 1、“调度中心”向“执行器”发送http调度请求: “执行器”中接收请求的服务,实际上是一台内嵌jetty服务器,默认端口9999;
720 725
     - 2、“执行器”执行任务逻辑;
721 726
     - 3、“执行器”http回调“调度中心”调度结果: “调度中心”中接收回调的服务,是针对执行器开放一套API服务;
722 727
 
723
-##### 5.6.2 通讯数据加密
728
+#### 5.6.2 通讯数据加密
724 729
 调度中心向执行器发送的调度请求时使用RequestModel和ResponseModel两个对象封装调度请求参数和响应数据, 在进行通讯之前底层会将上述两个对象对象序列化,并进行数据协议以及时间戳检验,从而达到数据加密的功能;
725 730
 
726
-#### 5.7 任务注册, 任务自动发现   
731
+### 5.7 任务注册, 任务自动发现   
727 732
 自v1.5版本之后, 任务取消了"任务执行机器"属性, 改为通过任务注册和自动发现的方式, 动态获取远程执行器地址并执行。
728 733
 
729 734
     AppName: 每个执行器机器集群的唯一标示, 任务注册以 "执行器" 为最小粒度进行注册; 每个任务通过其绑定的执行器可感知对应的执行器机器列表;
@@ -732,12 +737,12 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
732 737
 
733 738
 为保证系统"轻量级"并且降低学习部署成本,没有采用Zookeeper作为注册中心,采用DB方式进行任务注册发现;
734 739
 
735
-#### 5.8 任务执行结果
740
+### 5.8 任务执行结果
736 741
 自v1.6.2之后,任务执行结果通过 "IJobHandler" 的返回值 "ReturnT" 进行判断;
737 742
 当返回值符合 "ReturnT.code == ReturnT.SUCCESS_CODE" 时表示任务执行成功,否则表示任务执行失败,而且可以通过 "ReturnT.msg" 回调错误信息给调度中心;
738 743
 从而,在任务逻辑中可以方便的控制任务执行结果;
739 744
 
740
-#### 5.9 分片广播 & 动态分片   
745
+### 5.9 分片广播 & 动态分片   
741 746
 执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务,同时传递分片参数;可根据分片参数开发分片任务;
742 747
 
743 748
 "分片广播" 以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
@@ -755,7 +760,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
755 760
 - 1、分片任务场景:10个执行器的集群来处理10w条数据,每台机器只需要处理1w条数据,耗时降低10倍;
756 761
 - 2、广播任务场景:广播执行器机器运行shell脚本、广播集群节点进行缓存更新等
757 762
 
758
-#### 5、10 访问令牌(AccessToken)
763
+### 5.10 访问令牌(AccessToken)
759 764
 为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;
760 765
 
761 766
 调度中心和执行器,可通过配置项 "xxl.job.accessToken" 进行AccessToken的设置。
@@ -767,7 +772,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
767 772
 
768 773
 
769 774
 ## 六、版本更新日志
770
-#### 6.1 版本 V1.1.x,新特性[2015-12-05]
775
+### 6.1 版本 V1.1.x,新特性[2015-12-05]
771 776
 **【于V1.1.x版本,XXL-JOB正式应用于我司,内部定制别名为 “Ferrari”,新接入应用推荐使用最新版本】**
772 777
 - 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
773 778
 - 2、动态:支持动态修改任务状态,动态暂停/恢复任务,即时生效;
@@ -778,7 +783,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
778 783
 - 7、支持自定义参数;
779 784
 - 8、支持远程任务执行终止;
780 785
 
781
-#### 6.2 版本 V1.2.x,新特性[2016-01-17]
786
+### 6.2 版本 V1.2.x,新特性[2016-01-17]
782 787
 - 1、支持任务分组;
783 788
 - 2、支持“本地任务”、“远程任务”;
784 789
 - 3、底层通讯支持两种方式,Servlet方式 + JETTY方式;
@@ -796,7 +801,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
796 801
 		- 高扩展性;
797 802
 		- 稳定性;
798 803
 
799
-#### 6.3 版本 V1.3.0,新特性[2016-05-19]
804
+### 6.3 版本 V1.3.0,新特性[2016-05-19]
800 805
 - 1、遗弃“本地任务”模式,推荐使用“远程任务”,易于系统解耦,任务对应的JobHander统称为“执行器”;
801 806
 - 2、遗弃“servlet”方式底层系统通讯,推荐使用JETTY方式,调度+回调双向通讯,重构通讯逻辑;
802 807
 - 3、UI交互优化:左侧菜单展开状态优化,菜单项选中状态优化,任务列表打开表格有压缩优化;
@@ -806,7 +811,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
806 811
 		- BEAN模式执行器:每个执行器都是Spring的一个Bean实例,XXL-JOB通过注解@JobHander识别和调度执行器;
807 812
 		 -GLUE模式执行器:每个执行器对应一段代码,在线Web编辑和维护,动态编译生效,执行器负责加载GLUE代码和执行;
808 813
 
809
-#### 6.4 版本 V1.3.1,新特性[2016-05-23]
814
+### 6.4 版本 V1.3.1,新特性[2016-05-23]
810 815
 - 1、更新项目目录结构:
811 816
 	- /xxl-job-admin -------------------- 【调度中心】:负责管理调度信息,按照调度配置发出调度请求;
812 817
 	- /xxl-job-core ----------------------- 公共依赖
@@ -816,12 +821,12 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
816 821
 - 2、在新的目录结构上,升级了用户手册;
817 822
 - 3、优化了一些交互和UI;
818 823
 
819
-#### 6.5 版本 V1.3.2,新特性[2016-05-28]
824
+### 6.5 版本 V1.3.2,新特性[2016-05-28]
820 825
 - 1、调度逻辑进行事务包裹;
821 826
 - 2、执行器异步回调执行日志;
822 827
 - 3、【重要】在 “调度中心” 支持HA的基础上,扩展执行器的Failover支持,支持配置多执行期地址;
823 828
 
824
-#### 6.6 版本 V1.4.0 新特性[2016-07-24]
829
+### 6.6 版本 V1.4.0 新特性[2016-07-24]
825 830
 - 1、任务依赖: 通过事件触发方式实现, 任务执行成功并回调时会主动触发一次子任务的调度, 多个子任务用逗号分隔;
826 831
 - 2、执行器底层实现代码进行重度重构, 优化底层建表脚本;
827 832
 - 3、执行器中任务线程分组逻辑优化: 之前根据执行器JobHandler进行线程分组,当多个任务复用Jobhanlder会导致相互阻塞。现改为根据调度中心任务进行任务线程分组,任务与任务执行相互隔离;
@@ -840,7 +845,7 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,需要通过
840 845
 
841 846
 Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段, 地址见分支 [V1.3](https://github.com/xuxueli/xxl-job/tree/v1.3) 。新特性将会在master分支持续更新。
842 847
 
843
-#### 6.7 版本 V1.4.1 新特性[2016-09-06]
848
+### 6.7 版本 V1.4.1 新特性[2016-09-06]
844 849
 - 1、项目成功推送maven中央仓库, 中央仓库地址以及依赖如下: 
845 850
     ```
846 851
     <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
@@ -858,14 +863,14 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
858 863
 - 7、底层表结构,表明统一大写;
859 864
 - 8、调度中心,异常处理器JSON响应的ContentType修改,修复浏览器不识别的问题;
860 865
 
861
-#### 6.8 版本 V1.4.2 新特性[2016-09-29]
866
+### 6.8 版本 V1.4.2 新特性[2016-09-29]
862 867
 - 1、推送新版本 V1.4.2 至中央仓库, 大版本 V1.4 进入维护阶段;
863 868
 - 2、任务新增时,任务列表偏移问题修复;
864 869
 - 3、修复一处因bootstrap不支持模态框重叠而导致的样式错乱的问题, 在任务编辑时会出现该问题;
865 870
 - 4、调度超时和Handler匹配不到时,调度状态优化;
866 871
 - 5、因catch异常,导致任务不可终止的问题,给出解决方案, 见文档;
867 872
 
868
-#### 6.9 版本 V1.5.0 特性[2016-11-13]
873
+### 6.9 版本 V1.5.0 特性[2016-11-13]
869 874
 - 1、任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。
870 875
 - 2、"执行器" 新增参数 "AppName" : 是每个执行器集群的唯一标示AppName, 并周期性以AppName为对象进行自动注册。
871 876
 - 3、调度中心新增栏目 "执行器管理" : 管理在线的执行器, 通过属性AppName自动发现注册的执行器。只有被管理的执行器才允许被使用;
@@ -875,14 +880,14 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
875 880
 - 7、表结构调整,底层重构优化;
876 881
 - 8、"调度中心"自动注册和发现,failover: 调度中心周期性自动注册, 任务回调时可以感知在线的所有调度中心地址, 通过failover的方式进行任务回调,避免回调单点风险。
877 882
 
878
-#### 6.10 版本 V1.5.1 特性[2016-11-13]
883
+### 6.10 版本 V1.5.1 特性[2016-11-13]
879 884
 - 1、底层代码重构和逻辑优化,POM清理以及CleanCode;
880 885
 - 2、Servlet/JSP Spec设定为3.0/2.2
881 886
 - 3、Spring升级至3.2.17.RELEASE版本;
882 887
 - 4、Jetty升级版本至8.2.0.v20160908;
883 888
 - 5、已推送V1.5.0和V1.5.1至Maven中央仓库;
884 889
 
885
-#### 6.10 版本 V1.5.2 特性[2017-02-28]
890
+### 6.10 版本 V1.5.2 特性[2017-02-28]
886 891
 - 1、IP工具类获取IP逻辑优化,IP静态缓存;
887 892
 - 2、执行器、调度中心,均支持自定义注册IP地址;解决机器多网卡时错误网卡注册的情况;
888 893
 - 3、任务跨天执行时生成多份日志文件的问题修复;
@@ -892,7 +897,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
892 897
 - 7、底层代码重构和逻辑优化以及CleanCode;
893 898
 - 8、GLUE依赖注入逻辑优化,支持别名注入;
894 899
 
895
-#### 6.11 版本 V1.6.0 特性[2017-03-13]
900
+### 6.11 版本 V1.6.0 特性[2017-03-13]
896 901
 - 1、通讯方案升级,原基于HEX的通讯模型调整为基于HTTP的B-RPC的通讯模型;
897 902
 - 2、执行器支持手动设置执行地址列表,提供开关切换使用注册地址还是手动设置的地址;
898 903
 - 3、执行器路由规则:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
@@ -903,20 +908,20 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
903 908
 - 8、新建任务默认为非运行状态;
904 909
 - 9、GLUE模式任务实例更新逻辑优化,原根据超时时间更新改为根据版本号更新,源码变动版本号加一;
905 910
 
906
-#### 6.12 版本 V1.6.1 特性[2017-03-25]
911
+### 6.12 版本 V1.6.1 特性[2017-03-25]
907 912
 - 1、Rolling日志;
908 913
 - 2、WebIDE交互重构;
909 914
 - 3、通讯增强校验,有效过滤非正常请求;
910 915
 - 4、权限增强校验,采用动态登录TOKEN(推荐接入内部SSO);
911 916
 - 5、数据库配置优化,解决乱码问题;
912 917
 
913
-#### 6.13 版本 V1.6.2 特性[2017-04-25]
918
+### 6.13 版本 V1.6.2 特性[2017-04-25]
914 919
 - 1、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
915 920
 - 2、JobHandler支持设置任务返回值,在任务逻辑中可以方便的控制任务执行结果;
916 921
 - 3、资源路径包含空格或中文时资源文件无法加载时,无法准确查看异常信息的问题处理。
917 922
 - 4、路由策越优化:循环和LFU路由策略计数器自增无上限问题和首次路由压力集中在首台机器的问题修复;
918 923
 
919
-#### 6.14 版本 V1.7.0 特性[2017-05-02]
924
+### 6.14 版本 V1.7.0 特性[2017-05-02]
920 925
 - 1、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python和Groovy等类型脚本;
921 926
 - 2、新增spring-boot类型执行器example项目;
922 927
 - 3、升级jetty版本至9.2;
@@ -924,7 +929,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
924 929
 - 5、执行器移除GlueLoader依赖,改为推送方式实现,从而GLUE源码加载不再依赖JDBC;
925 930
 - 6、登录拦截Redirect时获取项目名,解决非根据目录发布时跳转404问题;
926 931
 
927
-#### 6.15 版本 V1.7.1 特性[2017-05-08]
932
+### 6.15 版本 V1.7.1 特性[2017-05-08]
928 933
 - 1、运行日志读写编码统一为UTF-8,解决windows环境下日志乱码问题;
929 934
 - 2、通讯超时时间限定为10s,避免异常情况下调度线程占用;
930 935
 - 3、执行器,server启动、销毁和注册逻辑调整;
@@ -934,7 +939,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
934 939
 - 7、弹框组件统一替换为layer;
935 940
 - 8、升级quartz版本至2.3.0;
936 941
 
937
-#### 6.16 版本 V1.7.2 特性[2017-05-17]
942
+### 6.16 版本 V1.7.2 特性[2017-05-17]
938 943
 - 1、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
939 944
 - 2、失败处理策略;调度失败时的处理策略,策略包括:失败告警(默认)、失败重试;
940 945
 - 3、通讯时间戳超时时间调整为180s;
@@ -942,7 +947,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
942 947
 - 5、执行参数编辑时丢失问题修复;
943 948
 - 6、新增任务测试Demo,方便在开发时进行任务逻辑测试;
944 949
 
945
-#### 6.17 版本 V1.8.0 特性[2017-07-17]
950
+### 6.17 版本 V1.8.0 特性[2017-07-17]
946 951
 - 1、任务Cron更新逻辑优化,改为rescheduleJob,同时防止cron重复设置;
947 952
 - 2、API回调服务失败状态码优化,方便问题排查;
948 953
 - 3、XxlJobLogger的日志多参数支持;
@@ -955,7 +960,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
955 960
 - 10、执行日志,支持根据运行 "状态" 筛选日志;
956 961
 - 11、调度中心任务注册检测逻辑优化;
957 962
 
958
-#### 6.18 版本 V1.8.1 特性[2017-07-30]
963
+### 6.18 版本 V1.8.1 特性[2017-07-30]
959 964
 - 1、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数处理分片任务;
960 965
 - 2、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
961 966
 - 3、执行器JobHandler禁止命名冲突;
@@ -968,12 +973,12 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
968 973
 - 10、springboot版本执行器,升级至1.5.6.RELEASE版本;
969 974
 - 11、统一maven依赖版本管理;
970 975
 
971
-#### 6.18 版本 V1.8.2 特性[Coding]
976
+### 6.18 版本 V1.8.2 特性[Coding]
972 977
 - 1、解决执行器回调URL不支持配置HTTPS时问题;
973 978
 - 2、规范项目目录,方便扩展多执行器;
974 979
 - 3、新增JFinal类型执行器sample示例项目;
975 980
 
976
-#### TODO LIST
981
+### TODO LIST
977 982
 - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
978 983
 - 2、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动;目前采用IP自然排序,可以满足需求,待定;
979 984
 - 3、失败重试优化:目前失败重试逻辑为,在本次调度请求失败后重新执行一次请求逻辑。优化点为针对调度和执行失败时均做失败重试,重试时重新触发一次完整调度,这将可能导致失败是调度死循环,待定。
@@ -987,21 +992,20 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
987 992
 
988 993
 ## 七、其他
989 994
 
990
-#### 7.1 报告问题
991
-XXL-JOB托管在Github上,如有问题可在 [ISSUES](https://github.com/xuxueli/xxl-job/issues/) 上提问,也可以加入上文技术交流群;
995
+### 7.1 项目贡献
996
+欢迎参与项目贡献!比如提交PR修复一个bug,或者新建 [Issue](https://github.com/xuxueli/xxl-job/issues/) 讨论新特性或者变更。
992 997
 
993
-#### 7.2 用户接入登记
994
-登记仅为了产品推广,产品开源免费。   
995
-请接入使用的公司或个人进行用户登记 [登记地址](https://github.com/xuxueli/xxl-job/issues/1 ) 。
998
+### 7.2 用户接入登记
999
+更多接入的公司,欢迎在 [登记地址](https://github.com/xuxueli/xxl-job/issues/1 ) 登记,登记仅仅为了产品推广。
996 1000
 
997
-#### 7.3 开源协议和版权
1001
+### 7.3 开源协议和版权
998 1002
 产品开源免费,并且将持续提供免费的社区技术支持。个人或企业内部可自由的接入和使用。
999 1003
 
1000
-XXL-JOB采用GPLv3协议,目的是为了保证用户的自由使用权利。协议可避免专利申请的特殊危险 "the GPL assures that patents cannot be used to render the program non-free.(摘自GPLv3)"。  
1001
-Copyright (c) 2015-present, xuxueli.
1004
+- Licensed under the GNU General Public License (GPL) v3.
1005
+- Copyright (c) 2015-present, xuxueli.
1002 1006
 
1003 1007
 ---
1004
-#### 捐赠
1008
+### 捐赠
1005 1009
 支持的话可以扫一扫,请作者喝杯咖啡吧:)
1006 1010
 
1007 1011
 微信:![输入图片说明](https://static.oschina.net/uploads/img/201707/07214300_qhxT.png "在这里输入图片标题")

+ 1 - 1
xxl-job-admin/src/main/webapp/WEB-INF/template/help.ftl ファイルの表示

@@ -36,7 +36,7 @@
36 36
 					<a target="_blank" href="https://github.com/xuxueli/xxl-job">github</a>&nbsp;&nbsp;&nbsp;&nbsp;
37 37
 					<iframe src="https://ghbtns.com/github-btn.html?user=xuxueli&repo=xxl-job&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px" style="margin-bottom:-5px;"></iframe> 
38 38
 					<br><br>
39
-                    <a target="_blank" href="http://my.oschina.net/xuxueli/blog/690978">oschina(文档中有交流群)</a>
39
+                    <a target="_blank" href="http://www.xuxueli.com/xxl-job/">文档地址</a>
40 40
                     <br><br>
41 41
 
42 42
 				</p>