首页>>后端>>Spring->搭建springcloud架构(springcloud完整架构流程图)

搭建springcloud架构(springcloud完整架构流程图)

时间:2023-12-02 本站 点击:0

微服务 Spring Cloud Alibaba 项目搭建(一、框架介绍)

主要是为了记录 从0到1 搭建Spring Cloud Alibaba 项目的详细步骤,方便想学习搭建Spring Cloud 项目的小伙伴们提供一个详细的示例,欢迎各位大佬评论,互相学习,共同进步。

gitee地址:

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

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

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

修改配置文件的操作:

常用配置:

1. SprignCloud之快速搭建一个简单的微服务工程

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的 监控页面 ,可以看到 服务列表里已经 有 订单服务和用户服务了。

当订单服务 和 用户服务都成功注册 到 注册中心之后,那么 这两个服务 都会定时的从注册中心拉取服务列表, 用于调用。

我们让 订单服务 作为服务提供者,让用户服务调用,测试一下能否调用成功。

模拟 返回某个用户的订单信息

浏览器 调用 用户服务的 /user/orderList接口:

可以看到已经成功通过用户服务的/user/ordeeList接口 调用到了订单服务的/order/list 接口。

SpringCloud入门搭建及服务调用

开发工具:idea 2020.2.3

java:1.8

maven:3.3.9

SpringBoot:2.1.3.RELEASE

SpringCloud:Greenwich.SR5 (版本和SpringBoot必须对应,对应表自行百度)

idea配置我就不细说了

然后next

finish

然后配置pom.xml:

一般在父项目配置

然后配置依赖,这里只是一个springboot项目,所以配一个springboot就行了:

然后配置pom.xml,它们俩都是独立的springboot项目了,这里也可以和父类工程做依赖继承,但是这里就没必要,更凸显服务的独立性:

controller:

power启动类:

UserController.java

在这里调用另一个服务power服务的接口,可以使用reatTeplate来实现,需要配置

reaTeplate配置文件:AppConfig.java

user服务启动类:

user服务的 application.yml

同样可以以相同方式在power服务中调用user的接口

然后在浏览器:

127.0.0.1:6060/power/getPower.do(6060是power服务的端口)

127.0.0.1:7070/user/getUser.do调用自己的接口(7070是user服务的端口)

127.0.0.1:7070/user/getPower.do调用power的接口

至此实现了不同服务之间的调用


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/10026.html