最近做根據(jù)網(wǎng)段ip自動搜索網(wǎng)元、創(chuàng)建榛泛、上載(極為耗時(shí))的功能(網(wǎng)管的概念蝌蹂,不重要),需要達(dá)到的效果是后臺進(jìn)行到任意一個(gè)狀態(tài)時(shí)曹锨,前臺都可以感知到孤个。
核心任務(wù)有四個(gè):
一、異步
即前臺下發(fā)接口后不會干擾其他的操作沛简,立即返回齐鲤,具體的過程交給線程解決即可硅急。
二、狀態(tài)機(jī)
重點(diǎn)1:單例佳遂,這個(gè)狀態(tài)機(jī)要求是單例的
重點(diǎn)2:具體的狀態(tài)描述营袜,包括上一個(gè)任務(wù)數(shù)、當(dāng)前狀態(tài)丑罪、當(dāng)前已完成任務(wù)數(shù)等
重點(diǎn)3:數(shù)據(jù)緩存和重入的問題
三荚板、前后臺交互
最初的方案是定義一個(gè)restful接口前臺進(jìn)行輪詢,后面發(fā)現(xiàn)太傻了這樣吩屹,已經(jīng)有成熟的協(xié)議能夠保持長鏈接——webSocket跪另。其優(yōu)點(diǎn)在于,后臺決定消息是否上報(bào)煤搜,前臺監(jiān)聽即可免绿。
webSocket最經(jīng)典的項(xiàng)目是聊天室,它可以保證其實(shí)時(shí)聊天擦盾。
四嘲驾、多線程上載
由于這個(gè)操作及其耗時(shí),且可能有多個(gè)網(wǎng)元上載迹卢,一個(gè)一個(gè)串行太耗時(shí)了辽故。需要多線程的去做。