spring微服务中common怎么部署?
发布网友
发布时间:2022-04-19 13:12
我来回答
共1个回答
热心网友
时间:2023-08-31 02:58
以下内容均来源于一个微服务初学者的实践,仅供参考。
首先启动 Spring Cloud Eureka 注册中心,其他部分都作为服务注册到 Eureka ,并通过注册的服务名互相访问。Spring Cloud Config 提供统一的配置信息,供其他服务读取。Provider 生产者服务不直接对外暴露,仅供 Consumer 消费者服务调用。用户通过 Spring Cloud Gateway 统一访问消费者服务。
首先创建一个空 Maven 项目,然后右键项目 -> New Mole ,选择继续创建空 Maven 模块或者使用 Spring Initializr 构建 Spring Cloud 模块。common模块用于存放公共的 lib ,如 、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
修改配置文件的操作:
常用配置: