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

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.3.1.RELEASE

cn.tedu

sp12-config

0.0.1-SNAPSHOT

sp12-config

Demo project for Spring Boot

1.8

Hoxton.SR12

org.springframework.cloud

spring-cloud-config-server

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

3.application.yml

spring:

application:

name: config-server

cloud:

config:

server:

git:

uri: https://gitee.com/你的个人路径/sp-config

searchPaths: config

#username: your-username

#password: your-password

server:

port: 6001

eureka:

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: true

service-id: config-server

name: item-service

profile: dev

eureka:

client:

service-url:

defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

user-service

spring:

cloud:

config:

discovery:

enabled: true

service-id: config-server

name: user-service

profile: dev

eureka:

client:

service-url:

defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

order-service

spring:

cloud:

config:

discovery:

enabled: true

service-id: config-server

name: order-service

profile: dev

eureka:

client:

service-url:

defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

zuul

spring:

cloud:

config:

discovery:

enabled: true

service-id: config-server

name: zuul

profile: dev

eureka:

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间内部通信口 `

推荐阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。