深入浅出SpringCloud原理及实战
文章平均质量分 91
主要集中相关的SpringCloud的技术专题和实战案例
洛神灬殇
前优酷资深工程师,一个具有高洞察力的理性自律小i人 — INTJ,
著作《深入浅出Java虚拟机—JVM原理与实战》,
10年以上开发经验,参与设计过多个大型互联网项目,定期分享技术干货和项目经验,
希望大家可以多多支持我,点赞关注一下
展开
-
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的回退降级实现方案和机制
Hystrix 可以利用信号量,而不是线程池,来控制系统负载,但信号量不允许我们设置超时和异步化,如果你对客户端库有足够的信任(延迟不会过高),并且你只需要控制系统负载,那么你可以使用信号量。Netflix API 使用线程池来隔离依赖服务,每天可以处理超过 100 亿的 Hystrix 命令,每个 API 实例有超过 40 个线程池,Netflix在设计Hystrix 时,认为相对于其带来的好处,其带来的负载的一点点升高对系统的影响是微乎其微的。,也可以从线程池的监控信息上迅速反映出来(原创 2024-01-31 19:50:09 · 1198 阅读 · 1 评论 -
【深入浅出SpringCloud源码探究】「Netflix系列之Ribbon+Fegin」微服务化的负载均衡组件源码剖析与实战开发全流程(Fegin篇)
Feign是一种具备声明式和模板化特性的高级HTTP客户端。在Spring Cloud中,Feign提供了一种简洁、直观的编码体验,使得远程服务调用就像调用本地方法一样简单。它允许开发者无需关注底层的HTTP请求细节。Feign的设计灵感来自于Retrofit、JAXRS-2.0和WebSocket等优秀的HTTP客户端框架。它以提供更加便捷的方式来编写Java的HTTP客户端为目标,通过最小的代码量和资源开销实现与HTTP API的交互。原创 2024-01-02 15:48:14 · 1231 阅读 · 1 评论 -
【深入浅出SpringCloud源码探究】「Netflix系列之Ribbon+Fegin」微服务化的负载均衡组件源码剖析与实战开发全流程(Ribbon篇)
负载均衡是通过将请求流量分发到多个服务器来实现资源分配的一种策略。它可以确保各个服务器在处理请求方面的负载均衡,并能够更高效地利用系统资源。负载均衡的主要目标是避免服务器过载,并通过在不同的服务器之间分发负载,提高系统的可伸缩性和可用性。IRule是Ribbon客户端内置负载均衡策略的接口定义,所有Ribbon内建策略或者自定义策略都需要实现这个接口。它主要的决定了服务选择的策略,即根据什么样的规则从一组服务中选取一个有效的服务实例。IRule: 用来设置负载均衡器。: 用来获取负载均衡器。原创 2023-12-16 00:00:00 · 1330 阅读 · 1 评论 -
【深入浅出SpringCloud原理及实战】「网关服务体系」微服务网关服务的Gateway组件的原理介绍分析
SpringCloud Gateway是Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。原创 2023-01-24 20:20:33 · 381 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之原生态Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(高级用法)
原生Feign只能一次解析一个接口,生成对应的请求代理对象,如果一个包里有多个调用接口就要多次解析非常麻烦。原创 2023-01-23 16:56:46 · 6758 阅读 · 0 评论 -
【SpringCloud技术专题】「Eureka源码分析」从源码层面让你认识Eureka工作流程和运作机制(下)
承接上文的对应的Eureka的上篇介绍,我们开始介绍,详见 [【SpringCloud技术专题】「Eureka源码分析」从源码层面让你认识Eureka工作流程和运作机制(上)]原创 2023-01-22 14:29:07 · 266 阅读 · 1 评论 -
【SpringCloud技术专题】「Eureka源码分析」从源码层面让你认识Eureka工作流程和运作机制(上)
了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进行讲解下eureka的源码分析,由此应运而产生的本章节的内容。1、初始化Eureka环境,Eureka上下文;2、初始化EurekaServer的缓存3、启动了一些定时任务,比如充值心跳阈值定时任务,清理失效节点定时任务;4、更新EurekaServer上电状态,更新EurekaServer端口;原创 2023-01-22 14:27:00 · 371 阅读 · 1 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Fegin」从源码层面让你认识Feign工作流程和运作机制
实现了IClient接口,该接口定义了execute()方法,AbstractLoadBalancerAwareClient.this.execute()的具体实现有很多种:我们以RibbonLoadBalancingHttpClient为例来说明,RibbonLoadBalancingHttpClient.execute()原创 2023-01-21 19:57:46 · 5867 阅读 · 1 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(下)
在项目开发中,除了考虑正常的调用之外,负载均衡和故障转移也是关注的重点,这也是feign + ribbon的优势所在,基于上面两篇文章的基础,接下来我们开展最后一篇原生态fegin结合ribbon服务进行服务远程调用且实现负载均衡机制,也帮助大家学习ribbon奠定基础。原创 2023-01-20 21:44:19 · 634 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)
Feign 有许多可以自定义的方面。// AccountDecoder() 是自己实现的一个Decoder。原创 2023-01-20 21:39:52 · 811 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Fegin」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)
Feign是SpringCloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用。由于遗留原因,某些项目中,整个系统并不是SpringCloud项目,甚至不是Spring项目,而使用者关注的重点仅仅是简化http调用代码的编写。如果采用httpclient或者okhttp这样相对较重的框架,对初学者来说编码量与学习曲线都会是一个挑战,而使用spring中RestTemplate,又没有配置化的解决方案,由此想到是否可以脱离Spring cloud,独立使用Feign。原创 2023-01-20 21:34:55 · 697 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Resilience4j入门指南」针对于限流熔断组件Resilience4j的轻量级熔断框架的入门指南
Resilience4j是一款轻量级,易于使用的容错库,其灵感来自于Netflix Hystrix,但是专为Java 8和函数式编程而设计。轻量级,因为库只使用了Vavr(前身是 Javaslang),它没有任何其他外部依赖下。相比之下,Netflix Hystrix对Archaius具有编译依赖性,Archaius具有更多的外部库依赖性,例如Guava和Apache Commons Configuration。原创 2023-01-19 22:34:37 · 6775 阅读 · 1 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的回退降级实现方案和机制
当我们执行返回的结果是一个包含多个字段的对象时,则会以Stubbed 的方式回退。Stubbed 值我们建议在实例化Command的时候就设置好一个值。以countryCodeFromGeoLookup为例,countryCodeFromGeoLookup的值,是在我们调用的时候就注册进来初始化好的。返回null,空Map,空List。原创 2023-01-19 22:27:58 · 166 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的原理和实现机制
每个熔断器默认维护10个bucket,每秒一个bucket,每个blucket记录成功,失败,超时,拒绝的状态,默认错误超过50%且10秒内超过20个请求进行中断拦截。下图显示HystrixCommand或HystrixObservableCommand如何与HystrixCircuitBreaker及其逻辑和决策流程进行交互,包括计数器在断路器中的行为。原创 2023-01-19 22:17:56 · 522 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的缓存请求执行运作原理
下例展示了在一个完整 HTTP 请求周期内,两个线程执行命令的流程:不同请求路径上针对同一个依赖服务进行的重复请求(有同一个缓存 Key),不会真实请求多次这个特性在企业级系统中非常有用,在这些系统中,开发者往往开发的只是系统功能的一部分。(注:这样,开发者彼此隔离,不太可能使用同样的方法或者策略去请求同一个依赖服务提供的资源)例如,请求一个用户的Account的逻辑如下所示,这个逻辑往往在系统不同地方被用到:数据获取具有一致性避免不必要的线程执行请求缓存是对一次请求的数据进行缓存,当有新的请求进来原创 2023-01-18 13:31:41 · 7020 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的请求合并机制实现原理分析
分布式系统的规模和复杂度不断增加,随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中,【熔断、隔离、降级、限流】是经常被使用的。而相关的技术,Hystrix本身早已算不上什么新技术,但它却是最经典的技术体系!。Hystrix以实现熔断降级的设计,从而提高了系统的可用性。Hystrix是一个在调用端上,实现断路器模式,以及隔舱模式,通过避免级联故障,提高系统容错能力,从而实现高可用设计的一个Java服务组件库。Hystrix实现了资源隔离机制。原创 2023-01-18 12:43:40 · 668 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的Command创建和执行实现原理分析
失败回退逻辑包含了通用的回应信息,这些回应从内存缓存中或者其他固定逻辑中得到,而不应有任何的网络依赖。如果一定要在失败回退逻辑中包含网络请求,必须将这些网络请求包装在另一个HystrixCommand或HystrixObservableCommand中。当使用HystrixCommand时,通过实现HystrixCommand.getFallback()返回失败回退时的回应。原创 2023-01-18 11:37:10 · 766 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的故障切换的运作流程原理分析
目前对于一些非核心操作,如增减库存后保存操作日志发送异步消息时(具体业务流程),一旦出现MQ服务异常时,会导致接口响应超时,因此可以考虑对非核心操作引入服务降级、服务隔离。原创 2023-01-17 13:04:14 · 240 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的超时机制的原理和实现分析
分布式系统的规模和复杂度不断增加,随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中,【熔断、隔离、降级、限流】是经常被使用的。而相关的技术,Hystrix本身早已算不上什么新技术,但它却是最经典的技术体系!。Hystrix以实现熔断降级的设计,从而提高了系统的可用性。Hystrix是一个在调用端上,实现断路器模式,以及隔舱模式,通过避免级联故障,提高系统容错能力,从而实现高可用设计的一个Java服务组件库。Hystrix实现了资源隔离机制。原创 2023-01-17 13:01:31 · 660 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的基本参数和实现原理介绍分析
分布式系统的规模和复杂度不断增加,随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中,【熔断、隔离、降级、限流】是经常被使用的。而相关的技术,Hystrix本身早已算不上什么新技术,但它却是最经典的技术体系!。Hystrix以实现熔断降级的设计,从而提高了系统的可用性。Hystrix是一个在调用端上,实现断路器模式,以及隔舱模式,通过避免级联故障,提高系统容错能力,从而实现高可用设计的一个Java服务组件库。Hystrix实现了资源隔离机制上一篇文章。原创 2023-01-17 12:59:51 · 6561 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「Netflix系列之Ribbon」针对于负载均衡组件Ribbon的基本参数和实现原理介绍分析
Ribbon实现客户端的负载均衡。Spring cloud Feign已经集成Ribbon,所以注解@FeignClient的类,默认实现了Ribbon的功能。,后续会讲述相关Fegin的相关技术功能。Ribbon的6个主要组件:IRule、IPing、ServerList 、ServerListFilter、ServerListUpdater。原创 2023-01-16 13:20:43 · 930 阅读 · 0 评论 -
【深入浅出Dubbo3原理及实战】「SpringCloud-Alibaba系列」基于Nacos作为注册中心进行发布SpringCloud-alibaba生态的RPC接口实战
服务发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于 服务的动态扩缩容。对于Nacos服务进行了简单的介绍和部署后,我们就可以使用其作为我们的注册中心使用,Nacos 作为 Dubbo 生态系统中重要的注册中心实现,本文将会介绍如何进行 Dubbo 对接 Nacos 注册中心的工作。通过一些简单的注解,您可以快速来注册一个服务,并使用经过双十一考验的 Nacos 组件来作为大规模分布式系统的服务注册中心。原创 2022-12-14 10:44:26 · 788 阅读 · 1 评论 -
【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析
SpringCloud-Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。原创 2022-12-13 20:06:58 · 1520 阅读 · 0 评论 -
【深入浅出SpringCloud原理及实战】「SpringCloud-Gateway系列」微服务API网关服务的Gateway全流程开发实践指南(入门篇)
Spring Cloud Gateway目标是用一个简单、有效的方式路由到API,并且提供横切的一些关注点,例如:安全、监控、系统性能和弹性等。本次实践主要在项目提供了构建在Spring生态系统之上API网关。原创 2022-11-28 13:09:21 · 679 阅读 · 0 评论