小区和堵卡点过往登记系统建设方案

一、项目建设

目标:小区和堵卡点过往登记系统

二、建设背景及面临问题

2020年初,一种不亚于非典的新型冠状病毒爆发于湖北武汉,并迅速蔓延全国甚至我国周边地区,截止目前国内确诊病例已超过14000例,疑似病例近20000例,死亡人数超过300人

为积极响应国家号召,应对和控制病毒的蔓延和扩散,各地纷纷采取相应的措施,比如通过媒体大量宣传:尽量减少外出活动,避免去疾病正在流行的地区,减少走亲访友和聚餐,减少到人员密集的公共场所活动。且各单位均延长了假期

由此出现了目前民众大都在家的情况,全国各地宅小区纷纷开始加强人员安全防护措施,包括进出入信息登记等,在这过程当中同时面临一系列问题:

1.人员进出都要进行信息登记,登记信息在不同小区需要重复登记或同一小区多次登记

2.登记人员与工作人员近距离接触形成风险

3.登记人员信息随意填写,变成了形式

为了解决以上相关的一系列问题,建立一套专有系统解决方案,通过系统进行登记,同时可以形成全的大数据对异常人员进行分析,对社区疫情工作进行监控,人员登记签到形成活动轨迹,可以实时掌握人员位置,对关键人员进行重点防控

本系统基于微信小程序进行功能开发,微信小程序,简称“小程序”,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或搜一下即可打开应用,无需下载,使得效率大大提升。

、系统主要功能

1.信息登记:外来人员进入小区未在小程序上登记,扫码后由进入人员填写登记信息,登记信息包括姓名、手机号、小区名称、车牌号。手机号唯一,小区名称唯一且必须选择。填写后进行手机校验,确定本手机号为本人所有。各区域,小区管理人员将所负责的区域、小区人员通过录入系统,形成区域人员基础数据库,实时更新人员信息,活动轨迹,将管理区域内的人员进行全方位管理。

2.扫码进入:外来人员或本小区人员登记后,进入时扫码二维码或者有工作人员值班人员扫码二维码,扫码后登记人员的信息在工作人员手机上即刻显示,工作人员进行确认核对。

3.智能记录:登记时自动记录登记时间和定位登记位置,可按日期查询某人的任何时间点所在位置,可形成某个人行走记录。可在进入记录上附加体温检测记录。可以统计出哪些人在家,哪些人有外出经历,哪些人外出未归或外出去了哪里等信息。

4.统计分析:同一小区人员可以进行比对,不同小区同一人员进行比对,同一时间不同小区进行比对。对应人员流动大的小区自动提示。

5.统一管理:采用云模式部署,全旗统一管理,可以全旗所有小区统一到云平台管理实时查看到每个小区人员进出情况,每一个小区独立生成一个二维码,每个小区可独立管理进出人员。系统采用云架构开发,采用多级权限隔离机制,形成各个区域,各个小区单独数据区域,方便管理和数据统计。每一权限级别可以管理,查看,统计自己负责的区域数据,各个区域数据汇总形成全数据,数据以表格,报表,报告等多种形式展示,可以上报上一级部门统计和调度使用。

6.开发方式:手机端采用微信小程序,包含用户端和管理员端,PC端采用B/S架构开发,通过PC实现主要数据管理和录入。

7.微信平台及小程序配置:微信公众平台配置及小程序申请、部署、辅助审核等工作。

、系统主要技术指标

系统设计及技术路线选择综合考虑实用、成熟、先进性、可扩展性,同时考虑系统的易用性、易维护性。因此,本方案总的技术路线是采用B/S的瘦客户端架构,项目开发基于大数据、云计算、人工智能、区块链等相关技术 ,结合传统开发语言,充分运用Hadoop、Hyperledger Fabric、SpringCloud、SpringMVC、Spring、JPA、JSP、Freemarker、Spring Data JPA,QueryDSL、Shiro、Lucene、Ehcache、JPA、Spring Data JPA、QueryDSL组成的持久化技术、Shiro安全框架、Lucene全文检索,实现智能中文分词和近实时检索、Freemarker模板及静态化技术、类似于Gmail验证码验证功能、H5、ES6、Node、Angular、Vue、React 、Webpack等。

1、扩展性要求

系统支持无侵入式二次开发(插件模块开发),轻松整合功能菜单、权限、标签、国际化、Entity、Dao、Service,新增模块无需修改原有代码。二次开发简便、快捷、易懂,避免了新增模块时,花费大量时间研究系统菜单、权限等功能的实现方式和原理。

按规范二次开发,新增代码与系统原有代码完全分离,完美解决二次开发后系统无法升级或难以升级的问题。

新增加的模块功能,可以独立出来形成插件,供其他用户下载使用,共享开发成果。

2、系统要求跨平台及国产化替代要求

操作系统:支持中标麒麟(NeoKylin)、深度Linux(Deepin)、优麒麟(UbuntuKylin)、Unix、Windows等;

数据库:支持ABASE、MySQL、Oracle、SQLServer、DB2、Sybase、PostgreSQL等;

应用服务器:支持TAS、Tomcat、Weblogic、WebSphere、JBoss、Jetty、Resin、Glashfish等;

3、系统高性能及高可用性要求

在当前特定的背景下,系统具有数据量大、访问频繁、并发流量大等特点,因此本系统着重考虑项目的高并发、高可用性、扩展性、灵活性、扩充性等要求,采用微服务技术架构,并且使用当今流行的Docker容器部署。

4、Web端结构及框架的技术规范

Vue.js是当前最流行的前端框架,开源免费,以数据驱动和组件化的思想构建的,双向绑定。采用虚拟Dom技术。比直接操作Dom的效率高3倍。同时,虚拟dom技术无关浏览器厂商与型号,研发人员不再关心各浏览器细节。关注重心可以向业务实现倾斜。用于业务逻辑的研发的时间有效增加,对于交付时间与交付质量有更有保障。

5、系统所使用数据库的技术规范

服务采用mysql或abase作为核心事务数据库。

Mysql为开源免费的高性能关系型数据库,是国际使用最普遍的数据库之一。Abase是国产数据库,同样具有高性能,高可用性等特点,能够满足目前国产化替代方案,系统建设时可以根据要求选用二者其中之一。

6、数据库集群方案

Ø  LVS+Keepalived+MySQL

集群搭建架构图如下:



根据业界主流指标测算,以及我们的多次压测结果表明,按照我们的集群方案,单台mysql服务器(8核6G的配置) 每秒并发可以实现550左右,即单台服务器一秒钟可以同时支持550条订单记录并行写入,如果发生更大并发,通过异步写入、消息队列等处理,可以解决并发10万以上的业务需要。即在处理高并发时,我们针对热点数据采用内存数据库,redis或Hazelcast、消息组件采用Kafka,对数据采用异步处理、服务器可以伸缩扩展。原则上在硬件资源足够的情况下,能最多做到每秒100万并发。

附:我们压测抽样情况截图:



所有数据均不删除,实现问题可追溯。

、系统安全及信息安全指标

软件不安全的因素主要来源于两个方面,一是软件自身存在错误和缺陷引起的安全漏洞,二是来自外部的攻击。良好的软件开发过程管理可以很好地减少软件自身缺陷,并有效抵抗外部的攻击。

(一)、该系统在设计阶段考虑的安全问题:

1、数据库重要信息的保护

数据库中的重要信息需加密存储,并有相应的防控措施。

2、配置管理:

对管理界面进行未经授权的访问、具有更新配置数据的能力以及对用户帐户和帐户配置文件进行未经授权的访问。

3、身份验证

口令长度不低于8位;口令至少需数字和字符串组合;口令需加密存储;口令验证通信信道需加密,以保护身份验证;使用强密码,支持密码有效期和帐户禁用。

4、访问控制

任何用户如果希望访问应用系统中的某一部分,则必须通过唯一的认证授权方式。

5、敏感数据

对网络上传输的敏感数据进行加密;确保通信通道的安全;对敏感数据存储提供强访问控制。

6、Cookie管理

不要在cookie 中永久性存储敏感数据;不要使用 HTTP-GET 协议传递敏感数据;不要通过 HTTP 连接传递身份验证 cookie。在授权 cookie 内设置安全的 cookie 属性,以便指示浏览器只通过 HTTPS 连接向服务器传回 cookie。

(二)、开发过程中考虑的安全问题:

1、内存安全的实现

   编程过程中内存数据出现的常见安全问题,如缓冲区溢出、整数溢出、字符串格式化等。

2、线程/进程安全

如线程同步、线程死锁等

3、科学地处理异常

异常是程序设计中必须处理的,主要解决怎样处理异常能够保证系统的安全性。

4、输入输出的安全保障

如对输入的合法性检测。

5、权限控制的处理

系统中涉及授权和限制访问,需要有完善的权限控制机制。

6、数据的保护

数据篡改和抵赖的防护和检验

除了加密解密外,还需要对对信息来源的鉴别、对信息的完整和不可否认等功能进行保障。

7、代码的优化处理

所有的程序,都需经过代码优化,代码性能的好坏有时候不仅关系到系统的运行效率,也关系到系统的安全。

8、Web编程安全

Web编程中安全问题多种多样,但至少应有应付跨站脚本、SQL注入、Web认证攻击、URL操作攻击等安全问题。

9、参数变量处理

如果需要设置变量,不能使用缺失的默认值,如需设置PATH为一个已知的值,而不能使用启动时的缺省值。

10、SQL编码规范

Ⅰ、系统须有完善的防止sql注入处理机制。

SQL 语句的参数应以变量形式传入。

11、页面请求处理应校验参数的长度

web 服务器在接受页面请求时,应校验参数的最大长度,截断超出最大长度的范围。

12、登录失败信息错误提示

web 服务器在接受用户登录请求时,不应区分登录失败的提示信息(如:用户名不存在、密码错误、密码已过期等),应采用统一的失败提示信息(如:错误的用户名或密码)。

13、错误提示信息规范

所有对用户显示的错误信息都不应暴露任何关于系统、网络或应用程序的敏感信息。如果需要的话,应使用包含编号的一般的错误信息,这种信息只有开发者或支持小组才能理解。