elastic job 開發坑位記錄

2021-08-21 00:04:48 字數 825 閱讀 4951

1.ej的乙個非常好的分布式任務排程框架,很多功能和特點,我在根據這個框架編寫的時候發現他並不適用外部第三方增加任務。我使用包裝rest介面的方式,將init做成乙個介面,加乙個任務呼叫一次就可以。

2.在大部分編寫完成後,我讀文件的時候發現他所提供的是必須要寫在xml或者bean裡,這個是關鍵,意味著服務掛掉的話整個的任務都會丟失,所以必須採用完善的宕機策略。因此我把每個任務都事先儲存,在服務啟動時將這個本身寫在bean裡 (因為專案是springboot的),服務開啟時會自動讀取相應的任務記錄,並重新記錄。由於採用的是dataflow的方式就執行一次也很簡單。

3.在做完以上操作後我嘗試多個服務,即高可用,註冊後其他的服務並沒有進行相應的任務,原因和第二個一樣,所以我必須要進行相應的調整來告訴其他伺服器需要註冊這個服務,我想了兩種辦法,乙個是進行分發,就是寫個httpclient把資料給其他伺服器,還乙個是從zk拿資料,最後是採用的httpclient,比較快和穩定。

4.在一系列開發到達最後的時候,我要將這個放在伺服器上進行壓測的時候,發現ej他每個任務都會固定占用4個執行緒作為留守執行緒,並且在任務開始後,占用相應數量的執行緒來做操作,當然這符合ej本身寫固定任務的需求,但是我時rest的啊 理論上是無限個任務的,當任務為4000個時,不管怎麼樣都是會炸掉的,不管分布式這麼弄,他占用的執行緒是一樣的多。失效轉移也是根據這個執行緒來做的。此時的場景是4c16g伺服器三颱,炸的很穩定。目前可以採用命令來限制大小或執行緒釋放速度,看了下是因為堆記憶體占用的原因,占用到4g的時候穩定炸的。

5.為了減小他的任務數,我只能採用每個任務多個租戶的方式做每個執行緒物盡其用,其次還有如果使用他本身的鏈路追蹤的話,他一次任務會插4次資料庫,在大資料量的時候必須提高資料庫的連線數。

C 串列埠開發填坑記

串列埠雖然簡單,但是想要做得 耐用 還是要花些心思!本文把開發中遇到的問題總結,希望能幫到各位小夥伴。因為,串列埠接收和介面顯示更新不屬於同一執行緒,如果在接收到串列埠資料後就直接更新到ui,報錯 解決方案 this begininvoke eventhandler delegate region ...

mybatis LocalCache踩坑記錄

上週週三下午,準備去吃飯的時候,值班突然找過來說使用者操作時爆出訂單不存在的問題,因為之前做了分表連續很長一段時間都沒問題,而且當時找過來的都是一些因為產品或者qa操作不當找不到記錄的情況,就沒有在意這些,當時以為幾分鐘就能搞定,但是沒想到居然是線上日誌爆出的問題,經過驗證訂單確實不存在!心想完了,...

pycharm QTdesigner採坑記錄

pip install pyqt5 sip pip install pyside2 兩個庫都下上吧,遲早會用上 乙個是python環境 我的python環境是 python38 32,python.exe 然後複製路徑到 program裡面 上方的 name和description 自行命名,gro...