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