本文通过回顾软件架构的发展过程,分析分布式环境下微服务架构相对于传统架构的优势以及微服务架构自身的优缺点和在项目实践过程中有关注意事项,并基于微服务架构对装备采购商城进行功能拆分、系统架构设计和系统实现,基本达到微服务架构初步实践的目标。利用微服务架构构建公安业务系统或平台是对整合现有数据资源打破信息孤岛,提升公安工作质量的有效技术手段,值得研究和尝试。
文/王俊修 公安部第一研究所
一、引言
随着信息技术的快速发展及海量数据的快速增长,微服务架构作为云计算技术和大数据平台发展成熟后出现的新型应用架构,已经成为了国内外诸多大型公司首选的架构形态。理论上来说,在大型分布式计算环境中,随着业务变更、功能增加必然会导致系统不断进行升级和演变,特别是跨警种、跨层级、跨地区的业务系统,它本身就非常复杂,存在海量业务数据的内外网传输,需要进行大量的加解密计算,如何实现应用快速开发迭代、快速部署上线,提高系统性能的新架构已经迫在眉睫。当前,随着虚拟化技术的发展以及容器技术实践逐渐完善,微服务架构的设计思想也逐渐成熟,形成了分布式计算环境下新的最重要的设计思想。微服务架构是降低系统复杂度、提高系统性能的最优选择,是适合敏捷开发方法持续改进的架构。因此,传统架构方式必然转向微服务架构方式,而"稳定安全、统一开放、简洁友好、高效领先"必然是新一代企业级应用系统的应有形态。本文通过回顾软件架构的发展过程,分析分布式环境下微服务架构相对于传统架构的优势以及微服务架构自身的优缺点和在项目实践过程中有关注意事项,并基于微服务架构对装备采购商城进行功能拆分、系统架构设计和系统实现,基本达到微服务架构初步实践的目标。利用微服务架构构建公安业务系统或平台是对整合现有数据资源打破信息孤岛,提升公安工作质量的有效技术手段,值得研究和尝试。
二、软件架构的发展过程
随着信息技术的快速发展,过去单人开发一段小程序的做法早就过时,大范围协作的集成化时代随即到来。这导致软件开发和部署架构也不断的演进、升级和迭代。总结而言,基本上是从过去的单体应用架构,发展到垂直切分架构,再到面向服务架构(SOA),以及现在火热的微服务架构,如图1所示描述了软件架构的发展过程。
图1 系统架构演变过程
1.单体应用架构
这是过去采用最多的架构,当业务量很小、业务逻辑不复杂时,往往就只需一个应用就能应对,可以将所有功能都部署在一起,以减少部署节点和降低成本。这种架构下数据库的"增删改查"的操作变得异常重要,而采用数据访问框架的中间件技术则是影响项目开发的关键所在。单体应用架构虽然能实现代码上下分层,但还存在业务模块代码横向耦合,这将导致升级维护困难无法实现水平扩展,造成单点容错率低、并发能力差等问题。
2.垂直切分架构
后来,当业务访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分。将核心业务抽取出来作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式调用是关键。
3.面向服务的架构
当服务越来越多,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率,面向服务的架构(SOA)应运而生。这是一种架构风格,致力于将业务功能保持一致的服务(系统服务、应用服务、技术服务)作为设计、构建和编排组合业务流程以及解决方案的基本单元。用于提高机器利用率的资源调度和治理中心是关键。
三、浅析微服务架构
1.微服务架构的定义
微服务架构指将复杂系统进行切分,分为几十甚至上百个小服务,每个服务负责实现一个独立的业务逻辑进行独立部署,彼此之间是松耦合的。微服务一般采用Restful风格的轻量级通讯协议进行相互通信,可以使用不同的语言来编写,也可以使用不同的数据存储技术。
2.微服务架构的优缺点
与传统架构相比,微服务架构具有容错性强、可扩展性强等优点。具有更加彻底的组件化,系统内部各个组件之间解耦的比较干脆,单个系统的规模小很多,这使得每个服务本身可以独立的扩展,当性能出现瓶颈时优化或增加这个服务的配置即可。因此,每个微服务可以独立部署,只要服务间的接口稳定,各系统可以相互之间互不干扰的独立发展。甚至可以组建每个服务独立的维护团队,利于各自团队独立的开发和维护。
虽然微服务目标是充分分解应用程序,以促进敏捷开发和持续集成部署,但不能过分强调服务大小,这是因为微服务的切分是一个经验工程,业务逻辑应该按照什么规则划分为微服务,业界并没有给出一个明确的、统一的标准。另外,它的分布式特点带来巨大的通讯协调复杂性,基于RPC或者消息实现微服务之间的调用和通信,这就使得服务之间的发现、服务调用链的跟踪和质量问题变得的相当麻烦。
3.微服务架构所面临的挑战
基于CAP原理的约束,在微服务架构下不同服务可能拥有不同的数据库,这使得我们不得不放弃传统的强一致性,转而追求最终一致性。再加上微服务由不同的大量服务构成,每种服务拥有自己的配置、应用实例数量以及基础服务地址,这里就需要不同的配置、部署、扩展和监控组件,还需要服务发现机制以便服务可以发现与其通信的其他服务地址,因此采用微服务架构必然会造成系统部署复杂,从而后期运维的复杂度也急剧上升。
四、基于微服务架构的业务设计与实现
面对微服务存在的优缺点和所面临的挑战,我们的经验是在软件架构设计时,不要从一开始就以微服务架构作为系统设计的起点,要用一个单个系统作为起点并保持其模块化,当这个系统出现了问题后再将其分解逐步拆解为微服务。下面我们将以装备采购商城为例进行微服务架构设计。
1.系统功能介绍
装备采购商城是一个借助于网络构建的警用装备采购超市平台,实现装备信息录入、在线展示、用户浏览、下单购买、订单支付和使用评价等整个流程环节的管理。系统的用户有供应商、采购员、预算管理员和系统管理员等。采购员可以在线浏览、购买装备、加入购物车、下单、在线支付,可以评论已购买装备;供应商可以在后台管理装备的上下架、促销活动,可以监控装备销售状况;预算管理员可以在后台处理付款相关的财务操作;系统管理员进行查询统计,开展采购推荐等方面的辅助决策。
整个装备采购商城网站设计为两部分:后台管理系统和前台门户系统。后台管理系统主要为供应商和管理员使用,前台门户系统主要为采购员使用。
后台管理系统主要包括以下功能:
(1)装备管理,包括装备分类、名称、规格参数等信息的管理。
(2)采购管理,包括订单统计、订单退款处理、促销活动生成。
(3)用户管理,包括用户控制、冻结、解锁等。
(4)权限管理,整个网站的权限控制,采用JWT鉴权方案,对用户及API进行权限控制。
(5)查询统计,各种数据的统计分析展示。
前台门户系统主要包括以下功能:
(1)搜索装备。
(2)加入购物车。
(3)下单支付。
(4)装备评价等。
2.系统应用架构设计
系统从应用上可分为三个层次,最上层是业务平台层,包含了用户操作的每个业务模块,实现业务功能,业务平台层通过调用业务支撑平台的标准业务服务接口为用户提供服务。中间层是业务服务接口层,通过对业务逻辑的封装处理实现各个业务模块的逻辑。平台层包含文件存储,存储用户上传的图片、文件和数据库服务。
图2 系统应用架构图
建设过程中,项目制定了统一数据元标准,形成了相关的规范建设文档。同时,系统中所产生的所有数据都统一存储在云平台之上,按照符合安全规范的信息共享机制,提供对外服务接口,保证与其它系统能够实时安全共享数据。
3.系统网络架构设计
由于供应商等互联网用户要登录装备采购商城的前台门户系统录入各类装备数据并进行上架下架等日常维护操作,因此系统访问涉及到互联网和公安网两张网络。应用服务部署在公安网的云平台服务器上,互联网用户通过使用双网安全通道进入到公安网访问系统,公安网用户则可以直接访问系统,数据只在公安网上进行存储和应用。整个采购系统的网络架构图如图3所示。
图3网络架构图
4.系统技术架构设计
无论是前台门户网站还是后台管理系统,全部采用前后端分离开发,共享相同的业务微服务集群。考虑到后台管理系统用户量比较少,会使用Vue.js框架搭建出单页应用;而前台门户系统出于搜索引擎优化的考虑,我们会使用Thymeleaf模板引擎技术来完成多页面开发。
具体来讲,此项目选择基于Spring Cloud的微服务架构进行系统设计和开发。其中,涉及到的前端技术有:基础的HTML、CSS、基于ES6标准JavaScript、JQuery、Vue.js 2.0以及基于Vue的框架Vuetify(UI框架)和前端构建工具WebPack、前端安装包工具NPM、Vue脚手架Vue-cli、Vue路由vue-router、ajax框架axios等。后端技术有:基础的SpringMVC、Spring 5.x和MyBatis3、Spring Boot 2版本,Redis-4.0、RabbitMQ-3.4、Elasticsearch-6.3、nginx-1.14.2、FastDFS、MyCat、Thymeleaf等。如图4所示。
图4 基于微服务的技术架构
5.装备采购商城的功能实现
按照系统功能介绍,我们对装备采购商城进行微服务功能划分,主要分为商品微服务、库存微服务、搜索微服务、购物车微服务、订单微服务、支付微服务、短信微服务和品论微服务等8个功能,并和前台门户系统进行集成联调开发,以及进行了分布式部署应用。经过多次测试验证证明,基于微服务架构的开发的系统可更好应对功能模块升级、上下线、停机运维、流量消峰等需求,最终实现的装备采购商城首页如图5所示。
用户登录装备采购商城,首先可以按装备分类进行查找,也可以按照装备大类、装备子类或装备名称进行搜索。其次,在系统首页可以按照用户行为、兴趣爱好推荐系统中的热门装备,即购买量、好评率高的装备。最后,系统首页还可以展示每种类别中热门的装备或最近发布的新型装备。
图5 装备采购商城首页
五、结束语
近年来,随着物联网、云计算、大数据、人工智能等新技术的出现和加速发展,传统安防行业的内涵也得到不断丰富与拓展,已经从传统的安全防护、防盗报警延伸到智能楼宇、智慧社区、雪亮工程等新型安防建设领域,呈现信息化、智能化发展的新趋势。尤其在公安部实施公安大数据战略以来,安防行业正在逐步走向更广泛的数字化转型时代,按照公安大数据智能化建设要求,要采用微服务架构,通过依托大数据平台构建与大数据平台融合建设等方式完成新智能应用的建设任务,新技术、新架构、新应用在公共安全行业的赋能加持作用愈来愈明显,将为安防行业数字化转型发展插上腾飞的翅膀。我们相信,只要大力推进安防数字化转型,不断深化新技术新业态的应用和示范引领,将加快构建符合新时代要求、体现实战化特点、具有中国特色的社会治安防控体系。