上午
Zuul组件(API)
微服务架构过于复杂 就是一个中小型的项目也有上百个服务
最好从服务名称或者服务地址去调用
统一调用入口
如下图 加一个入口去调用
配置方法
配置配置方法即可
转发路径的规则
用户去访问这个路径
不配置的话
搭建zuul
录像模式 跟着步骤新建
1.依赖
2.配置文件
3.主启动类
搭建初步 启动测试 集成了ribbon负载重试远程+Hystrix断路降级
开启服务器
http://eureka1:2001
http://localhost:3001/item-service/35
http://localhost:3001/item-service/decreaseNumber
使用postman,POST发送以下格式数据:
[{“id”:1, “name”:“abc”, “number”:23},{“id”:2, “name”:“def”, “number”:11}]
http://localhost:3001/user-service/7
http://localhost:3001/user-service/7/score?score=100
http://localhost:3001/order-service/123abc
http://localhost:3001/order-service/
别忘了降级回调的方法前提 10s20次请求或者百分之50以上的失败率 开启断路器
复习完毕 其余均实验成功
续统一的网关入口之后 搭建统一的权限校验
如下图 如果每一个服务都分别搭建权限校验 会很多很多!! 所以
单体权限框架是shiro框架
zuul 请求过滤
当请求到达zuul(足)服务器的时候 (一开始 第一个就是zull)
路由过滤器 去调用其他服务
如下 修正
转发调用 并得到结果(返回去)
后置过滤器
过滤方法=run方法
比如登陆页面 只有两个框 直接指定通过
访问带参的订单模块的时候 左边是订单模块 item设置了百分之90的超时可能 就会返回504
路由过滤器
如上图 校验用的是apache的包 空白字符之类的功能也有比较方便
自我实现
页面实现 呈现
访问测试
没有token参数不允许访问
http://localhost:3001/item-service/35
有token参数可以访问
http://localhost:3001/item-service/35?token=1234
第五个 在上下文才存在
如上图 获得前置过滤器的列表
如下图第五个自己放的 默认 第六个需要自己设置
第五过滤器保存的
理解 先设置 才能获取 所以 在第五个(PreDecorationFilter)设置 第六个(AccessFilter)
调用延迟 item里的
继续
zuul 集成 ribbon
默认启用了负载均衡,但没有启用重试
启用重试
添加 spring-retry 依赖
zuul.retryable=true
有默认重试参数
作为网关 拦截功能开启 同时测试ribbon的重试
订单集群的轮询
商品集群的轮询
只访问了2次 却有多次是因为是轮询+重试
zuul + hystrix 降级
创建降级类
getRoute() 方法中指定应用此降级类的服务id,星号或null值可以通配所有服务
response类型
需要返回什么 就生成什么
自我实现 降级回调 可以死记 通用的
什么都不用配置
连续访问20次 触发效果
先不测试降级了 压力太大
为什么Feign不推荐启用Hystrix,Zuul不推荐启用Ribbon重试
Feign
部署位置: 业务服务之间调用
添加Hystrix会造成混乱,故障点难以确认
Zuul
部署位置: 在最前面作为入口
zuul如果启用重试,可能造成后台多台服务器压力过大
zuul + hystrix 数据监控
暴露 hystrix.stream 监控端点
考虑监控
启动服务,查看暴露的监控端点
http://localhost:3001/actuator
http://localhost:3001/actuator/hystrix.stream
开启监控
启动 sp08-hystrix-dashboard,填入 zuul 的监控端点路径,开启监控
http://localhost:4001/hystrix
填入监控端点:
http://localhost:3001/actuator/hystrix.stream
使用hystrix仪表盘, 对 turbine 监控端点进行监控, 此端点聚合了订单服务和zull网关服务的监控数据
http://localhost:5001/turbine.stream
http://localhost:4001/hystrix
集结完成
下午
配置中心 git仓库
集中管理配置文件
自我实现
继续
版本冲突 推送不上去
自我实现
合并
如果版本有冲突 (本地和远程的有不同)发现冲突 先拉取回来 再合并 再上传!!
新建分支
自我实现
主分支添加东西
Fork叉子
git仓库 搭建配置中心
测试 上线…
搭建配置中心
添加依赖
主启动类
页面实现
搭建配置中心 自我实现
自我再实现
启动,访问测试
访问 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:60
完全错误 导入项目8
配置加上url path 依赖加入注解 访问网址就可 只需要启动sp12的服务器 后台报错不管
30号通宵已解决