使用 IDEA 从 0 开始搭建 Spring Cloud 微服务

使用 IDEA 从 0 开始搭建 Spring Cloud 微服务,第1张

以下内容均来源于一个微服务初学者的实践,仅供参考。

首先启动 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 接口。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/377485.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存