Spring Cloud Sleuth+Zipkin-学习笔记
Spring Cloud Sleuth+Zipkin-学习笔记
参考文档
Sentinel :https://sentinelguard.io/zh-cn/docs/quick-start.html
Spring Cloud Gateway-学习笔记
Spring Cloud Gateway
使用SpringBoot2 开发的基于Spring Framework 5开发的Gateway框架,用于替代 Netflix zuul
介绍
网关的功能
让客户端只需要访问一个服务地址
保护网内的服务调用安全
实现了 监控、弹性和安全性的路由
过滤器完成以下功能
身份认证与安全
审查监控
动态路由
压力测试
负载分配
静态响应处理
多区域弹性
概念
路由 (routes)
id 路由的唯一标识
断言 (predicates)
什么样的规则进入匹配进一个路由
路由的入口规则
例
Path=/order-server/**
过滤器 (filters)
改变请求的URL和参数使之匹配为真实访问的地址
例:
StripPrefix=1
参考资料
https://mrhelloworld.com/
https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/
Spring Cloud Zuul-学习笔记
Spring Cloud Zuul
使用SpringBoot2 开发的基于Spring Framework 5开发的Gateway框架,用于替代 Netflix zuul
介绍
网关的功能
让客户端只需要访问一个服务地址
保护网内的服务调用安全
实现了 监控、弹性和安全性的路由
过滤器完成以下功能
跨域问题
只要访问网关就能解决跨域问题
身份认证与安全
审查监控
动态路由
压力测试
负载分配
静态响应处理
多区域弹性
实现方案
Nginx + Lua
Kong
Traefik
Spring Cloud Netflix Zuul
Spring Cloud Gateway
网关的工作方式
搭建方式创建一个注册中心创建一个Product创建一个Order 用Feing搭建一个nginx 负载均衡到多个Gateway使用zuul
manven中引入 org.springframework.cloud spring-cloud-starter-netflix-zuul包
application.yml
1234zuul: ignoredServices: & ...
Spring Cloud Gateway-学习笔记
Spring Cloud Sentinel-学习笔记.md
介绍Sentinel是Hystrix的替代谢解决方案
官网:https://sentinelguard.io/zh-cn/
Github: https://github.com/alibaba/Sentinel
支持双十一10年
完备的实时监控
比hystrix好用
总体框架如下
Sentinel分为两个部分
核心库(java控制端)
控制台(Dashboard) 基于Spring Boot开发,打开后可直接运行
搭建控制台下载控制台:https://sentinelguard.io/zh-cn/docs/dashboard.html
https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard4
下载sentinel
E:\DBank\软件\开发软件\sentinel
启动命令
1java -Dserver.port=18558 -Dcsp.sentinel.dashboard.server= ...
Spring AOP
Spring AOP主要概念
aspect(切面) 由通知、切点、组成,是个逻辑概念可以理解为以下概念的集合
pointcut(切点) 每个类都拥有多个连接点,可以理解为连接点的集合。
joinpoint(连接点),程序执行的特定位置,如某个方法调用等
weaving(织入) 将通知(advice)连接到具体连接点的过程
advice(通知) 是植入到目标类连接点商店一段代码。
通知种类
Before advice 前置通知 无论方法是否异常都会执行,因为是先执行的
After returning advice 后置通知
after throwing advice 异常通知
after finally advice 最终通知 无论目标方法是否异常都会执行
Around advice 环绕通知
通过调用ProceedingJoinPoint.proceed()可以在目标执行全过程中执行。
target: 目标对象
aop Proxy: 产生的代理新对象
Spring AOP 底层实现,是通过JDK动态代理或CGLib代理在运行实际在对象初始化阶段织入代码的。 ...
Spring Security-学习笔记
Spring Security原理
Spring Security 原理上来说是一个过滤器链。
以下列出过滤器链中关键的部分。
UsernamePasswordAuthenticationFilter
用户名密码认证过滤器
ExceptionTranslationFilter
异常转换过滤器
FilterSecurityInterceptor
过滤器安全拦截器,负责授权的
最后再进入原定的API
默认的过滤器链
其中DefaultLoginPage…、DefaultLogoutPage…风别是默认登录与默认登出页面。
查看过滤器办法
在项目启动后通过debug能查看
1run.getBean(DefaultSecurityFilterChain.class)
认证流程
一直调用到UserDetailsService的实现类 InMemoryUserDetailsManager(这是个默认用内存中读取的对象以后换掉)
然后把查询到的用户信息封装成UserDetails。
如果认证成功那么人过滤器会把这个对象给存储到application也就是context中。
后 ...
Spring Cloud Consul-学习笔记
Spring Cloud微服务概念微服务组件示意图
核心问题
服务很多客户端怎么访问
这么多服务如何通信
如何治理
服务崩溃怎么解决
注册中心介绍介你麻痹
学习顺序
CAP原则
A 可用性、C 一致性、P 分布式
Availability 可用性
Partition-Tolerance 分区容错性
Consistency 一致性
CP 效率低(牺牲可用性)
AP 牺牲一致性 (有脏数据)
CA 牺牲横向可扩容
对比
Consul 注册中心介绍
调用方式
特性
Raft 算法
https://www.cnblogs.com/xybaby/p/10124083.html
与Paxos不同raft 算法主要应用于工程界
服务发现
健康发现
Key/Value 存储
多数据中心
支持http和dns协议接口
官方提供web管理界面
角色
client: 客户端,无状态,将HTTP和DNS接口请求转发给局域网内的服务端集群
server: 服务端,保存配置信息,高可用集群,每个配置数据中心的server数量推荐为3个或五个。
模式
dev
cluster c ...
Spring Cloud Eureka-学习笔记
Spring Cloud微服务概念微服务组件示意图
核心问题
服务很多客户端怎么访问
这么多服务如何通信
如何治理
服务崩溃怎么解决
注册中心介绍介你麻痹
学习顺序
CAP原则
A 可用性、C 一致性、P 分布式
Availability 可用性
Partition-Tolerance 分区容错性
Consistency 一致性
CP 效率低(牺牲可用性)
AP 牺牲一致性 (有脏数据)
CA 牺牲横向可扩容
对比
Eureka架构原理
注册中心 Eureka Server
之间相互同步 Replicate
应用服务
注册 Registry
定时心跳机制 Renew
下线 Cancel
获取其他微服务信息 Get Registry
客户端服务 Client
Get Registry
Make Remote Call
角色
Server 注册中心
Service Provider 服务提供者
注册、重新注册、清除 Register/Renew/Cancel
Servcie Consumer 服务消费者
负载均衡的调用 Remote Call ...
Spring Cloud Hystrix
Spring Cloud Hystrix介绍
Hystrix 解决服务不可用时的解决方案
雪崩: 某个服务导致的问题导致的其他服务链路整个不可用
什么是hystrixhystrix 是Netflix公司内部的服务容灾处理解决方案
雪崩效应
一个请求调用多个服务很常见。
某一个服务故障或者延迟会导致系统资源迅速耗尽或者系统出现不可信结果。
原因归结为三类:
服务提供不可用
重试导致的流量加大
服务消费者不可用
解决方案
请求缓存
将一个请求与放回结果做缓存处理
请求合并
将相同的请求合并然后用批处理接口;
服务隔离
限制调用分布式资源,某一个调用服务出现问题不会影响服务调用。
服务熔断
牺牲局部服务,保证全体系统稳定措施;
服务降级
服务熔断以后可以断调用自己本地方法返回缺省值;
问题对应方案mapping高并发场景:
请求缓存:
通过raids等技术通过缓存降低后续服务调用频率
请求合并:
比如查询多次不同的ID查询,可以合并为一次查询列表。
平凡调用查询商品列表导致查询ID等小资源消耗的服务响应缓慢
我们可以隔离微服务的资源。使用服务隔离
...
Spring Cloud Feign
Spring Cloud Feign介绍:
Feign 能通过注解来实现远程调用。能够帮助我们节省很多远程调用的代码
Feign 使用了Ribbon
只需要在服务调用者中使用就行了
OpenFeign是spring基于Feign开发的spring融合版
核心思想:无感知远程HTTP调用请求
写个案例
步骤
服务消费者添加Feign依赖;
创建业务层接口,添加@FeignClient注解声明需要调用的服务;
业务抽象方法使用 SpringMVC注解配置服务地址及参数;
启动类加载 @EnableFeignClients 注解激活Feign 组件。
加载依赖包加载依赖
spring-cloud-starter-netflix-eureka-client
spring-cloud-starter-openfeign
spring-boot-starter-web
org.projectlombok lombok
spring-boot-starter-test
构建项目
ShopApplication 中添加@EnbaleFeignClients注解 开启Feign
创建 ...