APP下载

互联网警务应用系统架构探讨

2020-02-14周敏江西省公安厅科技信息化总队南昌市330000

江西通信科技 2020年4期
关键词:网关警务集群

周敏 江西省公安厅科技信息化总队 南昌市 330000

0 前言

随着金盾工程的推进,警务信息系统开始蓬勃发展。一直以来,警务应用系统部署于公安内网,主要用户是公安民警,核心任务就是提供快速、准确的信息化手段满足“打、防、管、控”需求。由于民警数量相对固定、访问量有限,所以,内网警务系统大部分采取传统的三层架构就能满足需求。

近年来,“放管服”改革快速推进,要求公安机关向互联网开放能力,直接为广大群众公安政务服务, 让企业和群众少跑腿、好办事。这一要求给我们公安机关提出了新的信息化建设命题,就是如何架构满足海量用户高并发访问需求的互联网警务应用系统。广义的互联网警务系统一般包括三大部分:一是互联网端应用,通常需要进行身份验证、业务数据获取、业务逻辑处理等;二是边界网关,主要任务是内外网数据交互;三是内网端警种业务系统,主要实现业务办理和结果反馈。本文仅讨论互联网端的警务系统设计。

互联网警务系统与传统警务系统最大区别就是由用户数量的不同而带来的高并发,核心指标就是QPS(每秒处理请求数)。警务内网的QPS一般在千级,因此,传统的客户端-应用服务器-数据库服务的结构即能够很好满足,但互联网端面对的全国上亿群众,QPS每秒数万是很正常的,需要新的架构以满足业务需求。传统集中式结构的纵向扩展特性,决定了其性能的非线性增长,而且集群规模越大,性能衰减越厉害,昂贵的成本无法覆盖激增业务处理需求。因此,对业务系统进行解耦、拆分、横向扩展,构建分布式系统成为当前互联网业务的首选。

1 总体系统设计思路

互联网警务系统的核心设计思想就是用分布式结构来实现低成本、高并发、高可扩展要求。主要的技术手段就是对信息系统进行纵向解耦和横向拆分,将3层结构解耦为客户端、接入层、Web前端、接口网关层、微服务、缓存层、数据库层6层结构。在Web层、接口网关层使用负载均衡,做成高可用集群;在微服务层,将业务逻辑进行解耦,将应用系统功能进行解耦,拆分为最小服务单位,由管理中心进行统一调度和维护,向下层请求数据,向上层提供服务;在缓存层,使用集群存储热点数据,以提高I/O读写;在数据库层,使用分库分表技术,将结构化数据和非结构数据分离,将一个海量数据库拆分成多个数据库,提高数据读写速度。

2 用户接入层设计

用户接入层设计主要是满足分散在不同地域、不同网络的用户快速访问Web服务的需求。根据这一目的,我们使用内容分发技术(CDN)在不同区域部署Web服务器,提供静态页面元素的访问。

3 Web前端设计

将应用层划分为Web前端、接口网关以及微服务3层。其中,Web前端仅仅负责Html、JavaScript等页面元素的缓存、解析和加载,直接与用户浏览器进行交互。需要与服务器交互的工作都提交给后端接口网关。Web层采取负载均衡集群部署的方式,对外提供一个虚拟IP,提供用户访问。负载均衡的基本思想是把高并发的访问平均分配到每一个服务器节点上,从而减小每一个节点的压力。

4 接口网关设计

接口网关部署于Web前端之后、微服务之前,是外界系统和内部系统之间的一道门,所有的客户端请求通过网关访问后台服务。接口为了应对高并发访问,接口服务网关通常做成Nginx负载均衡集群。外部请求经过负载均衡后路由到网关集群中服务,由网关服务转发到后台微服务进行业务处理。服务网关作为内部系统的边界,它有以下基本能力:

(1)动态路由

动态的将请求路由到所需要的后端服务集群。

(2)限流和容错

为每种类型的请求分配容量,当请求数量超过阀值时抛掉外部请求,限制流量,保护后台服务不被大流量冲垮; 当内部服务出现故障时直接在边界创建一些响应,集中做容错处理,而不是将请求转发到内部集群,保证用户良好的体验。

(3)身份认证和安全性控制

对每个外部请求进行用户认证,实现安全控制。

(4)监控和日志

网关可以监控系统运行状态、收集访问日志信息,通过分析日志内容,对后台系统做进一步优化。

我们可以采用Spring Cloud Netflix框架的开源组件Zuul来实现网关服务。

5 微服务设计

微服务设计就是进行应用软件功能分解,将系统不同职能的模块分成不同的服务、分布在不同的服务器上,各个服务之间通过统一的注册管理中心进行相互调用和对外服务。例如将一个在线商店系统划分成订单管理中心、客户信息管理中心、商品管理中心等多个服务中心。微服务模块通过接口网关集群对外服务,内部通讯可以采取两种通讯框架:一是基于HTTP协议的同步机制(REST、RPC),典型代表是阿里巴巴开源的分布式服务框架Dubbo;二是基于消息队列的异步分布式消息处理系统,例如Kafka、RabbitMQ。这种分布式的通讯机制保障了Web服务高并发访问能力。

6 缓存层设计

使用Memcache,Redis等缓存数据库作为缓存层,存储数据库热点数据以及不常改变数据,直接在内存中快速读取数据,从而避免从硬盘多次读写数据,大大提升响应速度。

对于互联网业务常常需要提交的图片以及其他非结构化附件文档,采取文件服务器或对象存储专门存放,减少网络数据流量,提升系统可用性。

7 分布式数据库设计

数据库服务为上层Web应用提供关系式或结构化的数据存储与查询支持,是整个系统核心所在。互联网数据库通常采用开源MySQL、PostgreSQL等数据库。在数据库架构上,在业务负载较低时可以采取主备模式,当负载上升后,应用采用一主多从的分布式集群,进行读写分离、业务分担。在数据库设计上,可以进行数据分散存储,一是业务分库,按照业务模块将数据分散到不同的数据库服务器中,每台服务器负责一个业务子库,降低单库数据容量,提升读写效率;二是数据分表,使用垂直分表或水平分表技术,将单表数据量减少。垂直分表一般是将数据表中不常用的字段分离出去,减少磁盘读写量;水平分表是按照某种算法如时间、范围、hash函数等将数据表切分成多个同样结构的数据表,提升单表查询性能。

通过分布式改造,整个系统框架从应用到数据、从前端到后端,都是以微服务和大集群的方式对外提供服务,只需要横向增加服务器就能够线性提升处理能力,满足海量用户高并发访问需求,为互联网警务系统提供坚实支撑。基于这一系统架构设计,我们建设了江西省为民服务网上办事系统,为全省5000万群众提供互联网办事服务,实现了江西公安警务服务的智能化、便利化。

猜你喜欢

网关警务集群
海上小型无人机集群的反制装备需求与应对之策研究
信号系统网关设备的优化
一种无人机集群发射回收装置的控制系统设计
环球警务专访
Python与Spark集群在收费数据分析中的应用
基于ETC在线支付网关的停车场收费系统设计
勤快又呆萌的集群机器人
浅谈港航公安网上警务公开的现状和问题
警务训练中腹痛的成因及预防
应对气候变化需要打通“网关”