spring cloud
文章平均质量分 75
浮生夢
当有一天,有星光刺破黑洞的昏暗,那是我吞吐天地的余晖,代表着我已映照诸天。当有一天,有玄雷划过星空的浩瀚,那是我拳光的劲风,代表着我已回来。当星河列阵,宇宙星海星光齐绽,那是我在笑,我已复苏,我在归来,我已无敌!
展开
-
Springcloud之Feign、Hystrix、Ribbon如何设置超时时间
我们在微服务调用服务的时候,会使用hystrix、feign和ribbon,比如有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除,这时候客户端访问该节点的时候自然会失败。所以,为了构建更为健壮的应用系统,我们希望当请求失败的时候能够有一定策略的重试机制,而不是直接返回失败。这里还会设计一些其他的配置参数,降级和熔断的概念不再赘述。先看这几个组件的关系hystrix在最外层,然后再到Ribbon,最后里面的是http请求。所以说。原创 2023-06-12 10:17:27 · 4166 阅读 · 0 评论 -
SpringMVC底层原理源码解析
因为这三个接收的直接就是Requeset对象,不用SpringMVC做额外的解析,所以比较简单,比较复杂的是RequestMappingHandlerAdapter,它执行的是加了@RequestMapping的方法,而这种方法的写法可以是多种多样,SpringMVC需要根据方法的定义去解析Request对象,从请求中获取出对应的数据然后传递给方法,并执行。RouterFunctionMapping的寻找流程会有些区别,但是大体是差不多的,相当于是一个path对应一个HandlerFunction。原创 2023-05-06 18:25:52 · 2164 阅读 · 0 评论 -
Spring 循环依赖处理之三级缓存设计
如上图,创建A之前需要先创建B,创建B之前需要先创建A,造成循环依赖。由于A没创建完成,所以B再创建的时候再容器中获取不到A对象。如何解决这个问题呢?我们把创建中的对象叫半成品,创建完了的叫成本。处于半成品状态的对象能否直接使用?不能使用。如果此时并不是暴露给外部使用,而是内部程序的调用呢?当需要暴露给外部调用的时候,如果完成了赋值操作就不会有问题了。如果你持有了某一个对象的引用,能否在后续步骤的时候进行赋值操作?可以。本质是半成品状态的对象可以在中间过程中使用,实例化和初始化分开执行。原创 2023-04-21 14:02:39 · 667 阅读 · 0 评论 -
Feign报错Method Not Allowed 405 5种解决方案
这段代码是在 HttpURLConnection 中发现的,jdk原生的http连接请求工具类,原来是因为Feign默认使用的连接工具实现类,所以里面发现只要你有body体对象,就会强制的把get请求转换成POST请求。Feign发送Get请求时,采用POJO传递参数 Method Not Allowed 405。默认的是jdk的,可以修改为okhttp 或者 httpclent。使用@Validated验证的时候不支持了,需要手动调用校验方法。原创 2023-01-16 14:01:56 · 8181 阅读 · 0 评论 -
Spring Security 实现 antMatchers 配置路径的动态获取
2,实现 SecurityConfigAttributeLoader (这里也可以从数据库获取)原创 2022-12-26 15:16:55 · 2433 阅读 · 0 评论 -
微服务架构中分布式事务实现方案
SAGA模型把一个分布式事务拆分为多个本地事务,每个本地事务都有相应的执行模块和补偿模块,当事务中任意一个本地事务出错时,可以通过调用对应的补偿方法恢复之前的事务,从而达到数据的最终的一致性。数据库和业务模块的垂直拆分为我们带来了系统性能、稳定性和开发效率的提升的同时也引入了一些更复杂的问题,例如在数据一致性问题上,我们不再能够依赖数据库的本地事务,对于一系列的跨库写入操作,如何保证其原子性,是微服务架构下不得不面对的问题。最后,在设计系统时我们一定要结合业务自身的一致性需求,选择恰当的方案。原创 2022-10-21 13:42:21 · 581 阅读 · 0 评论 -
基于nacos netflix loadbalancer灰度发布策略
利用nacos元数据,给服务发起方和被调用方定义标签。相同标签的优先调用。假设 A,B两个服务,各存在4个节点,且版本都是V1。参考NacosRule类 ,更复杂的情况可以依例扩展。更新后V2的相互调用,V1的相互调用。调用者和被调用者添加元数据。原创 2022-10-19 16:03:20 · 788 阅读 · 0 评论 -
实现springcloud应用@Value配置的自动刷新
一,背景研究nacos时发现,springboot版本可使用@NacosValue实现配置的自动刷新,spring原生注解@Value则无法自动刷新springcloud版本可采用两种方式实现自动刷新:1.手动注入@NacosValue注解的处理器并使用该注解修饰相关字段或方法,这需要弄清楚底层的来龙去脉,比较麻烦,且不支持spring原生@Value注解。2.借助@RefreshScope,将bean定义为RefreshScope。此方法也略显麻烦,每个存在配置需要刷新的类都要定义成Ref原创 2022-01-05 11:14:45 · 2386 阅读 · 2 评论 -
生产环境下sentinel规则持久化方案
参考文档:https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel一,背景sentinel 官当规则管理 提供三种模式推送模式 说明 优点 缺点 原始模式 API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource) 简单,无任何依赖原创 2021-04-25 16:59:06 · 887 阅读 · 0 评论 -
Spring Cloud配置跨域访问的五种方案
在使用SpringCloud实现微服务时,经常会碰到前端页面访问多个二级域名的情况,跨域是首先要解决的问题。解决这个问题,可以从两方面入手,一种方案是在微服务各自的业务模块中实现,即在SpringBoot层实现,另外一种方案就是在Gateway层实现。首先讲一下在SpringBoot层实现的三种方案。一,在Controller上添加@CrossOrigin注解这种方式适合只有一两个rest接口需要跨域或者没有网关的情况下,这种处理方式就非常简单,适合在原来基代码基础上修改,影响比较小。原创 2020-06-24 10:23:06 · 6314 阅读 · 4 评论 -
单点登录以及实现(前后端分离和前后端不分离方式)
本文主要使用springSecurity来实现,其他实现请参照其原理自行研究。一,单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器...原创 2022-11-19 13:31:13 · 2730 阅读 · 1 评论 -
Spring Boot 之自动装配
前言在最初接触spring 的时候,还是使用xml进行装配,我记得很清楚,当时分别配置了spring-dao.xml , spring-service.xml , spring-controller.xml。然后把所有需要用到的扫包,注入bean,以及配置,全都一股脑的塞进xml中,虽然出发点很好,不用在java代码中硬编码了,但是xml的可读性并不是很好,那阵子,真是痛苦的要命。正文...原创 2019-10-14 09:54:35 · 407 阅读 · 0 评论 -
alibaba 之 Nacos
关于文档链接文档地址:https://nacos.io/zh-cn/docs/deployment.html源码地址:https://github.com/alibaba/nacos快速体验:http://console.nacos.io/nacos/index.html#/login账号:nacos 密码:nacos文档目录快速预览Nacos是什么? Nacos简介...原创 2019-08-14 15:49:20 · 704 阅读 · 2 评论 -
Spring Cloud 简介
Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态)。协调分布式环境中各个系统,为各类服务提供模板性配置。使用Spring Cloud, 开发人员可以搭建实现了这些样板的应用,并且在任何分布式环境下都能工作得非常好,小到笔记本电脑, 大到数据中...原创 2019-05-16 23:03:27 · 378 阅读 · 0 评论