【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程

这篇具有很好参考价值的文章主要介绍了【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章,主要介绍如何使用Spring Cloud微服务组件从0到1搭建一个微服务工程。

目录

一、从0到1搭建微服务工程

1.1、基础环境说明

(1)使用组件

(2)微服务依赖

1.2、搭建注册中心

(1)引入依赖

(2)配置文件

(3)启动类

1.3、搭建配置中心

(1)引入依赖

(2)配置文件

(3)启动类

1.4、搭建API网关

(1)引入依赖

(2)配置文件

(3)启动类

1.5、搭建服务提供者

(1)引入依赖

(2)配置文件

(3)启动类

1.6、搭建服务消费者

(1)引入依赖

(2)配置文件

(3)启动类

1.7、运行测试


一、从0到1搭建微服务工程

1.1、基础环境说明

(1)使用组件

这里主要是使用的Spring Cloud Netflix微服务组件搭建工程,其中需要搭建下面这些组件工程:

  • 注册中心:采用Eureka实现注册中心。
  • 配置中心:采用Spring Cloud Config实现配置中心。
  • API网关:采用Spring Cloud Gateway作为网关。
  • 服务调用:采用OpenFeign实现服务之间的调用。
  • 负载均衡:采用Ribbon实现服务的负载均衡。

大致如下所示:

【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程

工程代码结构:

【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程

(2)微服务依赖

<!-- 引入SpringBoot依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.12.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <!-- 使用 dependencyManagement 依赖管理,统一管理组件的版本 -->
    <dependencies>
        <!-- 引入 SpringCloud 微服务依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1.2、搭建注册中心

这里采用单机的Eureka注册中心,当然也可以使用集群的Eureka注册中心。

(1)引入依赖

<!-- 引入 eureka 服务端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

(2)配置文件

server:
  port: 8761
spring:
  application:
    name: cloud-eureka-server
# 配置 eureka 服务端
eureka:
  client:
    register-with-eureka: false # 是否将自己注册到eureka注册中心
    fetch-registry: false # 是否从eureka注册中心获取注册信息

(3)启动类

package com.gitcode.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * @version 1.0.0
 * @Date: 2023/4/26 20:27
 * @Copyright (C) ZhuYouBin
 * @Description: Eureka 注册中心服务端启动类
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaApp {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApp.class, args);
    }
}

1.3、搭建配置中心

采用Spring Cloud Config组件实现配置中心的功能。

(1)引入依赖

<!-- 引入 eureka 客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入 config-server 服务端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

(2)配置文件

server:
  port: 8888
spring:
  application:
    name: cloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitcode.net/qq_39826207/config-demo.git # Git仓库的地址
#          username: # Git仓库的登录用户名称
#          password: # Git仓库的登录密码
#          default-label: # 默认访问的分支名称
#          search-paths: # 搜索的根目录,从仓库中的哪个目录中开始查找配置文件

# eureka 配置
eureka:
  instance:
    hostname: ${spring.application.name}
    prefer-ip-address: true # 开启采用 IP 注册形式
    # ${spring.cloud.client.ip-address} 这个属性可以获取到当前机器的 IP 地址
    instance-id: ${spring.cloud.client.ip-address}:${server.port} # 设置当前服务的实例ID,采用:IP+端口形式
  client:
    register-with-eureka: true # 是否将自己注册到eureka注册中心
    fetch-registry: true # 是否从eureka注册中心获取注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/ # eureka服务端的地址

(3)启动类

package com.gitcode.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * @version 1.0.0
 * @Date: 2023/4/26 20:37
 * @Copyright (C) ZhuYouBin
 * @Description: Config 配置中心服务端启动类
 */
@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class ConfigApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApp.class, args);
    }
}

1.4、搭建API网关

采用Spring Cloud Gateway实现API网关的功能。

(1)引入依赖

<!-- 引入 eureka 客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入 Gateway 依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

(2)配置文件

server:
  port: 8080
spring:
  application:
    name: cloud-api-gateway
  cloud:
    gateway:
      # 动态服务转发
      discovery:
        locator:
          enabled: true # 启用动态路由服务名称转发功能
          lower-case-service-id: true # 开启服务名称小写

# eureka 配置
eureka:
  instance:
    hostname: ${spring.application.name}
    prefer-ip-address: true # 开启采用 IP 注册形式
    # ${spring.cloud.client.ip-address} 这个属性可以获取到当前机器的 IP 地址
    instance-id: ${spring.cloud.client.ip-address}:${server.port} # 设置当前服务的实例ID,采用:IP+端口形式
  client:
    register-with-eureka: true # 是否将自己注册到eureka注册中心
    fetch-registry: true # 是否从eureka注册中心获取注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/ # eureka服务端的地址

(3)启动类

package com.gitcode.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * @version 1.0.0
 * @Date: 2023/4/26 20:49
 * @Copyright (C) ZhuYouBin
 * @Description: Gateway 网关启动类
 */
@EnableEurekaClient
@SpringBootApplication
public class GatewayApp {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApp.class, args);
    }
}

1.5、搭建服务提供者

(1)引入依赖

<!-- 引入 web 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入 eureka 客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入 config-client 客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

(2)配置文件

  • 注意:这里创建的配置文件必须是【bootstrap.yml】,因为需要从配置中心获取配置信息。
server:
  port: 6250
spring:
  application:
    name: biz-provider
  cloud:
    config:
      name: biz-provider # 从 Git 仓库获取的配置文件名称
      label: master # 从哪个分支获取
      profile: dev # 获取哪个环境下的配置文件
      # 从注册中心获取配置信息
      discovery:
        enabled: true # 开启服务发现的功能,这里也就是支持eureka的功能
        service-id: cloud-config-server # config server服务端的微服务应用名称

(3)启动类

package com.gitcode.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * @version 1.0.0
 * @Date: 2023/4/26 20:57
 * @Copyright (C) ZhuYouBin
 * @Description: 服务提供者启动类
 */
@EnableEurekaClient
@SpringBootApplication
public class ProviderApp {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class, args);
    }
}

1.6、搭建服务消费者

服务消费者需要调用服务提供者的接口,所以这里需要引入OpenFeign组件。

(1)引入依赖

<!-- 引入 web 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入 eureka 客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入 config-client 客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
<!-- 引入 OpenFeign 依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

(2)配置文件

  • 注意:这里创建的配置文件必须是【bootstrap.yml】,因为需要从配置中心获取配置信息。
server:
  port: 9527
spring:
  application:
    name: biz-consumer
  cloud:
    config:
      name: biz-consumer # 从 Git 仓库获取的配置文件名称
      label: master # 从哪个分支获取
      profile: dev # 获取哪个环境下的配置文件
      # 从注册中心获取配置信息
      discovery:
        enabled: true # 开启服务发现的功能,这里也就是支持eureka的功能
        service-id: cloud-config-server # config server服务端的微服务应用名称

(3)启动类

package com.gitcode.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @version 1.0.0
 * @Date: 2023/4/26 21:11
 * @Copyright (C) ZhuYouBin
 * @Description: 服务消费者启动类
 */
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class, args);
    }
}

1.7、运行测试

依次启动Eureka注册中心、Config配置中心、Gateway网关、Consumer服务消费者、Provider服务提供者,查看注册中心是否正常。

【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程

浏览器,通过Gateway访问Consumer消费者工程中的接口【http://localhost:8080/biz-consumer/api/consumer/getUserInfo】,注意:测试接口的代码没有贴出来,可以到我的代码仓库里面查看。

【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程

到此,从0到1的微服务工程搭建完成。

综上,这篇文章结束了,主要介绍如何使用Spring Cloud微服务组件从0到1搭建一个微服务工程【源代码】。文章来源地址https://www.toymoban.com/news/detail-430375.html

到了这里,关于【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud Netflix微服务组件-Eureka

    目录 CAP理论 注册中心对比 为什么注册中心更适合用AP? 分布式系统AP和CP如何取舍? Eureka核心功能点 Euraka server启动的主线流程 总体流程图 @EnableEurekaServer 流程图 EurekaServerAutoConfiguration EurekaServerInitializerConfiguration Euraka client启动的主线流程 总体流程图 EurekaClientAutoConfigurat

    2024年02月01日
    浏览(300)
  • Eureka:Spring Cloud服务注册与发现组件

    Eureka 一词来源于古希腊词汇,是“发现了”的意思。在软件领域,Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。 Spring Cloud 将 Eureka 与 Netflix 中的其他开源服务组件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后的组件全称为 Spr

    2024年02月03日
    浏览(62)
  • Spring Cloud微服务架构组件【Java培训】

    SpringCloud是一系列框架的有序集合,为开发人员构建微服务架构提供了完整的解决方案。Spring Cloud根据分布式服务协调治理的需求成立了许多子项目,每个项目通过特定的组件去实现,下面我们讲解一下Spring Cloud 包含的常用组件以及模块。 (1)Spring Cloud Config:分布式配置中心

    2023年04月25日
    浏览(48)
  • 微服务·架构组件之网关- Spring Cloud Gateway

    微服务架构已成为构建现代化应用程序的关键范式之一,它将应用程序拆分成多个小型、可独立部署的服务。Spring Cloud Gateway是Spring Cloud生态系统中的一个关键组件,用于构建和管理微服务架构中的网关。本报告旨在调查和介绍Spring Cloud Gateway的核心概念、架构、功能以及其在

    2024年02月09日
    浏览(57)
  • Ribbon:Spring Cloud负载均衡与服务调用组件

    负载均衡? Ribbon实现服务调用? Ribbon实现负载均衡? 切换负载均衡策略? 定制负载均衡策略? 负载均衡 负载均衡(Load Balance),将用户的请求平分到多个服务器上运行,以扩展服务器带宽、增强数据处理能力、增加吞吐量、提高网络的可用性和灵活性的目的。 服务端负载

    2024年02月03日
    浏览(46)
  • 深入了解Spring Cloud的服务注册与发现组件Eureka

    摘要:Spring Cloud是一个基于Spring框架的开发工具包,可以帮助开发人员构建基于微服务架构的分布式系统。其中的核心组件之一是Eureka,它提供了一套强大的服务注册与发现功能。本文将深入介绍Spring Cloud中的Eureka组件,包括其背景、特性、工作原理以及与其他Spring Cloud组件

    2024年02月13日
    浏览(67)
  • Spring Cloud Alibaba全家桶(四)——微服务调用组件Feign

    本文小新为大家带来 微服务调用组件Feign 的相关知识,具体内容包含 什么是Feign , Spring Cloud Alibaba快速整合OpenFeign , Spring Cloud Feign的自定义配置及使用 (包括: 日志配置 、 契约配置 、 自定义拦截器实现认证逻辑 、 超时时间配置 、 客户端组件配置 、 GZIP 压缩配置 )等

    2024年02月19日
    浏览(46)
  • Spring Cloud Alibaba全家桶(十)——微服务网关Gateway组件

    本文小新为大家带来 微服务网关Gateway组件 相关知识,具体内容包括 微服务网关Gateway组件 (包括: Gateway核心概念 , Gateway工作原理 ), Spring Cloud Gateway环境搭建 , 路由断言工厂(Route Predicate Factories)配置 , 过滤器工厂( Gateway Filter Factories)配置 , 全局过滤器(Glob

    2023年04月08日
    浏览(50)
  • 云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 今天我们讲解Spring Cloud微服务的第一代实现:Spring Cloud Netflix Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。 Spring Cloud 使用 Spring Boot 思想为 Eur

    2024年02月08日
    浏览(64)
  • springboot整合spring cloud gateway搭建网关服务

    spring cloud netflix zuul、spring cloud gateway是最常见的微服务网关,通过网关,我们可以在请求到达后端指定服务之前/后端服务处理完业务响应数据之后对响应进行对请求/响应进行处理。 比如常见的参数校验、接口鉴权等等,在后端服务的拦截器和过滤器能做的事在网关都可以做

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包