本發(fā)明涉及遠程集中計量系統(tǒng),具體涉及一種自動分配各秤點客戶端的計量任務(wù)到遠端的坐席客戶端上統(tǒng)一集中處理的用于遠程集中計量的任務(wù)調(diào)度裝置及調(diào)度方法。
背景技術(shù):
現(xiàn)有計量任務(wù)分配技術(shù)基于配置在tomcat服務(wù)器上的權(quán)限系統(tǒng)(權(quán)限數(shù)據(jù)保存在mysql數(shù)據(jù)庫),權(quán)限系統(tǒng)定義了消息服務(wù)器Ipush的訪問權(quán)限,秤點發(fā)送任務(wù)數(shù)據(jù)消息到消息服務(wù)器,Delphi編寫的任務(wù)服務(wù)器監(jiān)聽任務(wù)消息,然后動態(tài)分配任務(wù)(坐席數(shù)據(jù)和任務(wù)數(shù)據(jù)保存在oracle數(shù)據(jù)庫),最后通過消息服務(wù)器發(fā)送任務(wù)消息到坐席機程序上。
現(xiàn)有實現(xiàn)方法的主要問題有:部署的任務(wù)服務(wù)器依賴的基礎(chǔ)服務(wù)太多,手工配置也很復(fù)雜,每次出現(xiàn)問題時,僅僅查找到故障原因就需花好長時間,且依賴的消息服務(wù)器也不穩(wěn)定,為了保證程序正常運行,各服務(wù)器必須定時重啟,導(dǎo)致此時的計量任務(wù)丟失。
技術(shù)實現(xiàn)要素:
為解決上述問題,本發(fā)明提供一種架構(gòu)簡單,任務(wù)調(diào)度效果高的用于遠程集中計量的任務(wù)調(diào)度裝置及其調(diào)度方法。
本發(fā)明的技術(shù)方案是:一種用于遠程集中計量的任務(wù)調(diào)度裝置,包括:
秤點客戶端:向秤點監(jiān)聽服務(wù)器發(fā)送計量任務(wù);
秤點監(jiān)聽服務(wù)器:接收秤點客戶端發(fā)送來的計量任務(wù)后,通過redis頻道消息觸發(fā)分發(fā)任務(wù)服務(wù)器,并向秤點客戶端返回對應(yīng)消息id;
坐席監(jiān)聽服務(wù)器:接收分發(fā)任務(wù)服務(wù)器發(fā)送來的計量任務(wù),通知坐席客戶端;接收坐席客戶端發(fā)送來的計量任務(wù)完成命令,通過redis頻道消息通知秤點監(jiān)聽服務(wù)器,由秤點監(jiān)聽服務(wù)器通知秤點客戶端;
坐席客戶端:接收坐席監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù),完成計量任務(wù)后,發(fā)送計量任務(wù)完成命令給坐席監(jiān)聽服務(wù)器,坐席監(jiān)聽服務(wù)器向坐席客戶端返回對應(yīng)消息id;
分發(fā)任務(wù)服務(wù)器:被秤點監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù)觸發(fā)后,查找下一個空閑坐席客戶端,然后分配計量任務(wù)到對應(yīng)的坐席客戶端的每坐席任務(wù)狀態(tài)redis列表下,并通過redis頻道消息通知坐席監(jiān)聽服務(wù)器;
所述秤點監(jiān)聽服務(wù)器、坐席監(jiān)聽服務(wù)器、分發(fā)任務(wù)服務(wù)器均采用nodejs運行庫+redis數(shù)據(jù)庫構(gòu)架。
進一步地,秤點客戶端通過socket與秤點監(jiān)聽服務(wù)器連接。
進一步地,坐席客戶端通過socket與坐席監(jiān)聽服務(wù)器連接。
進一步地,坐席監(jiān)聽服務(wù)器與秤點監(jiān)聽服務(wù)器之間設(shè)置傳遞消息的消息投遞服務(wù)器,消息投遞服務(wù)器采用nodejs運行庫+redis數(shù)據(jù)庫構(gòu)架。
一種用于遠程集中計量的任務(wù)調(diào)度裝置的調(diào)度方法包括以下步驟:
(1)秤點客戶端向秤點監(jiān)聽服務(wù)器發(fā)送計量任務(wù);
(2)秤點監(jiān)聽服務(wù)器接收秤點客戶端發(fā)送來的計量任務(wù)后,通過redis頻道消息觸發(fā)分發(fā)任務(wù)服務(wù)器,并向秤點客戶端返回對應(yīng)消息id,若秤點客戶端未收到對應(yīng)消息id,則返回步驟(1),否則執(zhí)行步驟(3);
(3)分發(fā)任務(wù)服務(wù)器被秤點監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù)觸發(fā)后,查找下一個空閑坐席客戶端,然后分配計量任務(wù)到對應(yīng)的坐席客戶端的每坐席任務(wù)狀態(tài)redis列表下,并通過redis頻道消息通知坐席監(jiān)聽服務(wù)器;
(4)坐席監(jiān)聽服務(wù)器接收分發(fā)任務(wù)服務(wù)器發(fā)送來的計量任務(wù),通知坐席客戶端;
(5)坐席客戶端接收坐席監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù),完成計量任務(wù),然后發(fā)送計量任務(wù)完成命令給坐席監(jiān)聽服務(wù)器;
(6)坐席監(jiān)聽服務(wù)器接收坐席客戶端發(fā)送來的計量任務(wù)完成命令,并向坐席客戶端返回對應(yīng)消息id,若坐席客戶端未接收到對應(yīng)消息id,則返回步驟(5),否則執(zhí)行步驟(7);
(7)坐席監(jiān)聽服務(wù)器通過redis頻道消息通知秤點監(jiān)聽服務(wù)器,由秤點監(jiān)聽服務(wù)器通知秤點客戶端。
進一步地,所述秤點監(jiān)聽服務(wù)器、坐席監(jiān)聽服務(wù)器、分發(fā)任務(wù)服務(wù)器均采用nodejs運行庫+redis數(shù)據(jù)庫構(gòu)架。
進一步地,步驟(6)中坐席監(jiān)聽服務(wù)器與秤點監(jiān)聽服務(wù)器之間通過消息投遞服務(wù)器傳遞消息,消息投遞服務(wù)器采用nodejs運行庫+redis數(shù)據(jù)庫構(gòu)架。
進一步地,分發(fā)任務(wù)服務(wù)器包括redis秤點任務(wù)堆棧列表、活動坐席redis列表、每坐席任務(wù)狀態(tài)redis列表。
進一步地,步驟(3)中分發(fā)任務(wù)服務(wù)器分發(fā)任務(wù)規(guī)則包括:
(a)最早的計量任務(wù)優(yōu)先分配原則;
(b)按坐席客戶端次序分配計量任務(wù),當某個坐席客戶端忙時,跳過該坐席客戶端繼續(xù)分配;
(c)坐席客戶端定義只關(guān)注某幾個秤點客戶端,分發(fā)任務(wù)服務(wù)器只分配對應(yīng)秤點客戶端的計量任務(wù)到該坐席客戶端;
(d)計量任務(wù)被坐席客戶端退回到任務(wù)隊列后,優(yōu)先將計量任務(wù)安排給該坐席客戶端。
本發(fā)明提供的用于遠程集中計量的任務(wù)調(diào)度裝置,采用nodejs運行庫+redis數(shù)據(jù)庫構(gòu)架,構(gòu)架先進,使整個計量任務(wù)分配的計算程序在計算效率上達到最大優(yōu)化,響應(yīng)速度快,在響應(yīng)高并發(fā)計量任務(wù)時,各個服務(wù)器表現(xiàn)也非常好,運行穩(wěn)定;且安裝該構(gòu)架后,各個服務(wù)器程序即可直接運行,不需其他配置,實施簡單。另外各個服務(wù)器設(shè)計合理,兼容性強,支持秤點客戶端或坐席客戶端發(fā)送多種格式的計量任務(wù)格式,可直接作為其他需要任務(wù)調(diào)度的業(yè)務(wù)任務(wù)調(diào)度服務(wù)器。本方案的調(diào)度方法任務(wù)分配算法合理,使每個坐席客戶端能平均分配到計量任務(wù)。
附圖說明
圖1是本發(fā)明具體實施例事件流示意圖。
具體實施方式
下面結(jié)合附圖并通過具體實施例對本發(fā)明進行詳細闡述,以下實施例是對本發(fā)明的解釋,而本發(fā)明并不局限于以下實施方式。
如圖1所示,本發(fā)明提供的用于遠程集中計量的任務(wù)調(diào)度裝置,包括秤點客戶端、秤點監(jiān)聽服務(wù)器、分發(fā)任務(wù)服務(wù)器、消息投遞服務(wù)器、坐席監(jiān)聽服務(wù)器和坐席客戶端。
秤點客戶端:向秤點監(jiān)聽服務(wù)器發(fā)送計量任務(wù)。
秤點監(jiān)聽服務(wù)器:接收秤點客戶端發(fā)送來的計量任務(wù)后,通過redis頻道消息觸發(fā)分發(fā)任務(wù)服務(wù)器,并向秤點客戶端返回對應(yīng)消息id。
坐席監(jiān)聽服務(wù)器:接收分發(fā)任務(wù)服務(wù)器發(fā)送來的計量任務(wù),通知坐席客戶端;接收坐席客戶端發(fā)送來的計量任務(wù)完成命令,通過redis頻道消息通知秤點監(jiān)聽服務(wù)器,由秤點監(jiān)聽服務(wù)器通知秤點客戶端。
坐席客戶端:接收坐席監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù),完成計量任務(wù)后,發(fā)送計量任務(wù)完成命令給坐席監(jiān)聽服務(wù)器,坐席監(jiān)聽服務(wù)器向坐席客戶端返回對應(yīng)消息id。
分發(fā)任務(wù)服務(wù)器:被秤點監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù)觸發(fā)后,查找下一個空閑坐席客戶端,然后分配計量任務(wù)到對應(yīng)的坐席客戶端的每坐席任務(wù)狀態(tài)redis列表下,并通過redis頻道消息通知坐席監(jiān)聽服務(wù)器。
消息投遞服務(wù)器:設(shè)置在坐席監(jiān)聽服務(wù)器與秤點監(jiān)聽服務(wù)器之間,用于坐席監(jiān)聽服務(wù)器向秤點監(jiān)聽服務(wù)器傳遞消息。
秤點監(jiān)聽服務(wù)器、坐席監(jiān)聽服務(wù)器、分發(fā)任務(wù)服務(wù)器、消息投遞服務(wù)器均采用nodejs運行庫+redis數(shù)據(jù)庫構(gòu)架。其中nodejs運行庫內(nèi)采用socket.io實現(xiàn)秤點監(jiān)聽服務(wù)器與秤點客戶端之間、坐席監(jiān)聽服務(wù)器與坐席客戶端之間的實時通信及自定義事件通知,即秤點客戶端通過socket與秤點監(jiān)聽服務(wù)器連接,坐席客戶端通過socket與坐席監(jiān)聽服務(wù)器連接。各個服務(wù)器采用redis數(shù)據(jù)庫在內(nèi)存里保存計量任務(wù)數(shù)據(jù)及消息機制在各個服務(wù)器間傳遞消息,服務(wù)器間通過訪問相同的redis和訂閱對應(yīng)redis消息頻道及發(fā)送頻道消息觸發(fā)下一流程工作。
本發(fā)明提供的用于遠程集中計量的任務(wù)調(diào)度裝置的調(diào)度方法,包括以下步驟:
(1)秤點客戶端向秤點監(jiān)聽服務(wù)器發(fā)送計量任務(wù);
(2)秤點監(jiān)聽服務(wù)器接收秤點客戶端發(fā)送來的計量任務(wù)后,通過redis頻道消息觸發(fā)分發(fā)任務(wù)服務(wù)器,并向秤點客戶端返回對應(yīng)消息id,若秤點客戶端未收到對應(yīng)消息id,則返回步驟(1),否則執(zhí)行步驟(3);
(3)分發(fā)任務(wù)服務(wù)器被秤點監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù)觸發(fā)后,查找下一個空閑坐席客戶端,然后分配計量任務(wù)到對應(yīng)的坐席客戶端的每坐席任務(wù)狀態(tài)redis列表下,并通過redis頻道消息通知坐席監(jiān)聽服務(wù)器;
(4)坐席監(jiān)聽服務(wù)器接收分發(fā)任務(wù)服務(wù)器發(fā)送來的計量任務(wù),通知坐席客戶端;
(5)坐席客戶端接收坐席監(jiān)聽服務(wù)器發(fā)送來的計量任務(wù),完成計量任務(wù),然后發(fā)送計量任務(wù)完成命令給坐席監(jiān)聽服務(wù)器;
(6)坐席監(jiān)聽服務(wù)器接收坐席客戶端發(fā)送來的計量任務(wù)完成命令,并向坐席客戶端返回對應(yīng)消息id,若坐席客戶端未接收到對應(yīng)消息id,則返回步驟(5),否則執(zhí)行步驟(7);
(7)坐席監(jiān)聽服務(wù)器通過redis頻道消息通知秤點監(jiān)聽服務(wù)器,由秤點監(jiān)聽服務(wù)器通知秤點客戶端。
其中,分發(fā)任務(wù)服務(wù)器包括redis秤點任務(wù)堆棧列表、活動坐席redis列表、每坐席任務(wù)狀態(tài)redis列表。觸發(fā)分發(fā)任務(wù)服務(wù)器工作的事件有:秤點客戶端上傳計量任務(wù)數(shù)據(jù)后,通過redis頻道消息通知;坐席客戶端完成計量任務(wù)后,通過redis頻道消息通知。
步驟(3)中分發(fā)任務(wù)服務(wù)器分發(fā)任務(wù)規(guī)則包括:
(a)最早的計量任務(wù)優(yōu)先分配原則;
(b)按坐席客戶端次序分配計量任務(wù),當某個坐席客戶端忙時,跳過該坐席客戶端繼續(xù)分配;
(c)坐席客戶端定義只關(guān)注某幾個秤點客戶端,分發(fā)任務(wù)服務(wù)器只分配對應(yīng)秤點客戶端的計量任務(wù)到該坐席客戶端;
(d)計量任務(wù)被坐席客戶端退回到任務(wù)隊列后,優(yōu)先將計量任務(wù)安排給該坐席客戶端。
該規(guī)則設(shè)置合理,使每個坐席客戶端平均分配到計量任務(wù),提高處理效率。
以上公開的僅為本發(fā)明的優(yōu)選實施方式,但本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的沒有創(chuàng)造性的變化,以及在不脫離本發(fā)明原理前提下所作的若干改進和潤飾,都應(yīng)落在本發(fā)明的保護范圍內(nèi)。