一、項(xiàng)目建設(shè)
目標(biāo):小區(qū)和堵卡點(diǎn)過(guò)往登記系統(tǒng)
2020年初,一種不亞于非典的新型冠狀病毒爆發(fā)于湖北武漢,并迅速蔓延全國(guó)甚至我國(guó)周邊地區(qū),截止目前國(guó)內(nèi)確診病例已超過(guò)14000例,疑似病例近20000例,死亡人數(shù)超過(guò)300人。
為積極響應(yīng)國(guó)家號(hào)召,應(yīng)對(duì)和控制病毒的蔓延和擴(kuò)散,各地紛紛采取相應(yīng)的措施,比如通過(guò)媒體大量宣傳:盡量減少外出活動(dòng),避免去疾病正在流行的地區(qū),減少走親訪友和聚餐,減少到人員密集的公共場(chǎng)所活動(dòng)。且各單位均延長(zhǎng)了假期。
由此出現(xiàn)了目前民眾大都在家的情況,全國(guó)各地宅小區(qū)紛紛開始加強(qiáng)人員安全防護(hù)措施,包括進(jìn)出入信息登記等,在這過(guò)程當(dāng)中同時(shí)面臨一系列問(wèn)題:
1.人員進(jìn)出都要進(jìn)行信息登記,登記信息在不同小區(qū)需要重復(fù)登記或同一小區(qū)多次登記
2.登記人員與工作人員近距離接觸形成風(fēng)險(xiǎn)
3.登記人員信息隨意填寫,變成了形式
為了解決以上相關(guān)的一系列問(wèn)題,現(xiàn)建立一套專有系統(tǒng)解決方案,通過(guò)系統(tǒng)進(jìn)行登記,同時(shí)可以形成全區(qū)的大數(shù)據(jù)對(duì)異常人員進(jìn)行分析,對(duì)社區(qū)疫情工作進(jìn)行監(jiān)控,人員登記簽到形成活動(dòng)軌跡,可以實(shí)時(shí)掌握人員位置,對(duì)關(guān)鍵人員進(jìn)行重點(diǎn)防控。
本系統(tǒng)基于微信小程序進(jìn)行功能開發(fā),微信小程序,簡(jiǎn)稱“小程序”,是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用"觸手可及"的夢(mèng)想,用戶掃一掃或搜一下即可打開應(yīng)用,無(wú)需下載,使得效率大大提升。
三、系統(tǒng)主要功能
1.信息登記:外來(lái)人員進(jìn)入小區(qū)未在小程序上登記,掃碼后由進(jìn)入人員填寫登記信息,登記信息包括姓名、手機(jī)號(hào)、小區(qū)名稱、車牌號(hào)。手機(jī)號(hào)唯一,小區(qū)名稱唯一且必須選擇。填寫后進(jìn)行手機(jī)校驗(yàn),確定本手機(jī)號(hào)為本人所有。各區(qū)域,小區(qū)管理人員將所負(fù)責(zé)的區(qū)域、小區(qū)人員通過(guò)錄入系統(tǒng),形成區(qū)域人員基礎(chǔ)數(shù)據(jù)庫(kù),實(shí)時(shí)更新人員信息,活動(dòng)軌跡,將管理區(qū)域內(nèi)的人員進(jìn)行全方位管理。
2.掃碼進(jìn)入:外來(lái)人員或本小區(qū)人員登記后,進(jìn)入時(shí)掃碼二維碼或者有工作人員值班人員掃碼二維碼,掃碼后登記人員的信息在工作人員手機(jī)上即刻顯示,工作人員進(jìn)行確認(rèn)核對(duì)。
3.智能記錄:登記時(shí)自動(dòng)記錄登記時(shí)間和定位登記位置,可按日期查詢某人的任何時(shí)間點(diǎn)所在位置,可形成某個(gè)人行走記錄??稍谶M(jìn)入記錄上附加體溫檢測(cè)記錄??梢越y(tǒng)計(jì)出哪些人在家,哪些人有外出經(jīng)歷,哪些人外出未歸或外出去了哪里等信息。
4.統(tǒng)計(jì)分析:同一小區(qū)人員可以進(jìn)行比對(duì),不同小區(qū)同一人員進(jìn)行比對(duì),同一時(shí)間不同小區(qū)進(jìn)行比對(duì)。對(duì)應(yīng)人員流動(dòng)大的小區(qū)自動(dòng)提示。
5.統(tǒng)一管理:采用云模式部署,全旗統(tǒng)一管理,可以全旗所有小區(qū)統(tǒng)一到云平臺(tái)管理實(shí)時(shí)查看到每個(gè)小區(qū)人員進(jìn)出情況,每一個(gè)小區(qū)獨(dú)立生成一個(gè)二維碼,每個(gè)小區(qū)可獨(dú)立管理進(jìn)出人員。系統(tǒng)采用云架構(gòu)開發(fā),采用多級(jí)權(quán)限隔離機(jī)制,形成各個(gè)區(qū)域,各個(gè)小區(qū)單獨(dú)數(shù)據(jù)區(qū)域,方便管理和數(shù)據(jù)統(tǒng)計(jì)。每一權(quán)限級(jí)別可以管理,查看,統(tǒng)計(jì)自己負(fù)責(zé)的區(qū)域數(shù)據(jù),各個(gè)區(qū)域數(shù)據(jù)匯總形成全區(qū)數(shù)據(jù),數(shù)據(jù)以表格,報(bào)表,報(bào)告等多種形式展示,可以上報(bào)上一級(jí)部門統(tǒng)計(jì)和調(diào)度使用。
6.開發(fā)方式:手機(jī)端采用微信小程序,包含用戶端和管理員端,PC端采用B/S架構(gòu)開發(fā),通過(guò)PC實(shí)現(xiàn)主要數(shù)據(jù)管理和錄入。
7.微信平臺(tái)及小程序配置:微信公眾平臺(tái)配置及小程序申請(qǐng)、部署、輔助審核等工作。
四、系統(tǒng)主要技術(shù)指標(biāo)
系統(tǒng)設(shè)計(jì)及技術(shù)路線選擇綜合考慮實(shí)用、成熟、先進(jìn)性、可擴(kuò)展性,同時(shí)考慮系統(tǒng)的易用性、易維護(hù)性。因此,本方案總的技術(shù)路線是采用B/S的瘦客戶端架構(gòu),項(xiàng)目開發(fā)基于大數(shù)據(jù)、云計(jì)算、人工智能、區(qū)塊鏈等相關(guān)技術(shù) ,結(jié)合傳統(tǒng)開發(fā)語(yǔ)言,充分運(yùn)用Hadoop、Hyperledger Fabric、SpringCloud、SpringMVC、Spring、JPA、JSP、Freemarker、Spring Data JPA,QueryDSL、Shiro、Lucene、Ehcache、JPA、Spring Data JPA、QueryDSL組成的持久化技術(shù)、Shiro安全框架、Lucene全文檢索,實(shí)現(xiàn)智能中文分詞和近實(shí)時(shí)檢索、Freemarker模板及靜態(tài)化技術(shù)、類似于Gmail驗(yàn)證碼驗(yàn)證功能、H5、ES6、Node、Angular、Vue、React 、Webpack等。
1、擴(kuò)展性要求
系統(tǒng)支持無(wú)侵入式二次開發(fā)(插件模塊開發(fā)),輕松整合功能菜單、權(quán)限、標(biāo)簽、國(guó)際化、Entity、Dao、Service,新增模塊無(wú)需修改原有代碼。二次開發(fā)簡(jiǎn)便、快捷、易懂,避免了新增模塊時(shí),花費(fèi)大量時(shí)間研究系統(tǒng)菜單、權(quán)限等功能的實(shí)現(xiàn)方式和原理。
按規(guī)范二次開發(fā),新增代碼與系統(tǒng)原有代碼完全分離,完美解決二次開發(fā)后系統(tǒng)無(wú)法升級(jí)或難以升級(jí)的問(wèn)題。
新增加的模塊功能,可以獨(dú)立出來(lái)形成插件,供其他用戶下載使用,共享開發(fā)成果。
2、系統(tǒng)要求跨平臺(tái)及國(guó)產(chǎn)化替代要求
操作系統(tǒng):支持中標(biāo)麒麟(NeoKylin)、深度Linux(Deepin)、優(yōu)麒麟(UbuntuKylin)、Unix、Windows等;
數(shù)據(jù)庫(kù):支持ABASE、MySQL、Oracle、SQLServer、DB2、Sybase、PostgreSQL等;
應(yīng)用服務(wù)器:支持TAS、Tomcat、Weblogic、WebSphere、JBoss、Jetty、Resin、Glashfish等;
3、系統(tǒng)高性能及高可用性要求
在當(dāng)前特定的背景下,系統(tǒng)具有數(shù)據(jù)量大、訪問(wèn)頻繁、并發(fā)流量大等特點(diǎn),因此本系統(tǒng)著重考慮項(xiàng)目的高并發(fā)、高可用性、擴(kuò)展性、靈活性、擴(kuò)充性等要求,采用微服務(wù)技術(shù)架構(gòu),并且使用當(dāng)今流行的Docker容器部署。
4、Web端結(jié)構(gòu)及框架的技術(shù)規(guī)范
Vue.js是當(dāng)前最流行的前端框架,開源免費(fèi),以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的,雙向綁定。采用虛擬Dom技術(shù)。比直接操作Dom的效率高3倍。同時(shí),虛擬dom技術(shù)無(wú)關(guān)瀏覽器廠商與型號(hào),研發(fā)人員不再關(guān)心各瀏覽器細(xì)節(jié)。關(guān)注重心可以向業(yè)務(wù)實(shí)現(xiàn)傾斜。用于業(yè)務(wù)邏輯的研發(fā)的時(shí)間有效增加,對(duì)于交付時(shí)間與交付質(zhì)量有更有保障。
5、系統(tǒng)所使用數(shù)據(jù)庫(kù)的技術(shù)規(guī)范
服務(wù)采用mysql或abase作為核心事務(wù)數(shù)據(jù)庫(kù)。
Mysql為開源免費(fèi)的高性能關(guān)系型數(shù)據(jù)庫(kù),是國(guó)際使用最普遍的數(shù)據(jù)庫(kù)之一。Abase是國(guó)產(chǎn)數(shù)據(jù)庫(kù),同樣具有高性能,高可用性等特點(diǎn),能夠滿足目前國(guó)產(chǎn)化替代方案,系統(tǒng)建設(shè)時(shí)可以根據(jù)要求選用二者其中之一。
6、數(shù)據(jù)庫(kù)集群方案
? LVS+Keepalived+MySQL
集群搭建架構(gòu)圖如下:

根據(jù)業(yè)界主流指標(biāo)測(cè)算,以及我們的多次壓測(cè)結(jié)果表明,按照我們的集群方案,單臺(tái)mysql服務(wù)器(8核6G的配置) 每秒并發(fā)可以實(shí)現(xiàn)550左右,即單臺(tái)服務(wù)器一秒鐘可以同時(shí)支持550條訂單記錄并行寫入,如果發(fā)生更大并發(fā),通過(guò)異步寫入、消息隊(duì)列等處理,可以解決并發(fā)10萬(wàn)以上的業(yè)務(wù)需要。即在處理高并發(fā)時(shí),我們針對(duì)熱點(diǎn)數(shù)據(jù)采用內(nèi)存數(shù)據(jù)庫(kù),redis或Hazelcast、消息組件采用Kafka,對(duì)數(shù)據(jù)采用異步處理、服務(wù)器可以伸縮擴(kuò)展。原則上在硬件資源足夠的情況下,能最多做到每秒100萬(wàn)并發(fā)。
附:我們壓測(cè)抽樣情況截圖:

所有數(shù)據(jù)均不刪除,實(shí)現(xiàn)問(wèn)題可追溯。
五、系統(tǒng)安全及信息安全指標(biāo)
軟件不安全的因素主要來(lái)源于兩個(gè)方面,一是軟件自身存在錯(cuò)誤和缺陷引起的安全漏洞,二是來(lái)自外部的攻擊。良好的軟件開發(fā)過(guò)程管理可以很好地減少軟件自身缺陷,并有效抵抗外部的攻擊。
(一)、該系統(tǒng)在設(shè)計(jì)階段考慮的安全問(wèn)題:
1、數(shù)據(jù)庫(kù)重要信息的保護(hù)
數(shù)據(jù)庫(kù)中的重要信息需加密存儲(chǔ),并有相應(yīng)的防控措施。
2、配置管理:
對(duì)管理界面進(jìn)行未經(jīng)授權(quán)的訪問(wèn)、具有更新配置數(shù)據(jù)的能力以及對(duì)用戶帳戶和帳戶配置文件進(jìn)行未經(jīng)授權(quán)的訪問(wèn)。
3、身份驗(yàn)證
口令長(zhǎng)度不低于8位;口令至少需數(shù)字和字符串組合;口令需加密存儲(chǔ);口令驗(yàn)證通信信道需加密,以保護(hù)身份驗(yàn)證;使用強(qiáng)密碼,支持密碼有效期和帳戶禁用。
4、訪問(wèn)控制
任何用戶如果希望訪問(wèn)應(yīng)用系統(tǒng)中的某一部分,則必須通過(guò)唯一的認(rèn)證授權(quán)方式。
5、敏感數(shù)據(jù)
對(duì)網(wǎng)絡(luò)上傳輸?shù)拿舾袛?shù)據(jù)進(jìn)行加密;確保通信通道的安全;對(duì)敏感數(shù)據(jù)存儲(chǔ)提供強(qiáng)訪問(wèn)控制。
6、Cookie管理
不要在cookie 中永久性存儲(chǔ)敏感數(shù)據(jù);不要使用 HTTP-GET 協(xié)議傳遞敏感數(shù)據(jù);不要通過(guò) HTTP 連接傳遞身份驗(yàn)證 cookie。在授權(quán) cookie 內(nèi)設(shè)置安全的 cookie 屬性,以便指示瀏覽器只通過(guò) HTTPS 連接向服務(wù)器傳回 cookie。
(二)、開發(fā)過(guò)程中考慮的安全問(wèn)題:
1、內(nèi)存安全的實(shí)現(xiàn)
編程過(guò)程中內(nèi)存數(shù)據(jù)出現(xiàn)的常見(jiàn)安全問(wèn)題,如緩沖區(qū)溢出、整數(shù)溢出、字符串格式化等。
2、線程/進(jìn)程安全
如線程同步、線程死鎖等
3、科學(xué)地處理異常
異常是程序設(shè)計(jì)中必須處理的,主要解決怎樣處理異常能夠保證系統(tǒng)的安全性。
4、輸入輸出的安全保障
如對(duì)輸入的合法性檢測(cè)。
5、權(quán)限控制的處理
系統(tǒng)中涉及授權(quán)和限制訪問(wèn),需要有完善的權(quán)限控制機(jī)制。
6、數(shù)據(jù)的保護(hù)
數(shù)據(jù)篡改和抵賴的防護(hù)和檢驗(yàn)
除了加密解密外,還需要對(duì)對(duì)信息來(lái)源的鑒別、對(duì)信息的完整和不可否認(rèn)等功能進(jìn)行保障。
7、代碼的優(yōu)化處理
所有的程序,都需經(jīng)過(guò)代碼優(yōu)化,代碼性能的好壞有時(shí)候不僅關(guān)系到系統(tǒng)的運(yùn)行效率,也關(guān)系到系統(tǒng)的安全。
8、Web編程安全
Web編程中安全問(wèn)題多種多樣,但至少應(yīng)有應(yīng)付跨站腳本、SQL注入、Web認(rèn)證攻擊、URL操作攻擊等安全問(wèn)題。
9、參數(shù)變量處理
如果需要設(shè)置變量,不能使用缺失的默認(rèn)值,如需設(shè)置PATH為一個(gè)已知的值,而不能使用啟動(dòng)時(shí)的缺省值。
10、SQL編碼規(guī)范
Ⅰ、系統(tǒng)須有完善的防止sql注入處理機(jī)制。
Ⅱ、SQL 語(yǔ)句的參數(shù)應(yīng)以變量形式傳入。
11、頁(yè)面請(qǐng)求處理應(yīng)校驗(yàn)參數(shù)的長(zhǎng)度
web 服務(wù)器在接受頁(yè)面請(qǐng)求時(shí),應(yīng)校驗(yàn)參數(shù)的最大長(zhǎng)度,截?cái)喑鲎畲箝L(zhǎng)度的范圍。
12、登錄失敗信息錯(cuò)誤提示
web 服務(wù)器在接受用戶登錄請(qǐng)求時(shí),不應(yīng)區(qū)分登錄失敗的提示信息(如:用戶名不存在、密碼錯(cuò)誤、密碼已過(guò)期等),應(yīng)采用統(tǒng)一的失敗提示信息(如:錯(cuò)誤的用戶名或密碼)。
13、錯(cuò)誤提示信息規(guī)范
所有對(duì)用戶顯示的錯(cuò)誤信息都不應(yīng)暴露任何關(guān)于系統(tǒng)、網(wǎng)絡(luò)或應(yīng)用程序的敏感信息。如果需要的話,應(yīng)使用包含編號(hào)的一般的錯(cuò)誤信息,這種信息只有開發(fā)者或支持小組才能理解。