1769-PB2任務(wù)持久化存儲(chǔ)之后,我們采用一個(gè)Daemon程序執(zhí)行定期掃表任務(wù),將到期的任務(wù)取出,將請(qǐng)求中帶的業(yè)務(wù)信息(biz_data添加任務(wù)時(shí)帶來(lái),定時(shí)器透?jìng)?,不關(guān)注其具體內(nèi)容)回調(diào)通知業(yè)務(wù)方。這么一看流程還是很簡(jiǎn)單的。
這里掃描的流程類似上面講的時(shí)間輪算法,會(huì)有一個(gè)指針(我們?cè)谶@里不妨稱之為time_pointer)不斷向后移動(dòng),保證不會(huì)漏掉任何一個(gè)bucket的任務(wù)。這里我們采用的是commkv(可以簡(jiǎn)單理解為可以按照key-value形式讀寫的kv,其底層仍是基于tablekv實(shí)現(xiàn))存儲(chǔ)CurrentTime,也就是當(dāng)前處理到的時(shí)間戳。每次輪詢時(shí)Daemon都會(huì)通過(guò)GetByKey接口獲取到CurrentTime,若大于當(dāng)前機(jī)器時(shí)間,則sleep一段時(shí)間。若小于等于當(dāng)前機(jī)器時(shí)間,則取出tablekv中以CurrentTime為uin的分表的TaskList進(jìn)行處理。本次輪詢結(jié)束,則CurrentTime加一,再通過(guò)SetByKey設(shè)置回commkv。這個(gè)部分的工作模式我們可以簡(jiǎn)稱為Scheduler。
Scheduler拿到任務(wù)后只需要回調(diào)通知業(yè)務(wù)方即可。如果采用同步通知業(yè)務(wù)方的方式,由于業(yè)務(wù)方的超時(shí)情況是不可控的,則一個(gè)任務(wù)的投遞時(shí)間可能會(huì)較長(zhǎng),導(dǎo)致拖慢這個(gè)時(shí)間點(diǎn)的任務(wù)整體通知進(jìn)度。故而這里自然而然想到采用異步解耦的方式。即將任務(wù)發(fā)布至事件中心(微信內(nèi)部的高可用、高可靠的消息平臺(tái),支持事務(wù)和非事務(wù)消息。由于一個(gè)任務(wù)的投遞到事件中心的時(shí)間僅為幾十ms,理論上任務(wù)量級(jí)不大時(shí)1s內(nèi)都可以處理完。此時(shí)time_pointer會(huì)緊跟當(dāng)前時(shí)間戳。當(dāng)大量任務(wù)需要處理時(shí),需要采用多線程/多協(xié)程的方式并發(fā)處理,保證任務(wù)的準(zhǔn)時(shí)交付。broker訂閱事件中心的消息,接受到消息后由broker回調(diào)通知業(yè)務(wù)方,故broker也充當(dāng)了Notifier的角色。
1769-PB2
1769-PB2
ALLEN BRADLEY 700-CF400ZJ Ser A Control Relay (2781)
ALLEN BRADLEY 700-CF400D Ser A Control Relay (2781)
ALLEN BRADLEY 100-C30ZJ10 SER C CONTACTOR 24VDC (2780)
12 Nordson Connectors part # 972628A 0 9/16 (2775)
12 Connectors for Nordson, part # 972628A 0 9/16 (2774)
HUMPHREY Pneumatic Foot Control 49003 250F (3062)
EATON Cutler-Hammer PS256A-05B1 Power Supply New (3066)
EATON Cutler-Hammer PS256A-05B1 Power Supply New (3054)
Cutler Hammer Limit Switch E50SAL, E50RA, E50DH1 (3052)
Leeson 175326 FHP AC Drive Motor Control - New (3060)
Finder Mini Relay 55.13.9.024.000?0 24 VDC 11 Pin (2835)
Siemens Power Module 6SN1123-1AA00-0?LA3 New (3069)
GE Fanuc Series 90-30 Output IC693MDL940D (2956)
GE Fanuc Series 90-30 Output IC693MDL740E (2955)
GE Fanuc Series 90-30 Input IC693MDL645B (2953)
Andersen Sailboat Bailers Mini 1 1/2" x 2 1/4" - NEW
GE Fanuc Series 90-30 Power Supply IC693PWR321R (2951)
Jet-Set Flex Nozzle Holder 1000-M (2950)
Digital AC/DC Clamp On Meter BK Model 330B (2949)
Allen-Bradley 3-POS Selector Switch 800T-J4 New (3076)
Digital AC/DC Clamp On Meter GCM-307 - New (2948)
Symbol Universal Battery Charger 21-65587-01 (2476)
Siemens Switch 3SE7 160-1BD00-0AS1 - New ( 3075)
Prominent Meterings Fluids Metering Pump GAMMA/4 (3071)
Anderson Inst. Co EDT 160-A20 Temp Xmitter Xducer (3070
Square D Heavy Duty Safety Switch 60 AMP (2046)
Square D Class 8502 Type PC 3.10 E Contactor (2149)
VeriFone Interface PP101 IBM AT 10776-02 (2927)
Square D Powerlink Circuit Breaker QO120AS 20A 120VAC