APP下载

微服务架构研究方法

2019-09-10郑文靖王婷

现代信息科技 2019年15期

郑文靖 王婷

摘  要:随着单体式应用架构维护困难等弊端日益凸显,微服务架构被越来越多的开发者所使用,并且为了解决单体式架构在开发使用过程中面临的挑战,提出了基于微服务架构的分散治理服务架构思想。微服务架构是一种架构思想和开发模式的蜕变,相比于传统的单体式服务架构,微服务有着更快的上线周期。本文主要阐述微服务架构的概念与工作原理,论述与单体式架构相比微服务架构的优势及特点,以及基于Spring Cloud的微服务架构的运行流程。

关键词:微服务架构;单体式结构;Spring Cloud

中图分类号:TP311       文献标识码:A 文章编号:2096-4706(2019)15-0072-03

Micro-service Architecture Research Method

ZHENG Wenjing,WANG Ting

(Xi’an Polytechnic University,Xi’an  710048,China)

Abstract:As the drawbacks of monolithic architecture are becoming more and more difficult to maintain,micro-service architectures are being used by more and more developers. In order to solve the challenges faced by the monolithic architecture in the process of development and use,the idea of decentralized governance service architecture based on micro-service architecture is proposed. The micro-service architecture is a transformation of architectural thinking and development models. micro-service have a faster on-line cycle than traditional monolithic service architectures. This paper mainly elaborates the concept and working principle of the micro-service architecture,discusses the advantages and characteristics of the micro-service architecture compared with the monolithic architecture,and the operation process of the micro-service architecture based on Spring Cloud.

Keywords:micro-service architecture;monolithic architecture;Spring Cloud

0  引  言

随着互联网行业的飞速发展,5G时代的到来使得互联网行业进入流量高速增长时代,随之而来的是对互联网并发访问的要求越来越高,“能用就行”的开发思想已经不符合当代互联网行业的发展,随着高并发、大流量等性能要求的不断提高,由单体式结构转向分布式结构是复杂系统解决问题的唯一出路[1]。基于此,本文比较详细地研究了微服务架构的概念及工作原理,并分析了微服务架构的实现过程。文中首先主要介绍微服务架构概念及工作原理,其次主要对微服务架构与单体式架构进行对比,分析其优缺点,然后主要介绍微服务基础框架及实现过程,最后则对全文进行总结。

1  微服务架构概述及工作原理

微服务架构是一种将单一应用拆分为多个子服务的系统服务架构,采用轻量通信机制,进行服务之间的相互通信、协调与配合,每个服务运行在自己的进程中,围绕具体业务构建,并且能够被独立地部署到生产测试环境中[2]。由于各个服务既相互独立又相互协调配合,因此微服务之间高内聚低耦合的特点使得每个服务仅需专注于完成当前任务。在所有情况下,每个服务只代表着一个小的业务能力,可通过全自动部署机制独立部署[3]。

微服务架构工作原理采用分散治理,将整个系统根据业务划分成多个子系统服务;将多个应用通过负载均衡部署于子系统;将子系统服务注册到Eureka,通过一定的策略实现负载均衡[4];客户端都通过API网关(Zuul)访问后台服务,通过路由配置来实现转发请求;服务与服务之间可以相互访问及数据共享;Hystrix负责处理调用服务超时熔断问题,为服务提供容错保护,当服务调用超时或出现错误时,可以及时处理,避免整个系统瘫痪[5]。

2  微服务架构与单体式架构区别

由图1可以看出,单体式架构被应用、开发、部署于一个项目中,将所有的功能打包成war包,部署在一个JavaEE容器里,随着系统需求不断变更等问题,会逐渐形成技术债务,随着时间的推移,技术债务将越积越多[6,7];随着代码的增多,构建和部署的时间也会增加,且每次功能的变更都需要重新部署整个应用;系统功能模块的增加及边界模糊等问题会使得系统复杂性更高,使得系统难以维护;且单体式应用可扩展性受限,其作为一个整体,无法按照具体业务模块的需要进行伸缩[8,9]。

与单体式架构不同的是,微服务架构仅关注特定的业务,业务功能清晰。如图2所示,将整个应用拆分为若干个微服务,对各个服务进行独立部署,有利于项目整体的开发和维护[10];微服务架构相对单体式架构更容易部署,需要对某个微服务进行修改时,只需要重新部署这个服务即可,不需要重启整个应用,方便开发人员测试部署;且微服務架构可根据业务模块需要实现伸缩,可扩展性强于单体式应用[11-13]。

3  微服务架构基础框架与实现流程

微服务架构常用的基础框架为Spring Cloud,Spring Cloud为微服务架构的环境搭建提供了有力的组件化支持,例如服务注册与发现、配置管理、授权中心、服务网关等,从网关Zuul,到注册发现Eureka,再到Hystrix容错保护,开发部署简单,通过加依赖和注解,就能运行[14-16]。

Spring Cloud从Spring发展而来,与Dubbo相比,Spring Cloud对微服务环境的支持最为完整,适用于各种开发环境,且整合了大量轻量级组件,组件丰富,功能齐全,经过大量兼容性测试证明其拥有更好的稳定性[17]。

Spring Cloud包含几个核心组件。Eureka作为Spring Cloud体系中最核心的组件之一,是微服务治理的核心,通过服务注册与发现实现服务治理,Eureka提供了完整的Service Registry和Service Discovery实现;Spring Cloud Config作为Spring Cloud体系中配置管理中心,为微服务提供分布式配置管理方案,将Config配置信息存于Server,Client通过接口获取数据,并初始化应用;Spring Security OAuth2作为Spring Cloud体系中的授权认证中心,使客户端只能登录授权层,以此将用户和客户端分离,由于所有的外部请求都统一经过Zuul网关,因此OAuth2认证添加在Zuul这一层上,而每个微服务之间的调用则被认为是项目内部模块之间的调用,不需要进行OAuth2授权认证;Zuul网关是介于客户端和服务器端之间的中间层,客户端的请求需先经过网关,通过路由配置实现请求转发,网关是系统对外部请求的唯一入口,处理客户端请求服务端的转发等请求,通过一定的策略实现负载均衡[18、19]。

Spring Cloud架构搭建的环境运行流程如图3所示,首先启动Eureka注册中心,将各服务全部注册到Eureka;启动Config配置中心,将配置信息从Git中下载下来,获取到配置信息;启动OAuth2授权服务,对外部请求进行统一授权[20];启动网关,各服务经由Ribbon进行负载均衡后,分发到具体业务服务;启动各业务具体服务,进行各业务逻辑的实现[21]。

4  结  论

通过对微服务架构的工作原理及运行流程进行分析研究可以发现,微服务不只是一种新的技术,更是一种整体架构思想,微服务架构一般适合用于在未来具有扩展性并且有着较大用户增量的业务开发上,能够有效地解决快速迭代、高并发等实质性问题[22]。在单体式应用到分布式应用的转变过程中,微服务架构的出现解决了独立快速部署、可维护等系统性能问题,但微服务架构运行慢、对系统消耗大仍然是微服务发展中存在的问题,随着技术的进步,微服务架构的使用会更加成熟。因此,微服务架构值得人们期待。

参考文献:

[1] 田浩.基于SOA的高并发与高可用网站开发框架设计与实现 [D].呼和浩特:内蒙古大学,2017.

[2] 董昭.电信运营商单体架构到微服务架构转型设计思路 [J].通信世界,2017(25):56-57.

[3] 王纪军,张斌,顾永生,等.云环境中Web应用的微服务架构评估 [J].计算机系统应用,2017,26(5):9-15.

[4] 王方旭.基于Spring Cloud实现业务系统微服务化的设计与实现 [J].电子技术与软件工程,2018(8):60-61.

[5] 李建伟.移动信息环境中参考咨询服务应用开发实践 [J].现代情报,2014,34(2):90-93.

[6] 张云洁,张璇,丁浩,等.需求变更技术债务研究 [J].计算机科学,2018,45(9):89-93.

[7] Nicolli R,De M N M G,Spínola Rodrigo Oliveira. A Tertiary Study on Technical Debt:Types,Management Strategies,Research Trends,and Base Information for Practitioners [J].Information and Software Technology,2018,102(10):117-145.

[8] 赵然,朱小勇.微服务架构评述 [J].网络新媒体技术,2019,8(1):58-61+65.

[9] 侯海平,李龙.基于Dubbo服务治理模式的单体架构改造 [J].通化师范学院学报,2018,39(8):64-68.

[10] 李春霞.微服务架构研究概述 [J/OL].软件导刊:1-4,http://kns.cnki.net/kcms/detail/42.1671.TP.20190527.1545. 058.html,2019-06-11.

[11] 裴宏祥,于晓虹.基于微服务架构的系统设计与开发 [J].中国科技信息,2019(10):91-92.

[12] 方圆,郑卫胜.一种.Net框架下微服务框架设计研究 [J].通信电源技术,2019,36(4):87-88.

[13] 杨强,张钧鸣.基于微服务架构的大数据应用开发创新实践 [J].电力大数据,2019,22(3):71-76.

[14] 邱生姬.浅谈JAVA微服务SpringCloud开发 [J].电脑迷,2017(17):50.

[15] 周永圣,侯峰裕,孙雯,等.基于SpringCloud微服务架构的进销存管理系统的设计与实现 [J].工业控制计算机,2018,31(11):129-130+133.

[16] 隋永鑫.微服务架构在电动汽车智能充电服务与运营平台系统中的应用 [J].微型机与应用,2017,36(24):102-104+108.

[17] 马雄.基于微服务架构的系统设计与开发 [D].南京:南京邮电大学,2017.

[18] 毛煜苏.基于Spring Cloud微服务架构的评论系统的设计与实现 [D].武汉:华中科技大学,2018.

[19] 郭致远,魏银珍.基于Spring Cloud服务调用的设计与应用 [J].信息技术与网络安全,2019,38(2):87-91.

[20] 房立镇,王信堂.微服务架构下高校数据共享服务平台的设计 [J].电子技术与软件工程,2019(6):158.

[21] 王书玲,王小军.基于微服务的移动学习平台构建研究 [J].中国成人教育,2017(23):18-22.

[22] 何桐.微服务架构应用前景研究 [J].计算机产品与流通,2019(7):46.

作者简介:郑文靖(1994-),女,汉族,内蒙古呼和浩特人,计算机硕士,研究方向:智能信息处理与并行計算;王婷(1994-),女,汉族,陕西渭南人,计算机硕士,研究方向:智能信息处理与并行计算。