Spring Cloud
文章平均质量分 70
Spring Cloud
码上得天下
这个作者很懒,什么都没留下…
展开
-
SpringCloud + Nacos配置文件加载顺序和优先级详解
在微服务架构中,合理地管理和理解配置文件的加载顺序与优先级对于确保应用的稳定性和灵活性至关重要。特别是在使用 Spring Cloud Alibaba Nacos 作为配置中心的场景下,这一点显得尤为重要。本文将基于一个具体的 bootstrap.yml 配置示例,深入探讨这些概念,并介绍如何通过 Nacos 配置实现本地配置的优先级设置。转载 2024-04-22 15:58:48 · 1524 阅读 · 0 评论 -
SpringCloud 中的父子容器
中,提到了 SpringBoot 在启动时,会触发相关一系列监听器,监听器各司其职,做一些初始化预处理操作。SpringBoot创建的 Spring容器是最核心的容器,也是使用最多的Spring容器。创建的对象会有3种类型,Servlet,Reactive,和默认。如果引入了 FeignClient,则会实例化一个容器工厂,以服务名称为key,value为Feign 和 Ribbon配置类容器,配置隔离,父容器则都为。对象,再次执行run方法,所以启动流程会执行两遍,只是读取的配置文件和配置类不同。转载 2024-04-22 15:31:11 · 161 阅读 · 0 评论 -
揭秘 Nacos 的 AP 架构 「Distro 一致性协议」
上篇我们讲解了 Nacos 的架构原理:一条注册请求会经历什么。Nacos 架构原理①:一条注册请求会经历什么?这次我们要进入 Nacos 的一致性底层原理了,还是先来一张架构图,让大家对 Nacos 的架构有个整体的印象,本篇会主要讲解一致性模块中的Distro协议。上篇留了两个知识点:① 服务实例注册到 Nacos 节点后,通过 UDP 方式推送到所有服务实例。让其他服务实例感知到服务列表的变化。转载 2023-08-01 13:10:38 · 337 阅读 · 0 评论 -
Nacos 架构原理①:一条注册请求会经历什么?
本文通过发起一条注册请求,讲解了 Nacos 客户端如何随机选择节点、Nacos Server 如何将请求进行路由转发、Nacos Server 如何存储注册实例。另外本文用到了集群环境,关于如何搭建和 debug 集群环境,感兴趣的可以留言,后续补上这部分的讲解。一条注册请求的核心流程:Nacos 架构原理①:一条注册请求会经历什么?转载 2023-08-01 12:47:59 · 149 阅读 · 0 评论 -
一文带你理解@RefreshScope注解实现动态刷新原理
RefeshScope这个注解想必大家都用过,在微服务配置中心的场景下经常出现,他可以用来刷新Bean中的属性配置,那大家对他的实现原理了解吗?它为什么可以做到动态刷新呢?上面是这个RefreshScope实现动态刷新大致的原理,其中里面还有很多细节,可能需要留给大家自己debug去深入理解。版权声明:本文为CSDN博主「肥肥技术宅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。转载 2023-07-25 19:35:35 · 829 阅读 · 0 评论 -
nacos配置文件优先级
版权声明:本文为CSDN博主「Lemon_MY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/Lemon_MY/article/details/127335271。优先级:userservice-dev.yml(当前环境配置profiles) > userservice.yml(上的)> application.yml(本地的)转载 2023-07-25 19:10:24 · 915 阅读 · 0 评论 -
spring-cloud-alibaba——nacos-server搭建
组件版本关系。原创 2023-07-25 17:08:22 · 432 阅读 · 0 评论 -
阿里分布式事务框架Seata原理解析
Seata框架是一个业务层的XA(两阶段提交)解决方案。在理解Seata分布式事务机制前,我们先回顾一下数据库层面的XA方案。转载 2023-06-07 19:18:04 · 740 阅读 · 0 评论 -
Hystrix 原理分析
实现流程为:当断路器的开关为关闭时(对应图中的绿色),每次请求进来都是成功的,当后端服务出现问题,请求出现的错误数达到一定的阈值,则会触发断路器为打开状态(对应图中的红色),在断路器为打开状态时,进来的所有请求都会被拒绝,当然也不是一直会拒绝请求,而是弹性的,过了特定的时间后,断路器会进入半打开状态(对应图中的黄色),这是会让一部分请求通过进行尝试,如果尝试还是有问题,则继续进入打开状态,如果尝试没有问题了,则会进入关闭状态。没有过睡眠周期则返回false,拒绝通过该次请求,过了睡眠周期则会尝试放行。转载 2023-06-07 18:15:10 · 942 阅读 · 0 评论 -
微服务注册中心产品ZooKeeper、Eureka、Consul、Nacos对比
服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。转载 2023-06-07 11:38:18 · 2243 阅读 · 0 评论 -
SpringCloud - Eureka Server的数据同步过程?
step 1 - 启动时Eureka Server也是一个Client,在启动时,通过请求其中一个节点(Server),将自身注册到Server上,并获取注册服务信息;Step 2 - 信息变更时每当Eureka Server信息变更后(client发起注册,续约,注销请求时),就将信息通知给其他Server,来保持数据同步;Step 3 - 解决Eureka Server之间的数据同步死循环如果自己的信息变更是另一个Eureka Server同步过来的,这是再同步回去的话就出现数据转载 2022-01-07 19:18:17 · 844 阅读 · 0 评论 -
Spring Cloud 使用 GateWay
GateWay简介Spring Cloud GateWay是Spring Cloud的一个全新项目,目标是取代Netflix Zuul,它基于Spring5.0+SpringBoot2.0+WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能高于Zuul,官方测试,GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式。Spring Cloud GateWay不仅提供统⼀的路由⽅式(反向代理)并且基于 Fil转载 2022-01-06 11:46:49 · 719 阅读 · 0 评论 -
Ribbon设计原理
Ribbon 是netflix 公司开源的基于客户端的负载均衡组件,是Spring Cloud大家庭中非常重要的一个模块;Ribbon应该也是整个大家庭中相对而言比较复杂的模块,直接影响到服务调度的质量和性能。全面掌握Ribbon可以帮助我们了解在分布式微服务集群工作模式下,服务调度应该考虑到的每个环节。本文将详细地剖析Ribbon的设计原理,帮助大家对Spring Cloud 有一个更好的认知。一. Spring集成下的Ribbon工作结构先贴一张总览图,说明一下Spring如何集成Ribb.转载 2021-12-28 14:51:14 · 1181 阅读 · 0 评论 -
Feign设计原理
什么是Feign?Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。Feign被广泛应用在Spring Cloud 的解决方案中,是学习基于Spring Cloud 微服务架构不可或缺的重要组件。开源项目地址:https://转载 2021-12-28 11:40:05 · 591 阅读 · 1 评论 -
@LoadBalanced 注解原理
使用 RestTemplate 与整合 RibbonSpring 提供了一种简单便捷的模板类来进行 API 的调用,那就是 RestTemplate。1. 使用 RestTemplate在前面介绍 Eureka 时,我们已经使用过 RestTemplate 了,本节会更加详细地跟大家讲解 RestTemplate 的具体使用方法。首先我们来看看 GET 请求的使用方式:创建一个新的项目 spring-rest-template,配置好 RestTemplate:@Configuratio转载 2021-11-23 17:23:54 · 9703 阅读 · 2 评论 -
nacos注册中心搭建
下载地址:https://github.com/alibaba/nacos/releases原创 2021-08-17 17:39:26 · 125 阅读 · 0 评论 -
CommandLineRunner和ApplicationRunner接口
两者功能相同,都可以在程序启动之前执行任何任务,我一般用来打印启动的日志:@Slf4j@EnableRedisHttpSession( maxInactiveIntervalInSeconds = 604800, flushMode = FlushMode.ON_SAVE, redisNamespace = "spring:session:rebate.xxx.user")@MapperScan("rebate.xxx.user.infrastruc原创 2021-05-10 14:50:54 · 88 阅读 · 0 评论 -
Spring Boot优雅地处理404异常
背景在使用SpringBoot的过程中,你肯定遇到过404错误。比如下面的代码:@RestController@RequestMapping(value = "/hello")public class HelloWorldController { @RequestMapping("/test") public Object getObject1(HttpServletRequest request){ Response response = new Respon转载 2021-05-06 17:38:03 · 2694 阅读 · 0 评论 -
Hibernate Validator进行优雅的数据验证
JSR-303 规范在程序进行数据处理之前,对数据进行准确性校验是我们必须要考虑的事情。尽早发现数据错误,不仅可以防止错误向核心业务逻辑蔓延,而且这种错误非常明显,容易发现解决。JSR303 规范(Bean Validation 规范)为 JavaBean 验证定义了相应的元数据模型和 API。在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode , 就可以确保数据模型(JavaBean)的正确性。co转载 2021-05-06 16:05:34 · 1522 阅读 · 0 评论 -
CorsWebFilter解决跨域,OncePerRequestFilter实现登录校验
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.reactive.CorsWebFilter;import org.springframework..原创 2021-04-29 11:23:47 · 2099 阅读 · 0 评论 -
Spring相关教程
Spring Boot 2.x基础教程Spring Cloud 从入门到精通原创 2021-04-27 16:22:29 · 74 阅读 · 0 评论 -
SpringCloud不同context-path下的会话共享
/rebateuser/ 为微服务的server.servlet.context-path,cookie的保存路径,其他微服务无法拿到这个cookie;解决方案,1,将/rebateuser/写在每一个Controller的url上,2参考:springboot 不同context-path下的会话共享...原创 2021-04-22 17:54:15 · 288 阅读 · 0 评论 -
zipkin集成后项目无法启动踩坑实践
zipkin集成后项目无法启动踩坑实践转载 2021-04-17 16:59:41 · 391 阅读 · 0 评论 -
spring cloud:config-server中@RefreshScope的“陷阱“
spring cloud:config-server中@RefreshScope的"陷阱"转载 2021-04-15 09:20:18 · 481 阅读 · 0 评论 -
监控Nacos配置变化
package com.mlj.pxb.console.service.config;import com.purgeteam.dynamic.config.starter.event.ActionConfigEvent;import lombok.extern.slf4j.Slf4j;import org.springframework.context.ApplicationListener;import org.springframework.stereotype.Component;i.原创 2021-03-23 18:14:32 · 3181 阅读 · 0 评论 -
nacos多服务全局配置
bootstrap-dev.yml配置如下:spring: profiles: active: dev cloud: #服务注册和发现 nacos: discovery: server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: xx-service-${spring.profiles.active} config:原创 2021-02-24 14:35:23 · 1959 阅读 · 0 评论 -
sleuth+zipkin搭建分布式日志链路
一,UI管理界面网关下载:https://zipkin.io/pages/quickstart.html下载最新版本,cmd窗口启动,比如我的最新版本是zipkin-server-2.23.2-exec.jar;java -jar zipkin-server-2.23.2-exec.jar;界面如下:二,搭建服务:主要配置文件如下:application-dev.yml:server: port: 8889spring: application: na原创 2021-02-08 15:40:46 · 503 阅读 · 0 评论 -
nacos配置中心多环境配置
如果项目里只有一个bootstrap.yml文件,配置中心就会默认只读取bootstrap.yml,不会加载对应环境的application的配置中心的配置(注意这里说的是配置中心的启动相关配置,如group,server-addr);解决方法如下文,各环境建立对应的bootstrap配置,将对应配置中心启动相关配置其中即可,application相关配置就不需要配置了,配置了也没什么意义:如下参考:nacos配置中心多环境配置;...转载 2021-01-27 11:31:51 · 876 阅读 · 0 评论 -
@RefreshScope 导致定时任务注解@Scheduled失效
刷新前查看定时任务信息;http://localhost:8111/actuator/scheduledtasks刷新:http://localhost:8111/actuator/refresh;刷新后定时任务信息被清空??????????原创 2021-01-23 17:09:54 · 1116 阅读 · 4 评论 -
Eureka 缓存机制
引言Eureka是Netflix开源的、用于实现服务注册和发现的服务。Spring Cloud Eureka基于Eureka进行二次封装,增加了更人性化的UI,使用更为方便。但是由于Eureka本身存在较多缓存,服务状态更新滞后,最常见的状况是:服务下线后状态没有及时更新,服务消费者调用到已下线的服务导致请求失败。本文基于Spring Cloud Eureka 1.4.4.RELEASE,在默认region和zone的前提下,介绍Eureka的缓存机制。一、AP特性从CAP理论看,Eureka是转载 2020-08-19 22:02:46 · 206 阅读 · 0 评论