当前位置:   article > 正文

SpringCloud之随堂笔记

SpringCloud之随堂笔记

eureka运行机制

(1)注册:客户端会一次一次反复连接服务器,直到注册成功为止
(2)拉取:客户端每30秒重复拉取注册表,刷新注册表
(3)心跳:客户端每30秒发送一次心跳数据,服务器在连续3次收不到一个服务的心跳后,会删除这个服务
(4)自我保护模式:由于网络不稳定,或网络中断,15分钟内,85%服务器出现心跳异常,会进入保护模式,保护所有注册信息不删除
网络恢复之后,会自动退出保护模式恢复正常,开发调试期间,可以禁用保护模式,避免影响测试。

zuul网关

  • zuul API 网关,为微服务应用提供统一的对外访问接口。

  • zuul 还提供过滤器,对所有微服务提供统一的请求校验。

  • Zuul 的四个功能:统一的入口、统一的权限校验、集成ribbon、集成hystrix

  • 统一的入口实践步骤:
    (1)新建 module: sp06-zuul
    (2)添加依赖: eureka client、zuul、sp01
    (3)配置文件yml :

下面是默认配置
 zuul根据注册表的注册信息,自动完成配置
 最好手动配置,防止注册表不全
zuul:
  routes:
    item-service: /item-service/**
    user-service: /user-service/**
    order-service: /order-service/**
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

(4)启动类添加注解:@EnableZuulProxy

  • 统一的权限校验 实践步骤:

(1)继承父ZuulFilter过滤器
(2)自定义过滤器的方法
(3)添加@Component注解
zuul会从spring容器中发现这个过滤器的实例,自动完成配置。

携带token时访问:

未携带token时访问:

  • 集成ribbon 实践步骤:

zuul集成Ribbon默认实现负载均衡,但是没有启动Ribbon的重试。尽量不要在网关添加重试,否则可能会造成大面积服务器压力倍增。
(1)添加 spring-retry 依赖
(2)yml配置 zuul.retryable=true
(3)有默认重试参数,可以修改配置

  • 集成Hystrix 实践步骤:
    容错:当调用后台服务出错时,执行当前服务中的一段降级代码,返回降级结果。
    限流(熔断):当调用后台服务流量过大时,后台服务出现故障,可以断开链路,减轻后台服务压力,等待后台服务恢复。

(1)降级操作:
调用后台服务出错:
后台服务出现异常,500错误。
后台服务不存在。
调用超时,默认1秒超时。
(2)添加降级代码
zuul集成了hystrix,有hystrix的间接依赖,不需要添加任何配置,默认已经启用hystrix。
实现 FallbackProvider 接口
添加 @Component 注解,会从spring容器自动发现这个实例,完成自动配置。

(3)Hystrix熔断、限流:
后台服务流量过大,出现故障,通过熔断限制后台服务流量。
熔断的条件:

  • 10秒内有20次请求

  • 50%失败,则执行降级代码
    断路器打开一段时间后,会进入半开状态,半开状态下,

  • Hystrix dashboard
    Hystrix仪表盘,可以监控Hystrix降级和熔断的情况
    搭建仪表盘:
    1.创建:module:sp01-hystrix-dashboard
    2.添加依赖:hystrix-dashboard

  • Actuator
    springboot提供的一个项目监控工具,提供项目的多种监控日志。
    添加Actuator:
    1.actuator依赖
    2.yml配置暴露哪些监控数据

m.e.w.e.i="*" 暴露全部监控数据
m.e.w.e.i=health,beans,mappings,hystrix,stream 暴露多项监控数据
m.e.w.e.i=health 暴露一项数据
  • 1
  • 2
  • 3

访问路径:http://localhost:3001/actuator

Turbine

Hystrix日志的聚合工具
可以聚合多台服务器的Hystrix日志,Hystrix dashboard可以从Turbine拉取聚合之后的日志,同时监控多台服务器。

搭建Turbine 服务
1.新建模块:Sp08-turbine
2.添加依赖:eureka client,turbine
3.yml

聚合的服务:zuul、aa、bb、cc
给聚合的数据命名:new String("default")
  • 1
  • 2

4.启动类:@EnableTurbine
5.访问http:localhost:5001/turbine.stream

VMware 修改NAT网络网段

编辑–虚拟网络编辑器–选择vmnet8网卡–左下角 192.168.64.0

Spring cloud config 配置中心

集中管理和维护配置文件

准备git仓库

1.在springcloud1工程目录下新建config文件夹
2.把sp02,03,04的application.yml复制到config文件夹下
改名为:

  • item-service-dev.yml
  • user-service-dev.yml
  • order-service-dev.yml

3.创建本地仓库

  • VCS——>create git repository——>spring cloud1

4.提交本地仓库

搭建配置中心

创建工程sp09-config
添加依赖:eureka client,config-server
配置yml:

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/chong-xin/GitCGBV2104Project
            search-paths: springcloud1/config
server:
  port: 6001
  
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

启动类添加注解:@EnableConfigServer

RabbitMQ

消息服务器
消息队列 message queue
消息中间件Borker

  • 搭建Docker服务器
    1、克隆centos-802105:docker-base
    2、设置Ip
    3、mobaxterm连接服务器
    4、上传docker的离线安装文件到/root/
    5、按docker安装笔记执行离线安装
# 进入 docker-install 文件夹
cd docker-install
# 为 docker-install 添加执行权限
chmod +x install.sh
# 安装
./install.sh -f docker-20.10.6.tgz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 搭建Rabbitmq服务器
    1、克隆docker-base
    2、设置Ip
    3、rabbitmq镜像:
    docker pull rabbimq:management 在线下载镜像
    上传rabbit-images.gz到/root中,执行docker load -i rabbit-image.gz
    4、查看镜像 docker images 查看镜像
    5、关闭防火墙 systemctl stop firewalldsystemctl disable firewalld
    6、重启docker系统服务 systemctl restart docker
    7、从镜像运行启动rabbitmq容器
# 导入的旧版本,启动运行命令
docker run -d --name rabbit \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
rabbitmq:management
​
​
# 在线拉取的新版本 3.9 以上
mkdir /etc/rabbitmq
​
vim /etc/rabbitmq/rabbitmq.conf
​
# 添加两行配置:
default_user = admin
default_pass = admin
​
docker run -d --name rabbit \
-p 5672:5672 \
-p 15672:15672 \
-v /etc/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-e RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf \
rabbitmq:management
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

8、访问管理控制台 http://192.168.64.140:15672
用户名密码是 admin

Bus消息总线

  • Bus连接rabbitmq,发送刷新指令

  • Bus连接rabbitmq,接收刷新指令

  • 修改2,3,4,9,添加Bus消息总线
    1.添加依赖:Bus、Rabbitmq、Binder-rabbitmq
    2.yml配置rabbitmq的连接信息,修改2,3,4的config文件,提交推送。

  • 修改9,暴露刷新端点
    1.actuator 依赖 (09中已经有间接依赖)
    2.yml暴露刷新端口
    m.e.w.e.i=bus-refresh

Sleuth + Zipkin 链路跟踪

Sleuth 在各个模块产生链路跟踪日志
http://localhost:3001/order-service/sedede

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号