微服务springcloud 10.config配置中心框架和rabbitmq的安装

news/2024/12/2 10:21:27/

在这里插入图片描述
config配置中心的作用:项目的yml 配置文件保存到 git 服务器,例如 github.com 或 gitee.com
微服务启动时,从服务器获取配置文件
1.新建 “Project”,命名为 config。注意这里的不是maven项目,而是project
在这里插入图片描述
在这里插入图片描述
2.将sp02,sp03,sp04,sp11四个项目的yml配置文件,复制到config项目,并改名
item-service-dev.yml
user-service-dev.yml
order-service-dev.yml
zuul-dev.yml
在这里插入图片描述
3.最后,清空四个项目中的application.yml文件

4.禁止配置中心的配置信息覆盖客户端配置
默认配置中心配置优先级高,配置中心配置会覆盖客户端的所有配置,包括命令行参数配置,这样我们在item-service和order-service中配置的端口号启动参数会无效

item-service 启动参数:
–service.port=8001
–service.port=8002
order-service 启动参数
–service.port=8201
–service.port=8202

我们可以设置禁止配置中心的配置将客户端配置覆盖掉
在四个配置文件中添加下面的配置

spring:cloud:
# 如果本地配置优先级高,那么 override-none 设置为 true,包括系统环境变量、本地配置文件等配置config:override-none: true

5.将 config 项目上传到 github
新建仓库
在这里插入图片描述
仓库命名
在这里插入图片描述
将项目分享到仓库
在这里插入图片描述
选择新建本地仓库
仓库目录选择工作空间目录下一个新目录: sp-config
在这里插入图片描述
提交项目
在这里插入图片描述
在这里插入图片描述
填写sp12-config仓库地址
在这里插入图片描述
查看远程仓库文件
在这里插入图片描述
config 服务器
config 配置中心从 git 下载所有配置文件。
而其他微服务启动时从 config 配置中心获取配置信息。
1.新建 sp12-config 项目
在这里插入图片描述
2.pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.tedu</groupId><artifactId>sp12-config</artifactId><version>0.0.1-SNAPSHOT</version><name>sp12-config</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Hoxton.SR12</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</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></project>

3.application.yml

spring:application:name: config-servercloud:config:server:git:uri: https://gitee.com/你的个人路径/sp-configsearchPaths: config#username: your-username#password: your-passwordserver:port: 6001eureka:client:service-url:defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka

4.主程序添加 @EnableConfigServer 和 @EnableDiscoveryClient

package cn.tedu.sp12;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;@EnableConfigServer
@EnableDiscoveryClient
@SpringBootApplication
public class Sp12ConfigApplication {public static void main(String[] args) {SpringApplication.run(Sp12ConfigApplication.class, args);}}

5.启动,访问测试
访问 item-service-dev.yml 可以使用以下形式:

http://localhost:6001/item-service-dev.yml
http://localhost:6001/item-service/dev

测试其他文件

http://localhost:6001/user-service/dev
http://localhost:6001/zuul/dev
http://localhost:6001/order-service/dev

6.config 客户端
修改以下项目,从配置中心获取配置信息
sp02-itemservice
sp03-userservice
sp04-orderservice
sp11-zuul

pom.xml 添加 config 客户端依赖
右键点击项目,编辑起步依赖,添加 config client 依赖
在这里插入图片描述
在四个项目中添加 bootstrap.yml
bootstrap.yml,引导配置文件,先于 application.yml 加载
item-service

spring: cloud:config:discovery:enabled: trueservice-id: config-servername: item-serviceprofile: deveureka:client:service-url:defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

user-service

spring: cloud:config:discovery:enabled: trueservice-id: config-servername: user-serviceprofile: deveureka:client:service-url:defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

order-service

spring: cloud:config:discovery:enabled: trueservice-id: config-servername: order-serviceprofile: deveureka:client:service-url:defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

zuul

spring: cloud:config:discovery:enabled: trueservice-id: config-servername: zuulprofile: deveureka:client:service-url:defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

7.启动服务,观察从配置中心获取配置信息的日志
在这里插入图片描述
RabbitMQ的安装
1.RabbitMQ基本概念:
RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入到队列池中。接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。
在这里插入图片描述
2.RabbitMQ使用场景
服务解耦
假设有这样一个场景, 服务A产生数据, 而服务B,C,D需要这些数据, 那么我们可以在A服务中直接调用B,C,D服务,把数据传递到下游服务即可

但是,随着我们的应用规模不断扩大,会有更多的服务需要A的数据,如果有几十甚至几百个下游服务,而且会不断变更,再加上还要考虑下游服务出错的情况,那么A服务中调用代码的维护会极为困难

这是由于服务之间耦合度过于紧密
在这里插入图片描述
再来考虑用RabbitMQ解耦的情况
A服务只需要向消息服务器发送消息,而不用考虑谁需要这些数据;下游服务如果需要数据,自行从消息服务器订阅消息,不再需要数据时则取消订阅即可
在这里插入图片描述

流量削峰
假设我们有一个应用,平时访问量是每秒300请求,我们用一台服务器即可轻松应对在这里插入图片描述

而在高峰期,访问量瞬间翻了十倍,达到每秒3000次请求,那么单台服务器肯定无法应对,这时我们可以考虑增加到10台服务器,来分散访问压力
但如果这种瞬时高峰的情况每天只出现一次,每次只有半小时,那么我们10台服务器在多数时间都只分担每秒几十次请求,这样就有点浪费资源了
在这里插入图片描述

这种情况,我们就可以使用RabbitMQ来进行流量削峰,高峰情况下,瞬间出现的大量请求数据,先发送到消息队列服务器,排队等待被处理,而我们的应用,可以慢慢的从消息队列接收请求数据进行处理,这样把数据处理时间拉长,以减轻瞬时压力
这是消息队列服务器非常典型的应用场景
在这里插入图片描述
异步调用
考虑定外卖支付成功的情况
支付后要发送支付成功的通知,再寻找外卖小哥来进行配送,而寻找外卖小哥的过程非常耗时,尤其是高峰期,可能要等待几十秒甚至更长
这样就造成整条调用链路响应非常缓慢
在这里插入图片描述
而如果我们引入RabbitMQ消息队列,订单数据可以发送到消息队列服务器,那么调用链路也就可以到此结束,订单系统则可以立即得到响应,整条链路的响应时间只有200毫秒左右
寻找外卖小哥的应用可以以异步的方式从消息队列接收订单消息,再执行耗时的寻找操作
在这里插入图片描述
3.RabbitMQ安装
第一步:安装erlang语言库
RabbitMQ使用了Erlang开发语言

RabbitMQ官方精简的Erlang语言包,依赖rpm安装包
https://github.com/rabbitmq/erlang-rpm
在这里插入图片描述
下载和安装
这两条命令都是在linux系统中去完成的:

# 下载Erlang语言包
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v21.2.6/erlang-21 .3.8.12-1.el7.x86_64.rpm 
# 安装Erlang 
rpm -ivh erlang-21.2.6-1.el7.x86_64.rpm --force --nodeps第二步:安装socat依赖
socat依赖包
http://pkgs.org/download/socat
``![在这里插入图片描述](https://img-blog.csdnimg.cn/9bfd489b48dc46708bcd64de548ad205.png)
`
http://centos.pkgs.org/7/centos-x86_64/socat-1.7.3.2-2.el7.x86_64.rpm.html
![在这里插入图片描述](https://img-blog.csdnimg.cn/f07eb20a58cd4536a571005cbd7f590b.png)
下载和安装
这两条命令都是在linux系统中去完成的:

下载 socat rpm

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/socat-1.7.3.2-2.el7.x8 6_64.rpm

安装 socat 依赖包

rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm

相关的命令解释:
rpm -ivh其中的-i (install   安装软件包 ) -v (view  可视化)-h ( hour 方便自己记忆 显示安装进度   )简单来讲就是  可视化并显示进度地 安装软件第三步:安装rabbitmq
rabbitmq安装包
https://www.rabbitmq.com/install-rpm.html#downloads![在这里插入图片描述](https://img-blog.csdnimg.cn/ffbc44272f3a49d09e0727e4ce5dccf4.png)
下载和安装

下载 rpm 包

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.13/rabbitmq-server-3.7.13-1.el7.noarch.rpm

安装 rpm 包

rpm -ivh rabbitmq-server-3.7.13-1.el7.noarch.rpm

启动rabbitmq服务器

设置服务,开机自动启动

chkconfig rabbitmq-server on
#启动服务
service rabbitmq-server start
#停止服务
service rabbitmq-server stop

rabbitmq管理界面
启用管理界面

开启管理界面插件

rabbitmq-plugins enable rabbitmq_management

防火墙打开 15672 管理端口

firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload

重启RabbitMQ服务

systemctl restart rabbitmq-server

访问
访问服务器的15672端口,例如:http://192.168.64.140:15672添加用户

添加用户

rabbitmqctl add_user admin admin

新用户设置用户为超级管理员

rabbitmqctl set_user_tags admin administrator


设置访问权限![在这里插入图片描述](https://img-blog.csdnimg.cn/22abf9b0cf4947cc95f52a15c2e39782.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/3365df3821f049bdb7d0f8f8b934502b.png)
开放客户端连接端口

打开客户端连接端口

firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload

``
主要端口介绍
4369 – erlang发现口
5672 – client端通信口
15672 – 管理界面ui端口
25672 – server间内部通信口
`


http://www.ppmy.cn/news/633852.html

相关文章

6s测试信号软件,主流智能机信号强度测试 iPhone6s表现差

据外媒报道&#xff0c;最近丹麦Aalborg大学的教授Gert Frolund Pedersen对苹果iPhone 6s的天线性能进行了试验&#xff0c;不过从结果来看并不是十分乐观。 Pedersen将iPhone 6s与之前的iPhone 6、三星Galaxy S6和索尼Xperia Z5 Compact进行对比&#xff0c;测试其在900GSM频段…

ios 改变图片尺寸_iOS 修改图片尺寸的方法

目前在iOS上对于图片的优化点有很多,例如图片解码、图片渐加载和图片尺寸处理。这篇文章是说明目前iOS 代码中修改图片尺寸的两种方法,以及这两种方法区别和注意点。 修改图片尺寸的两种方法 1. 画布ImageContext(UIKit) /** 利用画布对图片尺寸进行修改 @param data ---- 图…

6s测试信号软件,手机信号强度测试:苹果iPhone 6s不敌三星S6

10月29日消息&#xff0c;来自丹麦Aalborg大学教授Gert Frolund Pedersen曾发现苹果iPhone 4“天线门”问题而在科技圈名声大噪。近日&#xff0c;他又对苹果iPhone 6s的天线性能进行了试验&#xff0c;不过从结果来看并不是十分乐观。 教授在封闭的环境中对37款智能手机进行测…

vscode cpp使用gtest进行测试

在 VS Code 中使用 Google Test (gtest) 进行 C 代码测试需要进行一些设置和配置&#xff1a; 安装 Google Test&#xff1a;首先&#xff0c;你需要下载并安装 Google Test 框架。你可以从官方 GitHub 仓库&#xff08;https://github.com/google/googletest&#xff09;下载源…

最小化安装的Red Hat 9安装完Zabbix后没有中文字体报错解决

Redhat9最小化安装后&#xff0c;将 Zabbix 的界面设置为中文&#xff0c;但是系统提示你服务器上没有安装相应的语言包。这是因为 Zabbix 需要在服务器上安装相应的语言环境才能正常显示相应的语言。 报错提示&#xff1a; You are not able to choose some of the languages,…

Android 输入事件一撸到底之View接盘侠(3)

前言 系列文章 1、Android 输入事件一撸到底之源头活水&#xff08;1&#xff09; 2、Android 输入事件一撸到底之DecorView拦路虎&#xff08;2&#xff09; 3、Android 输入事件一撸到底之View接盘侠&#xff08;3 前两篇文章分别分析了输入事件分发到App层以及DecorView对输…

测试数据制做用到的一些随机数据

有时&#xff0c;需要测试系统功能&#xff0c;常见的需要造一批用户&#xff0c;而用index&#xff08;用户001 用户002&#xff09;等方式又太丑了。弄了个下面的工具&#xff0c;可以随机生成标准格式的数字&#xff0c;手机&#xff0c;email,姓名。 public class RandomU…

Flink 版本数据湖(hudi)实时数仓---flinkcdc hudi kafak hive

1.架构图 2.实现实例 2.1 通过flink cdc 的两张表 合并 成一张视图&#xff0c; 同时写入到数据湖(hudi) 中 同时写入到kafka 中 2.2 实现思路 1.在flinksql 中创建flink cdc 表 2.创建视图(用两张表关联后需要的列的结果显示为一张速度) 3.创建输出表&#xff0c;关联Hudi表…