基于SpringBoot微服务架构的城市一卡通手机充值支撑系统研究

2018-01-23 12:38温晓丽苏浩伟陈欢邹大毕
电子产品世界 2017年10期
关键词:体系架构微服务

温晓丽+苏浩伟+陈欢+邹大毕

摘要:基于微服务架构而构建的应用系统是将复杂的大系统分解成了一系列小的单独的子服务系统,这些子服务系统可以单独部署发布,也可以组合成一个应用发布。伴随着移动互联网应用的快速发展,相应的服务系统更新迭代频繁,采用微服务架构之后的系统可以很好地适应移动互联网这种需求不断迭代更新的应用场景。城市一卡通手机充值系统是城市一卡通公司在移动互联网领域的应用服务系统,同样地面临着业务不断快速迭代更新的需求,基于此,进行城市一卡通手机充值支撑系统的构建过程中采用了基于SpringBoot微服务架构的研究是必要和有参考意义的。

关键词:交通信息化:手机充值;体系架构;微服务

DOI: 10.3969/j.issn.1005-5517.2017.9.014

引言

随着时代的发展,在信息系统建设方面,传统IT架构面临着以下一些问题:

1)使用传统的整体式架构(M。n olithicArchitecture)应用开发系统,如CRM、ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难。在系统更新时,往往牵一发而动全身,稍有不慎就可能带来大的损失。

2)随着移动互联网的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线,而传统IT架构在系统快速迭代更新方面难度较大。

3)随着应用云化的日益普及,生于云端的应用具有与传统IT不同的技术基因和开发运维模式,此时再生搬硬套传统IT架构往往会产生适得其反的效果。

4)移动互联网相关技术快速发展,云计算及互联网公司大量开源轻量级技术不停涌现并日渐成熟,主要为如下几方面:互联网/内联网/网络更加成熟,轻量级运行时技术的出现(node.js等),新的方法与工具(Agile、DevOps、TDD、CI及XP),新的轻量级协议(RESTful API接口和轻量级消息机制),简化的基础设施,操作系统虛拟化(hypervisors)、容器化(Docker)、基础设施即服务(laaS)、工作负载虚拟化(Kubernetes、Spark)等;服务平台化(PaaS),云服务平台上具有自动缩放、工作负载管理、SLA管理、消息机制、缓存、构建管理等各种按需使用的服务,新的可替代数据持久化模型:如NoSQL、MapReduce、BASE、CQRS等,标准化代码管理等。

这一切都催生了新的架构设计风格,即微服务架构的出现。

1 微服务架构概述

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

微服务具备弹性和伸缩性。微服务不只依赖单个服务器和部署,它们可以被发布到多个机器上,或者多个数据中心及其它任何可用的区域。如果一个服务失效,可以启动另外一个。因为整个应用被分解成了微服务(小型服务),可以很容易地对其中某些热门的服务进行横向扩展。

微服务一般会提供基于HTTP/JSON的API端点。这样可以很容易地与其它服务(开源或闭源的)集成,只要这些服务提供了HTTP/JSON接口。服务可以通过更有意义的方式被消费、被组合。

1.1 与整体架构的比较

整体架构把所有功能都放到一个进程中,如图1所示,其中每个形状块代表一个功能;而微服务架构会将不同的功能放置到分离的多个服务进程中,如图2所示。

在系统服务能力需要扩展时,采用整体架构的系统只能复制整个系统到多个服务器上,如图3所示:而采用微服务架构的系统则仅根据不同服务的服务负载能力需求来决定复制到多少个服务器上,如图4所示。

1.2 微服务架构的优点

1)每个服务都比较简单,只关注于一个业务功能;

2)微服务架构方式是松耦合的,可以提供更高的灵活性;

3)微服务可通过最佳及最合适的不同的编程语言与工具进行开发,能够做到有的放矢地解决针对性问题:

4)每个微服务可由不同团队独立开发,互不影响,加快推出市场的速度;

5)微服务架构是持续交付(CD)的巨大推动力,允许在频繁发布不同服务的同时保持系统其他部分的可用性和稳定性。

1.3 微服务架构的缺点

微服务的一些想法在实践上是好的,但当整体实现时也会呈现出其复杂性,主要约束性体现在如下几个方面:

1)运维开销及成本增加:整体应用可能只需部署至一小片应用服务区集群,而微服务架构可能变成需要构建/测试部署、运行数十个独立的服务,并可能需要支持多种语言和环境。

2)代码重复:某些底层功能需要被多个服务所用,为了避免将“同步耦合引入到系统中”,有时需要向不同服务添加一些代码,这就会导致代码重复。

3)分布式系统的复杂性:作为一种分布式系统,微服务引入了复杂性和其他若干问题,例如网络延迟、容错性、消息序列化、不可靠的网络、异步机制、版本化、差异化的工作负载等,开发人员需要考虑以上的分布式系统问题。

4)可测性的挑战:在动态环境下服务间的交互会产生非常微妙的行为,难以可视化及全面测试。经典微服务往往不太重视测试,更多的是通过监控发现生产环境的异常,进而快速回滚或采取其他必要的行动。但对于特别在意风险规避监管或投产环境错误会产生显著影响的场景下需要特别注意。

1.4 哪些应用系统适用微服务架构

1)记录型系统(System of Record)适用微服务架构,例如可将大型应用按相对独立的业务功能分解成若干个微服务实现。endprint

2)交互型系统(System of Engagement)也较为适用微服务架构,例如渠道应用可以应用“后端服务前端”的模式实现。

3)分析型系统(System of Insight)则不适用于微服务架构,其适用于其他架构模式如管道及过滤模式。

2 Spring Boot分析

2.1 Spring Boot概述

Spring Boot是Java领域中知名的微服务系统构架框架,是由Pivotal团队提供的。基于Spring Boot框架,Java应用程序的构建简单易行。该框架具有以下特点:

1)简单的库依赖管理,基于Maven配置文件,即可实现相关依赖库的配置;

2)自动配置,框架自动负责了大部分常规的配置,开发者无需手工配置:

3)内嵌支持Web服务,易于发布为单独web服务。

2.2 Spring Boot优点

正是由于上述特點,使得Spring Boot有以下优点:

1)使编码变简单。借助框架提供的各种注解(Annotation),较少的编码即可实现丰富的服务功能。比如基于JPA框架的数据库访问,仅需声明一个接口及相关函数定义(无需编写实现),即可在其他进行调用。

2)使配置变简单。Spring有多种多样的XMLConfig。Java Config或注解配置;而Boot仅需简单的properties或yml文件配置。

3)使部署变简单。Boot可以将程序打包成一个jar文件,一键启动,无需预部署各种应用服务器。同时,它对运行环境的基本要求降低了,仅需JDK即可。

4)使监控变简单。通过Boot中的spring-boot-actuator库即可实现对程序的监控,可以通过http请求来查看其属性配置、线程工作状态、环境变量、JVM各种性能指标等。

由于微服务的目的在于化解整体架构服务的复杂性,以简单快速的方式实现各个服务的实现、部署和变更。因此,Spring Boot的上述特点正好服务微服务构建需求,同时Spring Boot还提供了形式多样的库(以spring-boot-开头) ,支持JPA、RESTFul、Docker等技术,更便于各种微服务的构建。

3 微服务架构在城市一卡通手机充值支撑系统中的应用

3.1 总体架构

城市一卡通手机充值支撑系统是城市一卡通NFC手机充值的业务后端系统,其功能主要包括:

1)负责与前端系统对接,完成城市一卡通卡账户资金支付功能:

2)负责与前端系统对接,实现城市一卡通卡圈存充值功能:

3)负责与第三方支付系统对接,实现账户资金转账加值功能、账单下载和对账文件生成功能:

4)负责与客服受理系统对接,实现用户订单管理等客服受理功能。

3.2 微服务应用

基于城市一卡通手机充值支撑系统的业务需求,其需要提供以下具体服务功能:

1)内部服务功能:对接内部联机核心系统,提供城市一卡通卡充值金账户查询、充值金账户操作(加值、冻结、解冻等)等功能:

2)基础查询服务:对外提供城市一卡通卡相关的查询类服务:

3)充值金商品服务系统:主要负责城市一卡通卡充值金账户加值订单相关服务功能,包括订单创建、订单查询、订单支付通知处理等:

4)订单支付服务:对接第三方支付系统,负责第三方支付的订单创建、支付通知处理等服务功能;

5)圈存服务系统:对接前端服务系统(或第三方合作商系统),提供城市一卡通卡圈存充值交互的相关功能,包括圈存订单创建、圈存初始化、圈存以及圈存提交等功能;它还负责与圈存后台交互,传输相关指令数据:

6)对账服务:对接第三方支付系统,负责充值账单的下载和对账处理。

由此可见,上述功能相对独立,适于引入微服务架构。为此,我们设计了微服务架构,每个微服务均开放出REST API供前端或者其他系统调用,微服务之间的交互也是通过REST API进行交互,其微服务架构图如图5所示。

基于此微服务架构设计,我们利用Spring Boot构建了城市一卡通手机充值支撑系统的多个微服务系统,并成功在广州羊城通的手机QQ NFC充值、手环充值等项目进行实践,实践结果是该微服务架构是可行、有效的。

4 结论

本文首先介绍了微服务及架构的发展背景以及其概念,并阐述了其特点及其适应场景。其次,介绍了Spring Boot相关知识和架构特点,阐述其为什么是一个适于微服务系统开发的框架。最后介绍了如何利用微服务架构开展城市一卡通手机充值支撑系统的设计和建设,充分利用了Spring Boot框架的优点。

我们在微服务架构实践上,还处于初步阶段,未来在进一步应用方面还有广阔的发展空间,我们将在后续的系统演变过程中进一步深入优化,以期构建更加完善的城市一卡通手机充值服务系统。

参考文献

[l]Lucas Krause.Microservices: Theory and Applicaton[J].Applicative.2016.

[2]Craig Walis.Spring Boot in Action[M]:Manning publications.2016.endprint

猜你喜欢
体系架构微服务
微信公众平台在医院图书馆的应用现状调查
从单一模式系统架构往微服务架构迁移转化技术研究