体系架构
概念## 体系架构## 主要技术架构
版本选择
springboot以数字为版本
springcloud以字母为版本
springboot要用2.0以后版本
版本依赖关系
选择版本
依赖
微服务组件停更升级替换
Eureka
概念
组件
server端
依赖
yml配置文件
主启动类上加注解
client端
依赖
yml配置
在服务端显示的主机名称修改和ip显示
依赖
yml配置
主启动类添加注解
实例名称
server集群
搭建注意地方
7001服务守望7002
7002服务守望7001
client注册进server集群
client集群
8001和8002
80调用时注意
获取服务注册信息
主启动类开启
引进注解
接口访问
自我保护机制
关闭自我保护机制
服务端配置
客户端配置
springcloud整合Zookeeper代替Eureka
服务端
zookeeper服务端放在linux
客户端
依赖
注意zookeeper引进的依赖要和Linux上安装的zookeeper的版本一致,否则启动时会报版本冲突问题
yml配置
主启动类
成功启动注册进zookeeper
服务节点是临时节点
只要服务节点不存在了,zookeeper会在心跳过后直接删除
consul
概念
服务端直接安装
客户端
依赖
yml配置
主启动类
三个注册中心异同点
CAP原则
分布式系统必须满足p,所以分布式系统要不是CP,要不是AP
Ribbon
概念
集中式LB
进程内LB
eureka已经引入了ribbon
负载规则替换
配置类
主启动类添加注解
OpenFeign
概念
面向接口的调用(服务接口绑定器)
服务调用
依赖
开启Feign
远程接口
对应关系
超时控制
概念
配置
日志打印
简介
日志级别
配置Bean
yml配置
Hystrix
服务雪崩
概念
作用
服务降级(break)
例如:
既可以放在服务端,也可以放在客户端,一般放在客户端
依赖
客户端降级
主启动类激活
客户端业务
服务端降级
yml配置
主启动类开启
业务类和客户端一样
默认降级(每一个方法配置一个问题)
类上增加注解
方法上
默认处理方法
针对接口处理(和业务代码混在一起)
实现类
接口上增加注解
服务熔断(fallback)
例如
概念
有三种状态
端口、关闭、半开
服务熔断注解
熔断效果
错误次数比率太多,如果服务熔断了,开始即使有正确的请求,也可能会不成功;
成功几次,就会成功
工作流程
服务限流(flowlimit)
例如
Hystrix Dashboard
依赖
主启动类开启
被监控项目
被监控项目图形化展示需要添加依赖
启动类配置
GateWay
简介
微服务项目中位置
选择gateway原因
gateway底层框架是异步非阻塞的,比Zuul2.0出来的早(占有了市场)
工作流程
项目搭建
依赖
yml配置
不需要web依赖
访问方式
路由配置
两种方式
yml配置
代码配置
通过微服务名来实现动态路由
概念
yml配置修改
predicate
实质是路由里边一些条件的匹配
路径匹配,某个时间之后,带cookie访问
gateWay的filter
概念
自定义过滤器
配置中心
背景
概念
作用
服务端项目搭建
依赖
yml
开启配置服务
配置读取规则
客户端项目搭建
依赖
yml
yml解析
动态刷新问题
分布式配置的动态刷新问题
解决办法
引入actuator监控
修改yml,暴露监控端口
controller增加刷新注解
刷新客户端生效
仍然存在的问题
消息总线
目的
实现分布式自动刷新功能
概念
工作流程
安装RabbitMQ
设计思想:
配置中心服务端
依赖
yml
配置中心客户端
依赖
yml
刷新配置中心服务端
广播通知
rabbitMQ可以看到消息总线topic
定点通知
只通知3355
刷新命令
消息驱动(stream)
引入的目的
概念
统一底层差异
遵循发布-订阅模式
目前只支持 RabbitMQ合Kafka两种消息中间件
编码api和常用注解
项目
生产者
以rabbitmq作为消息中间件
yml配置
发送消息代码
消费者
依赖
yml
接受消息代码
分组消费与持久化
存在重复消费问题
重复消费问题解决
原因
解决原理
yml配置分组
持久化
消费者配置了分组后,可以支持持久化消费,即当生产者发送消息时,尽管消费者当时没有启动,如果重新启动后仍然可以把没有消费的消息消费;但是对于没有配置分组的消费者来说重新启动后不能把没有消费的消息消费
Sleuth
分布式请求链路跟踪
出现原因
zipkin搭建安装
sleuth负责收集整理,zipkin负责展现
下载好zipkin后直接运行命令运行jar包
链路依赖关系