首先启动 Spring Cloud Eureka 注册中心,其他部分都作为服务注册到 Eureka ,并通过注册的服务名互相访问。Spring Cloud Config 提供统一的配置信息,供其他服务读取。Provider 生产者服务不直接对外暴露,仅供 Consumer 消费者服务调用。用户通过 Spring Cloud Gateway 统一访问消费者服务。
首先创建一个空 Maven 项目,然后右键项目 ->New Module ,选择继续创建空 Maven 模块或者使用 Spring Initializr 构建 Spring Cloud 模块。common模块用于存放公共的 lib ,如 dao 、model 、util 等。config-dev 存放配置文件,上传到 git 之后供 Spring Cloud Config 读取。
除了少数像 Spring Cloud Config 、Spring Cloud Gateway 这种独立应用,大部分非空模块都需要添加 spring-boot-starter-web 构建 Web 应用。下图是使用 IDEA 的 Spring Initializr 快速构建新模块。
下面贴上详细的配置文件和注解,bootstrap.yml 具有高优先级,会提前加载并且不会被 application.yml 覆盖,spring.cloud.config 需要配置在 bootstrap.yml 中,否则不能正常从配置中心获取配置信息。
application.yml
HobbyEurekaApplication.java
application.yml
application-dev.yml
HobbyConfigApplication.java
bootstrap.yml
config-dev/gateway.yml
HobbyGatewayApplication.java
在 Spring Cloud Gateway 的配置中已经展示过如何从 config-dev 配置仓库中读取配置文件。spring.cloud.config 和 eureka.client 都已经在 bootstrap.yml 中配置过,接下来不做赘述。多模块项目中扫描其他模块的 mybatis 文件需要做额外的配置。
application.yml
HobbyProviderTestApplication.java
消费者调用生产者可以使用 Feign 声明式服务调用。
HobbyConsumerTestApplication.java
TestFeignService.java
TestServiceImpl.java
Spring Cloud Eureka >> Spring Cloud Config >> Spring Cloud Gateway >>其他服务
微服务架构能够将各种服务解耦,单独部署,配合 devops 才能展现出真正的威力,否则运维的工作会苦不堪言。gitlab 目前已经集成了 devops 功能,只要在项目中添加 .gitlab-ci.yml ,push 到 Gitlab 之后就会自动执行配置的命令,这里简单介绍一下 gitlab 的安装部署。
CentOS7 自带的 Git 版本号是 1.8.3.1 ,需要更新,否则 Gitlab Runner 在进行自动构建的时候会报错 fatal: git fetch-pack: expected shallow list ,更新步骤如下:
Gitlab 安装官方文档
Gitlab Runner 安装官方文档
配置文件的地址 /etc/gitlab/gitlab.rb
修改配置文件的操作:
常用配置:
springcloud 工程是基于 springboot 工程的。所以我们的父工程的pom直接继承spring-boot-starter-parent,让所有的子工程也作为springboot项目。
然后指定spring-cloud的依赖版本统一为Finchley.RELEASE,这样子工程在引入springcloud相关包的时候就不用特意指定版本了。
我们选择 eureka 作为注册中心。
新建一个子工程,指定parent为刚才我们建立的父工程
Eureka 服务端启动器导入
Eureka 服务端 完整pom文件:
application.properties 配置文件
启动类
新建一个子工程 订单服务,实际上是eureka的客户端。
同样指定parent为刚才我们建立的父工程
引入eureka客户端的pom依赖,以及web包,用来与eureka-server端进行通信。
订单服务完整pom文件:
bootstrap.properties配置文件
启动类
新建一个子工程 订单服务,实际上是eureka的客户端。
同样指定parent为刚才我们建立的父工程
引入eureka客户端的pom依赖,以及web包,用来与eureka-server端进行通信。
用户服务完整pom文件:
bootstrap.properties
启动类
先启动注册中心 eureka服务端工程, 然后启动两个eureka客户端:订单服务和用户服务,看看这两个服务是否都注册到注册中心了。
当订单服务和用户服务 启动注册成功时, 会发现eureka服务端 会有 注册服务实例成功的日志。
查看eureka的 监控页面 http://127.0.0.1:9001/ ,可以看到 服务列表里已经 有 订单服务和用户服务了。
当订单服务 和 用户服务都成功注册 到 注册中心之后,那么 这两个服务 都会定时的从注册中心拉取服务列表, 用于调用。
我们让 订单服务 作为服务提供者,让用户服务调用,测试一下能否调用成功。
模拟 返回某个用户的订单信息
浏览器 调用 用户服务的 /user/orderList接口:
可以看到已经成功通过用户服务的/user/ordeeList接口 调用到了订单服务的/order/list 接口。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)