一、項(xiàng)目建設(shè)
目標(biāo):小區(qū)和堵卡點(diǎn)過往登記系統(tǒng)
2020年初,一種不亞于非典的新型冠狀病毒爆發(fā)于湖北武漢,并迅速蔓延全國甚至我國周邊地區(qū),截止目前國內(nèi)確診病例已超過14000例,疑似病例近20000例,死亡人數(shù)超過300人。
為積極響應(yīng)國家號召,應(yīng)對和控制病毒的蔓延和擴(kuò)散,各地紛紛采取相應(yīng)的措施,比如通過媒體大量宣傳:盡量減少外出活動(dòng),避免去疾病正在流行的地區(qū),減少走親訪友和聚餐,減少到人員密集的公共場所活動(dòng)。且各單位均延長了假期。
由此出現(xiàn)了目前民眾大都在家的情況,全國各地宅小區(qū)紛紛開始加強(qiáng)人員安全防護(hù)措施,包括進(jìn)出入信息登記等,在這過程當(dāng)中同時(shí)面臨一系列問題:
1.人員進(jìn)出都要進(jìn)行信息登記,登記信息在不同小區(qū)需要重復(fù)登記或同一小區(qū)多次登記
2.登記人員與工作人員近距離接觸形成風(fēng)險(xiǎn)
3.登記人員信息隨意填寫,變成了形式
為了解決以上相關(guān)的一系列問題,現(xiàn)建立一套專有系統(tǒng)解決方案,通過系統(tǒng)進(jìn)行登記,同時(shí)可以形成全區(qū)的大數(shù)據(jù)對異常人員進(jìn)行分析,對社區(qū)疫情工作進(jìn)行監(jiān)控,人員登記簽到形成活動(dòng)軌跡,可以實(shí)時(shí)掌握人員位置,對關(guān)鍵人員進(jìn)行重點(diǎn)防控。
本系統(tǒng)基于微信小程序進(jìn)行功能開發(fā),微信小程序,簡稱“小程序”,是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用"觸手可及"的夢想,用戶掃一掃或搜一下即可打開應(yīng)用,無需下載,使得效率大大提升。
三、系統(tǒng)主要功能
1.信息登記:外來人員進(jìn)入小區(qū)未在小程序上登記,掃碼后由進(jìn)入人員填寫登記信息,登記信息包括姓名、手機(jī)號、小區(qū)名稱、車牌號。手機(jī)號唯一,小區(qū)名稱唯一且必須選擇。填寫后進(jìn)行手機(jī)校驗(yàn),確定本手機(jī)號為本人所有。各區(qū)域,小區(qū)管理人員將所負(fù)責(zé)的區(qū)域、小區(qū)人員通過錄入系統(tǒng),形成區(qū)域人員基礎(chǔ)數(shù)據(jù)庫,實(shí)時(shí)更新人員信息,活動(dòng)軌跡,將管理區(qū)域內(nèi)的人員進(jìn)行全方位管理。
2.掃碼進(jìn)入:外來人員或本小區(qū)人員登記后,進(jìn)入時(shí)掃碼二維碼或者有工作人員值班人員掃碼二維碼,掃碼后登記人員的信息在工作人員手機(jī)上即刻顯示,工作人員進(jìn)行確認(rèn)核對。
3.智能記錄:登記時(shí)自動(dòng)記錄登記時(shí)間和定位登記位置,可按日期查詢某人的任何時(shí)間點(diǎn)所在位置,可形成某個(gè)人行走記錄。可在進(jìn)入記錄上附加體溫檢測記錄。可以統(tǒng)計(jì)出哪些人在家,哪些人有外出經(jīng)歷,哪些人外出未歸或外出去了哪里等信息。
4.統(tǒng)計(jì)分析:同一小區(qū)人員可以進(jìn)行比對,不同小區(qū)同一人員進(jìn)行比對,同一時(shí)間不同小區(qū)進(jìn)行比對。對應(yīng)人員流動(dòng)大的小區(qū)自動(dòng)提示。
5.統(tǒng)一管理:采用云模式部署,全旗統(tǒng)一管理,可以全旗所有小區(qū)統(tǒng)一到云平臺管理實(shí)時(shí)查看到每個(gè)小區(qū)人員進(jìn)出情況,每一個(gè)小區(qū)獨(dú)立生成一個(gè)二維碼,每個(gè)小區(qū)可獨(dú)立管理進(jìn)出人員。系統(tǒng)采用云架構(gòu)開發(fā),采用多級權(quán)限隔離機(jī)制,形成各個(gè)區(qū)域,各個(gè)小區(qū)單獨(dú)數(shù)據(jù)區(qū)域,方便管理和數(shù)據(jù)統(tǒng)計(jì)。每一權(quán)限級別可以管理,查看,統(tǒng)計(jì)自己負(fù)責(zé)的區(qū)域數(shù)據(jù),各個(gè)區(qū)域數(shù)據(jù)匯總形成全區(qū)數(shù)據(jù),數(shù)據(jù)以表格,報(bào)表,報(bào)告等多種形式展示,可以上報(bào)上一級部門統(tǒng)計(jì)和調(diào)度使用。
6.開發(fā)方式:手機(jī)端采用微信小程序,包含用戶端和管理員端,PC端采用B/S架構(gòu)開發(fā),通過PC實(shí)現(xiàn)主要數(shù)據(jù)管理和錄入。
7.微信平臺及小程序配置:微信公眾平臺配置及小程序申請、部署、輔助審核等工作。
四、系統(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ù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)支持無侵入式二次開發(fā)(插件模塊開發(fā)),輕松整合功能菜單、權(quán)限、標(biāo)簽、國際化、Entity、Dao、Service,新增模塊無需修改原有代碼。二次開發(fā)簡便、快捷、易懂,避免了新增模塊時(shí),花費(fèi)大量時(shí)間研究系統(tǒng)菜單、權(quán)限等功能的實(shí)現(xiàn)方式和原理。
按規(guī)范二次開發(fā),新增代碼與系統(tǒng)原有代碼完全分離,完美解決二次開發(fā)后系統(tǒng)無法升級或難以升級的問題。
新增加的模塊功能,可以獨(dú)立出來形成插件,供其他用戶下載使用,共享開發(fā)成果。
2、系統(tǒng)要求跨平臺及國產(chǎn)化替代要求
操作系統(tǒng):支持中標(biāo)麒麟(NeoKylin)、深度Linux(Deepin)、優(yōu)麒麟(UbuntuKylin)、Unix、Windows等;
數(shù)據(jù)庫:支持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ù)量大、訪問頻繁、并發(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ù)無關(guān)瀏覽器廠商與型號,研發(fā)人員不再關(guān)心各瀏覽器細(xì)節(jié)。關(guān)注重心可以向業(yè)務(wù)實(shí)現(xiàn)傾斜。用于業(yè)務(wù)邏輯的研發(fā)的時(shí)間有效增加,對于交付時(shí)間與交付質(zhì)量有更有保障。
5、系統(tǒng)所使用數(shù)據(jù)庫的技術(shù)規(guī)范
服務(wù)采用mysql或abase作為核心事務(wù)數(shù)據(jù)庫。
Mysql為開源免費(fèi)的高性能關(guān)系型數(shù)據(jù)庫,是國際使用最普遍的數(shù)據(jù)庫之一。Abase是國產(chǎn)數(shù)據(jù)庫,同樣具有高性能,高可用性等特點(diǎn),能夠滿足目前國產(chǎn)化替代方案,系統(tǒng)建設(shè)時(shí)可以根據(jù)要求選用二者其中之一。
6、數(shù)據(jù)庫集群方案
? LVS+Keepalived+MySQL
集群搭建架構(gòu)圖如下:
根據(jù)業(yè)界主流指標(biāo)測算,以及我們的多次壓測結(jié)果表明,按照我們的集群方案,單臺mysql服務(wù)器(8核6G的配置) 每秒并發(fā)可以實(shí)現(xiàn)550左右,即單臺服務(wù)器一秒鐘可以同時(shí)支持550條訂單記錄并行寫入,如果發(fā)生更大并發(fā),通過異步寫入、消息隊(duì)列等處理,可以解決并發(fā)10萬以上的業(yè)務(wù)需要。即在處理高并發(fā)時(shí),我們針對熱點(diǎn)數(shù)據(jù)采用內(nèi)存數(shù)據(jù)庫,redis或Hazelcast、消息組件采用Kafka,對數(shù)據(jù)采用異步處理、服務(wù)器可以伸縮擴(kuò)展。原則上在硬件資源足夠的情況下,能最多做到每秒100萬并發(fā)。
附:我們壓測抽樣情況截圖:
所有數(shù)據(jù)均不刪除,實(shí)現(xiàn)問題可追溯。
五、系統(tǒng)安全及信息安全指標(biāo)
軟件不安全的因素主要來源于兩個(gè)方面,一是軟件自身存在錯(cuò)誤和缺陷引起的安全漏洞,二是來自外部的攻擊。良好的軟件開發(fā)過程管理可以很好地減少軟件自身缺陷,并有效抵抗外部的攻擊。
(一)、該系統(tǒng)在設(shè)計(jì)階段考慮的安全問題:
1、數(shù)據(jù)庫重要信息的保護(hù)
數(shù)據(jù)庫中的重要信息需加密存儲(chǔ),并有相應(yīng)的防控措施。
2、配置管理:
對管理界面進(jìn)行未經(jīng)授權(quán)的訪問、具有更新配置數(shù)據(jù)的能力以及對用戶帳戶和帳戶配置文件進(jìn)行未經(jīng)授權(quán)的訪問。
3、身份驗(yàn)證
口令長度不低于8位;口令至少需數(shù)字和字符串組合;口令需加密存儲(chǔ);口令驗(yàn)證通信信道需加密,以保護(hù)身份驗(yàn)證;使用強(qiáng)密碼,支持密碼有效期和帳戶禁用。
4、訪問控制
任何用戶如果希望訪問應(yīng)用系統(tǒng)中的某一部分,則必須通過唯一的認(rèn)證授權(quán)方式。
5、敏感數(shù)據(jù)
對網(wǎng)絡(luò)上傳輸?shù)拿舾袛?shù)據(jù)進(jìn)行加密;確保通信通道的安全;對敏感數(shù)據(jù)存儲(chǔ)提供強(qiáng)訪問控制。
6、Cookie管理
不要在cookie 中永久性存儲(chǔ)敏感數(shù)據(jù);不要使用 HTTP-GET 協(xié)議傳遞敏感數(shù)據(jù);不要通過 HTTP 連接傳遞身份驗(yàn)證 cookie。在授權(quán) cookie 內(nèi)設(shè)置安全的 cookie 屬性,以便指示瀏覽器只通過 HTTPS 連接向服務(wù)器傳回 cookie。
(二)、開發(fā)過程中考慮的安全問題:
1、內(nèi)存安全的實(shí)現(xiàn)
編程過程中內(nèi)存數(shù)據(jù)出現(xiàn)的常見安全問題,如緩沖區(qū)溢出、整數(shù)溢出、字符串格式化等。
2、線程/進(jìn)程安全
如線程同步、線程死鎖等
3、科學(xué)地處理異常
異常是程序設(shè)計(jì)中必須處理的,主要解決怎樣處理異常能夠保證系統(tǒng)的安全性。
4、輸入輸出的安全保障
如對輸入的合法性檢測。
5、權(quán)限控制的處理
系統(tǒng)中涉及授權(quán)和限制訪問,需要有完善的權(quán)限控制機(jī)制。
6、數(shù)據(jù)的保護(hù)
數(shù)據(jù)篡改和抵賴的防護(hù)和檢驗(yàn)
除了加密解密外,還需要對對信息來源的鑒別、對信息的完整和不可否認(rèn)等功能進(jìn)行保障。
7、代碼的優(yōu)化處理
所有的程序,都需經(jīng)過代碼優(yōu)化,代碼性能的好壞有時(shí)候不僅關(guān)系到系統(tǒng)的運(yùn)行效率,也關(guān)系到系統(tǒng)的安全。
8、Web編程安全
Web編程中安全問題多種多樣,但至少應(yīng)有應(yīng)付跨站腳本、SQL注入、Web認(rèn)證攻擊、URL操作攻擊等安全問題。
9、參數(shù)變量處理
如果需要設(shè)置變量,不能使用缺失的默認(rèn)值,如需設(shè)置PATH為一個(gè)已知的值,而不能使用啟動(dòng)時(shí)的缺省值。
10、SQL編碼規(guī)范
Ⅰ、系統(tǒng)須有完善的防止sql注入處理機(jī)制。
Ⅱ、SQL 語句的參數(shù)應(yīng)以變量形式傳入。
11、頁面請求處理應(yīng)校驗(yàn)參數(shù)的長度
web 服務(wù)器在接受頁面請求時(shí),應(yīng)校驗(yàn)參數(shù)的最大長度,截?cái)喑鲎畲箝L度的范圍。
12、登錄失敗信息錯(cuò)誤提示
web 服務(wù)器在接受用戶登錄請求時(shí),不應(yīng)區(qū)分登錄失敗的提示信息(如:用戶名不存在、密碼錯(cuò)誤、密碼已過期等),應(yīng)采用統(tǒng)一的失敗提示信息(如:錯(cuò)誤的用戶名或密碼)。
13、錯(cuò)誤提示信息規(guī)范
所有對用戶顯示的錯(cuò)誤信息都不應(yīng)暴露任何關(guān)于系統(tǒng)、網(wǎng)絡(luò)或應(yīng)用程序的敏感信息。如果需要的話,應(yīng)使用包含編號的一般的錯(cuò)誤信息,這種信息只有開發(fā)者或支持小組才能理解。