偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我寫了一個(gè)教學(xué)型的任務(wù)調(diào)度系統(tǒng),很強(qiáng)!

開(kāi)發(fā) 項(xiàng)目管理
在我的職業(yè)生涯里,接觸過(guò)如下 TimerTask 、Quartz 、SpringTask、 時(shí)間輪 HashWheelTimer 、Elastic-Job 、XXL-JOB、PowerJob、AirFlow 等任務(wù)調(diào)度系統(tǒng),也曾在一家汽車租賃公司自研過(guò)基于 XXL-JOB 改造的任務(wù)調(diào)度系統(tǒng)。

一、架構(gòu)概覽

在我的職業(yè)生涯里,接觸過(guò)如下 TimerTask 、Quartz 、SpringTask、 時(shí)間輪 HashWheelTimer 、Elastic-Job 、XXL-JOB、PowerJob、AirFlow 等任務(wù)調(diào)度系統(tǒng),也曾在一家汽車租賃公司自研過(guò)基于 XXL-JOB 改造的任務(wù)調(diào)度系統(tǒng)。

不少同學(xué)對(duì)我原來(lái)的自研經(jīng)歷很感興趣,于是我編寫了一個(gè)教學(xué)型的任務(wù)調(diào)度系統(tǒng)(支持 10萬(wàn) + 調(diào)度任務(wù)),希望能幫助中高級(jí)工程師快速提升架構(gòu)思維。

經(jīng)過(guò)多輪思考,最終架構(gòu)圖如下 :

圖片圖片

任務(wù)調(diào)度系統(tǒng)分為三個(gè)核心組件:

1、網(wǎng)關(guān)層負(fù)責(zé)應(yīng)用的接入,任務(wù)的推送。

2、Admin 層負(fù)責(zé)任務(wù)的管理、任務(wù)的分片、UI 界面等。

3、Worker 層負(fù)責(zé)任務(wù)的調(diào)度,并將任務(wù)觸發(fā)到網(wǎng)關(guān)。

之所以這么設(shè)計(jì),必須保證所有的組件是可水平擴(kuò)展的 。

技術(shù)棧如下表:

技術(shù)名稱

簡(jiǎn)介

Spring Boot

基于 Spring 的快速開(kāi)發(fā)框架,簡(jiǎn)化配置,提供內(nèi)嵌服務(wù)器和自動(dòng)配置功能。

MySQL

開(kāi)源關(guān)系型數(shù)據(jù)庫(kù),支持 SQL 和事務(wù),適用于結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)與管理。

MyBatis

半自動(dòng)化 ORM 框架,通過(guò) XML/注解靈活映射 SQL 與 Java 對(duì)象,支持動(dòng)態(tài) SQL。

RocksDB

高性能嵌入式 Key-Value 存儲(chǔ)引擎,適用于高吞吐、低延遲的本地?cái)?shù)據(jù)持久化場(chǎng)景。

Netty

異步事件驅(qū)動(dòng)網(wǎng)絡(luò)框架,支持高并發(fā)通信,常用于構(gòu)建 TCP/UDP/HTTP 協(xié)議服務(wù)端或客戶端。

Guava

Google 開(kāi)發(fā)的 Java 核心工具庫(kù),提供集合、緩存、字符串處理等高效工具類,簡(jiǎn)化開(kāi)發(fā)。

Quartz

開(kāi)源作業(yè)調(diào)度框架,支持復(fù)雜定時(shí)任務(wù)(如按計(jì)劃執(zhí)行、周期性任務(wù))。

Zookeeper

開(kāi)源分布式協(xié)調(diào)框架,提供分布式同步、配置管理和服務(wù)發(fā)現(xiàn),常用于分布式系統(tǒng)中。

項(xiàng)目倉(cāng)庫(kù)截圖:

圖片圖片

二、部署流程

勇哥將服務(wù)部署到 1 臺(tái)阿里云服務(wù)器上,數(shù)據(jù)庫(kù)部署在騰訊云。

圖片圖片

1 數(shù)據(jù)庫(kù) MySQL 和 Zookeeper

  • 數(shù)據(jù)庫(kù)

創(chuàng)建數(shù)據(jù)庫(kù) platform_schedule ,執(zhí)行 doc 目錄下的 SQL 腳本:

圖片圖片

執(zhí)行完成后,如下圖:

圖片圖片

  • Zookeeper

下載 zookeeper-3.6.0 版本,解壓后復(fù)制一份 zoo_sample.cfg ,重命名為 zoo.cfg ,保持默認(rèn)配置即可。

圖片圖片

2 部署 Admin、GateWay、Worker

  • 打包

在 Admin 模塊、GateWay 模塊、Worker 模塊執(zhí)行三個(gè)步驟:修改數(shù)據(jù)庫(kù)配置、打包、拷貝部署包到服務(wù)器。

圖片圖片

  • 啟動(dòng) Admin 服務(wù)
nohup java -Xms300m -Xmx350m -jar schedule-admin.jar  &
  • 啟動(dòng) GateWay 服務(wù)
nohup java -Xms200m -Xmx400m -jar schedule-gateway.jar  &
  • 啟動(dòng) Worker 服務(wù)
nohup java -Xms200m -Xmx300m -jar schedule-worker.jar  &

3.線上體驗(yàn)

1)登錄

圖片圖片

2)集群管理

圖片圖片

因?yàn)?GateWay 、Woker 都需要向 Admin 注冊(cè)實(shí)例信息,我們可以將 Admin 當(dāng)做簡(jiǎn)單的注冊(cè)中心,所以需要配置如下信息:

  • Admin 注冊(cè)服務(wù)地址 ,格式是:ip1:10001;ip2:10001。
  • zk 集群地址 ,用于 Admin 集群,實(shí)現(xiàn)主從模式 。

3.添加應(yīng)用

圖片圖片

我們生產(chǎn)環(huán)境創(chuàng)建了1個(gè)應(yīng)用,應(yīng)用名是: mytest , appKey 為 1400001,客戶端訪問(wèn)任務(wù)調(diào)度系統(tǒng)需要配置 appKey 和 appSecret 。

4.添加任務(wù)

圖片圖片

我們定義了一個(gè)任務(wù) ,名稱是:測(cè)試任務(wù),每 15 秒執(zhí)行一次,jobHandler 定義為 myJobHandler 。

5.測(cè)試任務(wù)

從 gitcode 下載源碼后 ,查看 Demo 模塊 ,模塊需要添加客戶端依賴和 編寫任務(wù)實(shí)現(xiàn)。

1)客戶端依賴
<!--  依賴 客戶端 start -->
 <dependency>
      <groupId>cn.javayong</groupId>
       <artifactId>schedule-client</artifactId>
       <version>${parent.version}</version>
 </dependency>
   <!--  依賴 客戶端 end -->
2)配置網(wǎng)關(guān)地址以及秘鑰

圖片圖片

3)編寫任務(wù)實(shí)現(xiàn)

@Service
publicclass DemoJob {

    privatefinalstatic Logger logger = LoggerFactory.getLogger(DemoJob.class);

    // 1、添加任務(wù)調(diào)度的自定義注解 RSAnnotation , 值是 job 的 bean值
    // 2、ScheduleParam 調(diào)度參數(shù)
    // 3、ScheduleResult 調(diào)度結(jié)果 
    @RSAnnotation(value = "myJobHandler")
    public ScheduleResult doTestJob(ScheduleParam scheduleParam) {
        logger.info("myJobHandler:" + JSON.toJSONString(scheduleParam));
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
        }
        returnnew ScheduleResult(ScheduleResult.SUCCESS_CODE, "正常響應(yīng)");
    }
    
}

4)啟動(dòng)任務(wù)演示項(xiàng)目

圖片圖片

展示了一個(gè)簡(jiǎn)單的任務(wù)調(diào)度類 DemoJob,它包含一個(gè)可以被調(diào)度執(zhí)行的方法 doTestJob ,該方法的注解是: myJobHandler  , 與我們?cè)?Admin 控制臺(tái)創(chuàng)建的測(cè)試任務(wù)保持一致。

啟動(dòng) DemoApplication ,本地執(zhí)行結(jié)果:

圖片圖片

如圖,每隔 15 秒,我們的控制臺(tái)會(huì)打印執(zhí)行日志。

在 Admin 調(diào)度日志頁(yè)面,查看日志:

圖片圖片

我們也發(fā)現(xiàn)啟動(dòng)應(yīng)用后,可以查看在線應(yīng)用:

圖片圖片

對(duì)于客戶端來(lái)講,任務(wù)執(zhí)行是網(wǎng)關(guān)推送過(guò)來(lái)的,所以我們?cè)诩疫\(yùn)行代碼也可以執(zhí)行。網(wǎng)關(guān)會(huì)保存客戶端的出網(wǎng) IP ,在線應(yīng)用列表可以展示所有在線客戶端。

責(zé)任編輯:武曉燕 來(lái)源: 勇哥Java實(shí)戰(zhàn)
相關(guān)推薦

2023-03-01 09:39:40

調(diào)度系統(tǒng)

2018-07-17 15:15:33

任務(wù)調(diào)度系統(tǒng)

2021-06-07 10:20:31

2021-02-02 11:59:15

插件開(kāi)發(fā)工具

2021-02-20 07:52:35

防猝死插件 IDEA

2024-03-22 08:51:36

分庫(kù)分表項(xiàng)目

2022-04-25 15:01:07

系統(tǒng)程序員調(diào)度

2022-02-25 08:25:25

程序開(kāi)發(fā)代碼

2020-11-02 08:19:18

RPC框架Java

2023-12-28 08:01:59

2020-12-28 05:54:37

構(gòu)造builder模式

2021-03-11 08:32:58

參數(shù)模式構(gòu)造

2009-09-02 18:36:46

LinuxLinux操作系統(tǒng)Linux開(kāi)發(fā)

2020-08-25 20:10:53

GitHub代碼開(kāi)發(fā)者

2022-09-21 12:01:22

消息隊(duì)列任務(wù)隊(duì)列任務(wù)調(diào)度

2019-07-19 15:51:11

框架選型分布式

2021-08-12 00:03:37

JSStrview視圖

2022-07-05 10:09:18

exceljson文件

2022-12-29 08:32:50

xxl-job緩存Schedule

2024-08-07 08:15:47

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)