一种基于Spring cloud的微服务构建方法技术

技术编号:18763527 阅读:46 留言:0更新日期:2018-08-25 10:22
本发明专利技术涉及一种基于Spring cloud的微服务构建方法。包括如下过程:(一)父本创建;(二)服务发现及注册;(三)服务提供者和服务消费者;(四)服务熔断;(五)配置中心;(六)API网关设置;(七)分布式事务一致性管理;(八)使用Docker构建微服务。使用Spring Boot开发应用微服务,并实现服务发现、服务消费、服务熔断、api网关、统一配置中心、分布式事务一致性管理、容器构建的功能。

【技术实现步骤摘要】
一种基于Springcloud的微服务构建方法
:本专利技术涉及程序控制装置,进一步涉及一种基于Springcloud的微服务构建方法。
技术介绍
:微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。每个小应用从前端webui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。在这里我们不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身的能力朝外部发布为服务。针对组件化、模块化的单体应用,如何将大量松耦合的应用进行统一化的管理及监控,如何保证服务间的相互调用以及分布式事务处理的一致性,如何实现服务发现注册和配置管理,都是微服务架构或者说是分布式架构统一面临的问题。SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。大多数SpringBoot项目只需要很少的配置文件。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot框架作用很简单,可实现自动配置,只要存在相应的jar包,Spring就能够自动配置。如果默认配置不能满足需求,还可以替换掉自动配置类,使用其他配置。另外,SpringBoot还集成了嵌入式的Web服务器,系统监控等很多有用的功能,能够快速构建企业及应用程序。SpringBoot是基于Spring框架进行开发的,也继承了Spring的成熟性。它通过一些内置的固件封装了底层框架的复杂性,以帮助使用者进行微服务的开发。SpringBoot的一大优点是提高开发者的生产力,因为它已经提供了许多通用的功能,例如RESTfulHTTP以及嵌入式的web应用。程序运行时,因此很容易进行装配及使用。在许多方面上,它也是一种“微框架”,允许开发者选择在整个框架中他们所需的那部分,而无需使用庞大的、或是不必要的运行时依赖。这也让Boot应用程序能够被打包为多个小单元以进行部署,并且该框架还能够使用构建系统生成可部署文件,例如可运行的Java档案包。作为一个微服务框架,Boot的很大一部分价值在于它能够无缝地为基于Maven和Gradle的项目提供各种构建工具。通过使用SpringBoot插件,就能够利用该框架的能力,将项目打包为一个轻量级的、可运行的部署包,而除此之外几乎不需要进行任何额外的配置。此外,也可在SpringInitializr网站上选择使用较繁琐的MavenPOM的示例,同时需要将应用程序的启动类的地址告诉该插件。而在使用Gradle时则无需进行这方面的配置,因为插件本身就能够找到这个类的地址。现有技术的缺点:缺少注册、发现等外围方案,缺少外围监控集成方案,缺少外围安全管理方案,缺少REST落地的URI规划方案。亟需一种新的基于Springcloud的微服务构建方法。
技术实现思路
:使用SpringBoot开发应用微服务,并实现服务发现、服务消费、服务熔断、api网关、统一配置中心、分布式事务一致性管理、容器构建的功能。技术方案如下:一种基于Springcloud的微服务构建方法,包括如下过程:(一)父本创建:创建一个父项目,以便对项目中的Maven依赖进行统一管理,添加SpringBoot依赖;(二)服务发现及注册:在父类项目下构建一个用于服务注册的子模块,在配置文件中,添加关于Eureka的依赖以创建注册中心服务;在注册中心工程的启动类代码中添加注解@EnableEurekaServer、@EnableEurekaClient,直接运行该工程的启动类的main方法,即可启动注册中心服务端;在其他服务中,首先在依赖配置文件下添加服务注册依赖,其次在application主类中添加注解@EnableEurekaClient,然后在配置文件中添加关于服务注册的配置信息,最后启动服务,EurekaClient即可自动将服务注册到EurekaServer;(三)实现服务消费和负载均衡:使用RestTemplate消费服务,利用Ribbon或Feign实现服务消费,保障负载均衡;(四)服务熔断:使用Hystrix来实现服务熔断;(五)配置中心:在父类项目下构建一个用于服务注册的子模块,在配置文件中,添加关于Config的依赖以创建配置中心服务;在模块程序的入口类加上注解@EnableConfigServer注解开启配置服务器的功能;在程序的配置文件中配置仓库信息;在目标程序中添加配置中心依赖,在其配置文件bootstrap.properties中添加关于配置中心相关信息;配置成功后即可在目标程序中读取配置中心文件内容;(六)API网关设置:在父类项目下构建一个用于网关的子模块,在配置文件中,添加关于Zuul的依赖以创建api网关服务;在模块程序的启动类中添加注解@EnableZuulProxy,开启zuul的功能;配置文件中添加网关相关内容;(七)分布式事务一致性管理:定义事件的状态类型;在分布式事务执行异步操作时,记录事件信息及状态到ES中;使用Reactor从ES中获取事件并产生操作事件流;执行事件流直至最后一个事件发生的状态即为事件的最终状态,返回客户端;(八)使用Docker构建微服务:在已经构建完成的微服务模块程序中的pom.xml文件中添加docker依赖,编写DockerFile文件并执行创建docker镜像的maven镜像。作为优选方案之一,所述实现服务消费和负载均衡步骤中,首选选择EurekaServer,它优先选择在同一个Zone且负载较少的Server;根据用户指定的策略,从Server中取到的服务注册列表选择一个地址;运用Ribbon实现负载均衡的步骤:在父类项目下的构建一个用于服务消费的子模块,在配置文件中,添加关于ribbon的依赖以创建服务消费者;在模块程序启动类中使用注解@bean向程序的IOC注入一个bean:restTemplate;通过注解@LoadBalanced注解表明这个restRemplate开启负载均衡的功能;编写一个用于消费服务的service类,通过上一步注入IOC容器的restTemplate来消费目标服务的所提供的接口;可直接用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名;编写Controller类调用上一步骤服务类,消费目标服务。作为优选方案之二,所述实现服务消费和负载均衡步骤中,创建接口并为接口添加注解即可使用Feign;运用Feign实现负载均衡的步骤:在父类项目下的构建一个用于服务消费的子模块,在配置文件中,添加关于Feign的依赖以创建服务消费者;在模块程序的启动类中,加上@EnableFeignClients注解开启Feign的功能;编写一个Feign接口,通过@FeignClient(“服务名”),来指定具体调用的服务;编写controller类,本文档来自技高网
...

【技术保护点】
1.一种基于Spring cloud的微服务构建方法,其特征在于,包括如下过程:(一)父本创建:创建一个父项目,以便对项目中的Maven依赖进行统一管理,添加SpringBoot依赖;(二)服务发现及注册:在父类项目下构建一个用于服务注册的子模块,在配置文件中,添加关于Eureka的依赖以创建注册中心服务;在注册中心工程的启动类代码中添加注解@EnableEurekaServer、@EnableEurekaClient,直接运行该工程的启动类的main方法,即可启动注册中心服务端;在其他服务中,首先在依赖配置文件下添加服务注册依赖,其次在application主类中添加注解@EnableEurekaClient,然后在配置文件中添加关于服务注册的配置信息,最后启动服务,EurekaClient即可自动将服务注册到EurekaServer;(三)实现服务消费和负载均衡:使用RestTemplate消费服务,利用Ribbon或Feign实现服务消费,保障负载均衡;(四)服务熔断:使用Hystrix来实现服务熔断;(五)配置中心:在父类项目下构建一个用于服务注册的子模块,在配置文件中,添加关于Config的依赖以创建配置中心服务;在模块程序的入口类加上注解@EnableConfigServer注解开启配置服务器的功能;在程序的配置文件中配置仓库信息;在目标程序中添加配置中心依赖,在其配置文件bootstrap.properties中添加关于配置中心相关信息;配置成功后即可在目标程序中读取配置中心文件内容;(六)API网关设置:在父类项目下构建一个用于网关的子模块,在配置文件中,添加关于Zuul的依赖以创建api网关服务;在模块程序的启动类中添加注解@EnableZuulProxy,开启zuul的功能;配置文件中添加网关相关内容;(七)分布式事务一致性管理:定义事件的状态类型;在分布式事务执行异步操作时,记录事件信息及状态到ES中;使用Reactor从ES中获取事件并产生操作事件流;执行事件流直至最后一个事件发生的状态即为事件的最终状态,返回客户端;(八)使用Docker构建微服务:在已经构建完成的微服务模块程序中的pom.xml文件中添加docker依赖,编写DockerFile文件并执行创建docker镜像的maven镜像。...

【技术特征摘要】
1.一种基于Springcloud的微服务构建方法,其特征在于,包括如下过程:(一)父本创建:创建一个父项目,以便对项目中的Maven依赖进行统一管理,添加SpringBoot依赖;(二)服务发现及注册:在父类项目下构建一个用于服务注册的子模块,在配置文件中,添加关于Eureka的依赖以创建注册中心服务;在注册中心工程的启动类代码中添加注解@EnableEurekaServer、@EnableEurekaClient,直接运行该工程的启动类的main方法,即可启动注册中心服务端;在其他服务中,首先在依赖配置文件下添加服务注册依赖,其次在application主类中添加注解@EnableEurekaClient,然后在配置文件中添加关于服务注册的配置信息,最后启动服务,EurekaClient即可自动将服务注册到EurekaServer;(三)实现服务消费和负载均衡:使用RestTemplate消费服务,利用Ribbon或Feign实现服务消费,保障负载均衡;(四)服务熔断:使用Hystrix来实现服务熔断;(五)配置中心:在父类项目下构建一个用于服务注册的子模块,在配置文件中,添加关于Config的依赖以创建配置中心服务;在模块程序的入口类加上注解@EnableConfigServer注解开启配置服务器的功能;在程序的配置文件中配置仓库信息;在目标程序中添加配置中心依赖,在其配置文件bootstrap.properties中添加关于配置中心相关信息;配置成功后即可在目标程序中读取配置中心文件内容;(六)API网关设置:在父类项目下构建一个用于网关的子模块,在配置文件中,添加关于Zuul的依赖以创建api网关服务;在模块程序的启动类中添加注解@EnableZuulProxy,开启zuul的功能;配置文件中添加网关相关内容;(七)分布式事务一致性管理:定义事件的状态类型;在分布式事务执行异步操作时,记录事件信息及状态到ES中;使用Reactor从ES中获取事件并产生操作事件流;执行事件流直至最后一个事件发生的状态即为事件的最终状态,返回客户端;(八)使用Docker构建微服务:在已经构建完成的微服务模块程序中的pom.xml文件中添加docker依赖,编写DockerFile文件并执行创建docker镜像的maven镜像。2.根据权利要求1所述一种基于Springcloud的微服务构建方法,其特征在于,所述实现服务消费和负载均衡步骤中,首选选择EurekaServer,它优先选择在同一个Zone且负载较少的Server;根据用户指定的策略,从Server中取到的服务注册列表选择一个地址;运用Ribbon实现负载均衡的步骤:在父类项目下的构建一个用于服务消费的子模块,在配置文件中,添加关于ribbon的依赖以创建服务消费者;在模块程序启动类中使用注解@bean...

【专利技术属性】
技术研发人员:张才俊李子乾马永波程飞飞王清源王乐之孙晋龙李伟东
申请(专利权)人:国家电网公司客户服务中心
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1