config: 分布式配置中心 & bus: 消息总线

这篇具有很好参考价值的文章主要介绍了config: 分布式配置中心 & bus: 消息总线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


每一个应用程序在运行时都需要相应的yml配置,分布式架构下多个服务器和应用服务面临着多个配置文件,在修改和发布上难度较大,需要有一个管理中心来统一管理,优雅的解决了配置的动态变更、持久化、运维成本等问题

流程:
分布式配置中心去远程仓库将创建好的yml文件读取,application client去分布式配置中心获取配置

Spring Cloud Config: spring cloud config server和spring cloud config client
基于Http协议

hello world

一.在gitee上创建一个仓库,创建application.yml,如下配置:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: fsfs

二.创建一个项目config_server
1.导入依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

2.yml配置:

server:
  port: 8888

# 增加分布式配置中心服务端配置。连接GIT仓库
spring:
  cloud: # spring cloud常用配置前置
    config: # 分布式配置中心配置前置
      server: # 服务端配置
        git: # git文件仓库配置
          uri: https://gitee.com/xxxx/spring_cloud_config.git # git仓库具体地址
          #username: xxxxxx # 私有仓库必须配置用户名和密码。
          #password: xxxxxx # 公开仓库可以省略用户名和密码配置。

3.启动类上加@EnableConfigServer注解

@SpringBootApplication
@EnableConfigServer
public class SpringcloudConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudConfigApplication.class, args);
    }
}

三.访问测试:
在浏览器地址栏输入 http://localhost:8888/name/profile/label ,基于Config Server获取需要的配置文件。
name-必要restful参数,代表配置文件主体名称,及一般为application
profile-必要restful参数,代表配置文件扩展环境名称,默认读取default环境扩展配置,即application-xx.yml中的xx
label-可选参数,代表配置文件所在GIT分支名称,默认null,相当于master分支

访问 http://localhost:8888/application/default(没有可以不写)/master(分支名称)

四.创建项目config_client获取config_server的配置信息
1.导入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

2.创建bootstrap.yml,不使用application.yml,防止冲突
新配置文件 bootstrap.yml | properties。是spring cloud config技术支持的新配置文件。
配置文件由config分布式配置中心客户端读取,并请求分布式配置中心服务端,查询获取配置文件之后,Spring Boot根据配置文件,初始化环境

spring:
  cloud:
    config: # spring cloud config 客户端配置
      uri: http://localhost:8888 # 分布式配置中心服务端地址。 默认http://localhost:8888
      name: application # 要读取的配置文件名,默认是spring.application.name的配置值,如果没有配置,默认application
      # profile: default # 要读取的配置文件环境是什么,默认default
      label: master # 要读取的配置文件所在分支名称。默认null。从主干分支获取文件。

四.改变远程仓库的端口server.port,
反复启动cofig_client项目,观察端口号变化

热刷新

1.添加导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.Config Client新增配置内容

management:
  endpoints:
    web:
      exposure:
        include: refresh,info,health

3.Config Client修改服务实现
在使用远程配置内容的类上(案例中的Service,放在controler上无效)增加新注解:

@Service
@RefreshScope
public class ConfigClientServiceImpl implements ConfigClientService {
    @Value("${my.content}")
    private String content;
    @Override
    public String test() {
        System.out.println("content = " + content);
        return content;
    }
}

4.测试热刷新
使用PostMan工具,发送POST
访问 http://localhost:8080/actuator/refresh 访问改地址,才能刷新注入,实际已经刷新了
再次访问 http://localhost:8080/test

Spring Cloud Bus:消息总线

Spring Cloud Bus集成了市面上常见的RabbitMQ和Kafka等消息代理。其会连接微服务系统中所有拥有Bus总线机制的节点,当有数据变更的时候,会通过消息中间件使用消息广播的方式通知所有的微服务节点同步更新数据。(如:微服务配置更新等)

基于Bus消息总线实现热刷新功能,需要在所有的Eureka Client端应用中增加spring-cloud-starter-bus-amqp依赖,这个依赖是消息总线集成的RabbitMQ消息同步组件。基于消息总线的热刷新同样是通过actuator实现的,所以需要spring-boot-starter-actuator启动器依赖。
1.在Config Client中增加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 总线技术中的amqp相关依赖。 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

2.编辑配置文件: 编辑Config Client中的配置文件。

spring:
  rabbitmq:
    host: localhost
    username: guest
    password: giest
management:
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: bus-refresh,info,health

3.测试
消息总线Bus基于Actuator对外提供了热刷新服务,服务地址是:http://localhost:8080/actuator/bus-refresh。此服务只能使用POST方式请求,可以使用PostMan测试。文章来源地址https://www.toymoban.com/news/detail-421893.html

到了这里,关于config: 分布式配置中心 & bus: 消息总线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Cloud之Config分布式配置应⽤

    . 右键⽗⼯程【 yx-parent 】选择【 New 】 - 【 Module 】选项,然后选择创建【 Maven 】类型项⽬(不勾选模 板),将项⽬名称设置为【yx-cloud-config 】。   在 yx-cloud-config ⼯程的 pom.xml⽂件中引⼊以下依赖坐标(需要将⾃⼰注册到 Eureka )。 在 com.yx.config 包下创建 ConfigApplication 启

    2024年02月15日
    浏览(50)
  • 分布式配置中心

    一、Config概述 Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护 好处: 集中管理配置文件 不同环境不同配置,动态化的配置更新 配置信息改变时,不需要重启即可更新配置信息到服务 二、Config 快速入门 1、使用gitee创建远程仓库,上传配置文件 config-dev

    2024年02月07日
    浏览(39)
  • 分布式配置中心 Apollo

    1、客户端和服务端会保持一个长连接,从而第一时间获取配置更新的推送。 2、客户端还会定时从Apollo配置中心服务端拉取应用的最新配置,而且客户端定时拉取会上报给本地版本,默认每隔5分钟拉取一次,也可以通过运行时指定apollo.refreshInterval来覆盖,单位为分钟。 3、客

    2024年02月10日
    浏览(44)
  • 第三章 分布式配置中心

    分布式配置中心是为了解决在分布式系统中进行配置管理的需求而引入的。在传统的单体应用中,通常使用配置文件集中管理系统的配置信息。然而,在分布式系统中,由于系统规模变大、节点众多,并且可能部署在不同的服务器上,传统的配置文件方式会面临一些挑战。

    2024年02月04日
    浏览(41)
  • 微服务 分布式配置中心Apollo详解

    配置就是应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。常见的配置properties,yml,xml等。 先说为什么需要配置中心,传统的配置有什么问题? 没有配置也可以在代码写死,为什么需

    2023年04月08日
    浏览(37)
  • 微服务架构学习与思考(13):分布式配置中心

    微服务架构系列文章集合:https://www.cnblogs.com/jiujuan/p/17307285.html 用编程语言编写应用项目时,一般都会有项目的配置文件。比如用 java 编写项目,有一个 properties 的配置文件,会把一些配置信息写入到该文本文件中,例如数据库相关的配置信息。 这也体现了软件设计的一个原

    2024年02月06日
    浏览(51)
  • 理解 Spring Cloud 分布式配置中心Eureka

    作者:禅与计算机程序设计艺术 在 Spring Cloud 的世界里,分布式系统经历了开发、测试、运维三个阶段。而在开发阶段,通常采用集中式配置方式,将所有配置文件统一管理在一台服务器上。随着业务系统的不断扩张,各个微服务模块都需要配置自己的属性值。因此,需要一

    2024年02月08日
    浏览(55)
  • Nacos服务注册和配置中心(Config,Eureka,Bus)2

            Nacos领域模型,Namespace命名空间、Group分组、集群这些都是为了进行归类管理,把服务和配置文件进行归类,归类之后就可以实现一定的效果,比如隔离。对于服务来说,不同命名空间中的服务不能够互相访问调用         Namespace:命名空间,对不同的环境进行

    2024年02月16日
    浏览(54)
  • Nacos服务注册和配置中心(Config,Eureka,Bus)1

            Spring Cloud是若干个框架的集合,包括spring-cloud-config、spring-cloud-bus等近20个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案, Spring Cloud Alibaba可以集成Zuul、Gateway等网关组件,也可集成R

    2024年02月16日
    浏览(35)
  • 分布式配置中心Apollo中Namespace的类型整理

    Namespace类型有三种: 【1】私有类型 【2】公共类型 【3】关联类型(继承类型) 私有类型的Namespace具有private权限。例如上文提到的“application” Namespace就是私有类型。 1.介绍 公共类型的Namespace具有public权限。公共类型的Namespace相当于游离于应用之外的配置,且通过Namespace的

    2024年02月09日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包