SpringCloud微服务架构基于JHipster的敏捷部署与应用
2020-12-08郭艺峰熊金莲王晓瑞
郭艺峰 熊金莲 王晓瑞
摘要:
本文针对SpringCloud实际应用中存在的部署依赖性高、工作重复度高等问题,提出一种JHipster脚手架工具,结合实际业务场景,实现微服务的敏捷部署与应用,为微服务应用人员提供一种思路。本文首先概述了相关技术背景,再从实际应用角度出发,逐步完成整套SpringCloud微服务环境的搭建。最后开发数据交互的业务应用,实现业务逻辑并发布,归集到微服务总体框架中进行统一管理与维护。
关键词:
SpringCloud;微服务;JHipster;敏捷部署
中图分类号:
TP311.52
文献标识码:
A
文章编号:
1672-9129(2020)15-0061-02
1引言
近年来,随着敏捷开发、DevOps、持续交付等IT建设理念的发展及RESTful、云计算、虚拟化等技术的逐步成熟,以MartinFowler为代表的计算机科学家提出了微服务架构(Microservice)[1],其已逐渐成为一种广泛应用的软件设计风格,越来越多的互联网公司和政府企事业单位相继使用。SpringCloud作为一套全栈式的微服务解决方案,极大的简化了分布式系统基础设施的开发[2],但部署依赖性高、重复工作量大、分布式系统运维困难等缺点也制约着微服务在企业实际应用中的效率。本文从SpringCloud开发部署角度出发,提出一种基于JHipster快速建立整套微服务架构的方式,而让软件开发人员将更多的精力开发实际业务逻辑,以解决实际问题,提高工作效率。
2主要技术介绍
2.1SpringCloud微服务框架。SpringCloud是基于SpringBoot推出一系列框架、组件的有序集合[1],提供了一整套微服务的解决方案,包括服务注册与发现(Eureka),配置中心(Config),服务网关(Zuul),负载均衡(Ribbon),熔断器(Hystrix),全链路监控(Sleuth),等组件,其整体架构如图1所示:
Eureka基于REST的服务,提供在分布式环境下各微服务实例的自动化注册和发现的功能。Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。Zuul提供在分布式环境下智能路由、反向代理等網关功能,通过filter机制对请求进行拦截,并根据相关配置策略进行后期处理。Ribbon是一个基于Http和TCP的客服端负载均衡工具,提供在客户端的负载均衡实现。Hystrix实质是一套服务治理与降级的框架,提供了一种断路器(CricuitBreaker)模式,实现在远程服务不可用时自动熔断,并在远程服务恢复时自动恢复。Sleuth为各微服务之间调用提供链路追踪,是调试和监控微服务的关键工具。
2.2JHipster介绍。JHipster是一个开发平台,用于生成、开发和部署SpringBoot、Angular、React、Vue的Web应用程序和Spring微服务,提供了前后端全技术栈的应用支持,可根据用户配置,自动化生成一个完整和现代的Web应用程序或微服务架构。
3基于JHipster部署springcloud微服务(以testService为例,每部操作截图,界面截图)
3.1JHipster安装与操作。JHipster有四种安装方法,其中使用NPM进行本地安装是最为经典、快捷的,本文采用此种方式进行说明。
JDK、Maven与Node.js环境安装,相关介绍已很详细,本文不再赘述。
安装Yeoman:
安装JHipster:
运行JHipster程序,根据提示确定项目所用组件,逐步完成工程的自动创建。
3.2界面访问。工程创建成功后,进入对应目录地址,输入Maven命令“mvnw”,工程即可开始自动构建运行(要求联网环境)。运行成功后即可访问管理界面。
可于界面中选择选项以查看现有服务接入情况、资源监控、日志审计等信息。
3.3数据交互应用。以某网站新闻资讯信息的读取交互为业务应用,通过JHipster建立微服务,同时创建实体模型和传输对象,同数据库进行关联通信,对外暴露相关应用接口。
数据传输对象:
@Repository
publicclassZccontentRepositoryextendsBaseDAO
publicResponsePageBeangetList(ZccontentConcon){
SQLsql=this.getSQL();
sql=sql.SELECT("p.*,a.pagetitles,a.bodytext,a.copyimageflag,a.format").FROM("zccontentp").INNER_JOIN_ON("zcarticlebodya","p.prop1=a.id");
…
文章数据接口:
@ApiOperation(value="文章数据接口(article)",notes="文章数据接口(article)")
@GetMapping("/article")
publicResponsePageBeangetArticle(ZccontentConpageable){
ResponsePageBeanresp=zccontentRepository.getList(pageable);
returnresp;
}
服务成功发布后,在界面对应API接口中可查看本微服务所提供接口内容。
4结语
综上,基于JHipster脚手架工具,可于最短时间内建立一套完整的SpringCloud微服务架构,从而减少工作人员在部署上的精力,着重于业务应用的开发工作,提高工作效率,使收益最大化。
参考文献:
[1]SavchenkoDI,RadchenkoGI,TaipaleO.Microservicesvalidation:Mjolnirrplatformcasestudy[C]//38hInternationalConventiononinformationandCommunicationTechnology,ElectronicsandMicroelectronics(MIPRO).Piscataway,USA,2015:235-240.
[2]王方旭.基于SpringCloud实现业务系统微服务化的设计与实现[J].电子技术与软件工程,2018(8):60-61