springboot和redis的整合

本文深入探讨了SpringBoot与Redis的整合,介绍了SpringCloud Ribbon作为客户端负载均衡工具的原理和负载均衡策略,如轮询、随机选择等。同时讲解了RestTemplate在消费REST服务中的作用,以及Ribbon默认使用的ZoneAvoidanceRule策略。文章还提到了Ribbon与Feign、Hystrix的关系,并给出了配置Ribbon策略的实例。
摘要由CSDN通过智能技术生成

在这里插入图片描述
这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能。

大家好,我是IT修真院深圳分院一枚正直纯洁善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务四里面的一个扩展:springboot和redis整合。

1 背景介绍
1.1 Springcloud Ribbon是什么?
Springcloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于NETflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。
1.2 如何做负载均衡?
负载均衡在系统架构中是一个非常重要,在一个分布式系统中是必不可少的。负载均衡的话分为硬件负载均衡和软件负载均衡。硬件负载均衡的话主要通过在服务器节点安装专门用于负载均衡的设备,比如F5等;
而软件负载均衡则是通过在服务器安装一些具有负载均衡功能或模块的软件来完成请求分发工作的。
其中常见的软件负载均衡有二种,一种是独立进程单元,通过负载均衡策略,将请求转发到不同的执行单元上,如NGINX,另一种是将负载均衡逻辑使用代码形式封装到服务消费者的客户端上,服务消费者客户端维护了一份服务提供者的一份信息表单,有了信息表单,同负载均衡策略将请求分摊给多个服务提供者,从而实现负载均衡。
2 知识剖析
2.1 RestTemplate是什么
1、RestTemplate是Sping Resources中一个访问第三方RESTFUL API接口的网络请求框架。

2、RestTemplate是用来消费REST服务的,所以RestTemplate的主要方法都与REST的HTTP协议的一些方法紧密项链,如POST,GET,PUT,DELETE等

3、RestTemplate的支持XML和json数据格式,默认实现了序列化,可以自动将JSON转换为实体

2.2 Ribbon支持的负载均衡策略
1、BestAvailableRule:选择最小请求数
2、ClientConfigEnabledRoundRobinRule:轮询
3、RandomRule:随机选择一个server。
4、RoundRobinRUle:轮询选择server
5、RetryRule:根据轮询方式重试
6、WeightedResponseTimeRule:根据响应时间去分配一个weight,weight越低,被选中的可能性越低
7、ZoneAvoidanceRule:根据server的zone区域和可用性来轮询选择

3.常见问题

如何配置配置相应的Ribbon负载均衡策略

4 解决方案
在springcloud client的配置文件中添加:

eureka-client: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

5.编码实战

6.扩展思考

7.参考文献
CSDN、百度百科

8 更多讨论
1、ribbon默认使用哪种负载均衡策略
ribbon默认使用的是ZoneAvoidanceRule,这种根据server的Zone区域和可用性轮询的负载均衡策略。

2、ribbon和feign的区别
ribbo知识单独的客户端负载均衡的组件。在ribbon中如果要调用rest接口,就必须借用restTemplate。
feign不仅仅是集成了ribbon,还封装了自己的一个http请求工具,除此之外,feign还封装了hystrix熔断器。

3、ribbon和hystrix熔断器如何结合
添加相应依赖:

org.springframework.cloud spring-cloud-starter-netflix-hystrix

在启动类添加注解:

@EnableDiscoveryClient@EnableEurekaClient@SpringBootApplication@EnableHystrixpublic class RibbondemoApplication { public static void main(String[] args) { SpringApplication.run(RibbondemoApplication.class, args); }}

在需要熔断的地方添加注解:

@HystrixCommand(fallbackMethod = "hiError")    public String hiService(String name){        return restTemplate.getForObject("http://eureka-client/hi?name="+name,String.class);    }     public String hiError(String name){        return "hi,"+name+",sorry,error!";    }}

腾讯视频:https://v.qq.com/x/page/u0727wr0r4d.html

PPT链接 视频链接

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖


“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,学习的路上不再迷茫。”

技能树·IT修真院:https://www.jnshu.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值