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

在这里插入图片描述
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.hqwc.cn/news/4199.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker: 改变容器化世界的革命性技术

目录 1.1什么是虚拟化 1.2什么是Docker 1.3容器与虚拟机的比较 1.4Docker组建 2、Docker安装 2.2设置ustc的镜像 2.3Docker的启动与停止 3、docker常用命令 3.1镜像 3.2容器相关命令 1.1什么是虚拟化 在计算机中&#xff0c;虚拟化&#xff08;Vitualization&#x…

netty学习(1):1个客户端与服务器通信

1. 新建maven工程&#xff0c;添加netty依赖 <?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"…

Spring MVC

Spring MVC &#x1f50e;什么是 Spring MVCMVC对比 MVC 与 Spring MVC &#x1f50e;Spring MVC—连接RequestMapping 默认情况下支持的请求类型RequestMapping 指定请求类型 &#x1f50e;Spring MVC—获取参数获取单个参数获取两个参数参数重命名传递对象传递 JSON 对象获取…

访问学者申请英语口语怎样顺利通关

想要成功申请成为访问学者&#xff0c;英语口语的流利表达是非常重要的。下面知识人网小编整理的一些帮助你顺利通关的建议&#xff1a; 1. 提前准备&#xff1a;在面试之前&#xff0c;充分准备各种常见问题的回答。练习口语表达&#xff0c;加强词汇和语法的掌握。可以通过与…

CSS实现多头像叠加ui效果

第一种实现方式 简单粗暴直接使用margin-right实现&#xff0c;缺点是第一行右侧最右边头像溢出容器&#xff0c;代码中的三行注释的代码放开后可解决这个问题。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测 目录 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测效果一览基本介绍研究过程程序设计参考资料效果一览 基本介绍 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络…

postman自动生成接口文档

点击&#xff1a; 会自动生成一个文件夹 点击图表&#xff0c;修改名字 新建一个请求&#xff0c;到时候会自动保存到文件夹里面&#xff0c;但是保存前看清楚保存的名字 点击三个点-》点击export即可

Excel - Windows操作系统下的键盘快捷方式

注意&#xff1a; * 这些快捷方式指的是美式键盘布局。 其他键盘布局的键可能与美式键盘上的键不完全对应。 * 快捷方式中的加号 () 表示需要同时按多个键。 * 快捷方式中的逗号 (,) 表示需要按顺序按多个键。 * 如果经常使用的操作没有快捷键&#xff0c;则可以“录制宏”…

英语语法学习_incomplete

在语言学中&#xff0c;自然语言的语法是说话者或作者在从句、短语和单词的构成上的一套结构约束。1 「语法」实际上有两个概念&#xff0c;一是「语法」&#xff08;也叫「文法」&#xff09;&#xff0c;二是「语法学」。 一、语法&#xff1a;客观存在的语言结构规律&#x…

Oracle 实现A表B表字段/表名不同,定时任务+存储过程,定期执行增删改查

说明 假设Oracle A表B表 &#xff0c;表字段不同&#xff0c;表名也不同&#xff0c; 通过存储过程 定时任务(Jobs)&#xff0c; 定期去执行业务逻辑的增删改查 。 1、定时同步 创建一个存储过程&#xff0c;用于比较两张表中的数据&#xff0c;并根据状态决定需要同步的数据。…

ChatGPT微调系列一:微调 流程

文章目录 前言一、啥叫微调二、为啥要微调三、不是所有模型都可以微调的四、总述微调的基本流程&#xff0c;以及涉及的主要函数&#xff0c;参数1. 安装2. 准备训练数据3. openai.api_key os.getenv() 进行一个说明4. 通过API 调用模型 常用函数5. 微调模型 常用函数6. OpenA…

什么是kafka,如何学习kafka,整合SpringBoot

目录 一、什么是Kafka&#xff0c;如何学习 二、如何整合SpringBoot 三、Kafka的优势 一、什么是Kafka&#xff0c;如何学习 Kafka是一种分布式的消息队列系统&#xff0c;它可以用于处理大量实时数据流。学习Kafka需要掌握如何安装、配置和运行Kafka集群&#xff0c;以及如…