基于Docker的Redis入门与实战(1).docx
《基于Docker的Redis入门与实战(1).docx》由会员分享,可在线阅读,更多相关《基于Docker的Redis入门与实战(1).docx(5页珍藏版)》请在第一文库网上搜索。
1、通过第1行和第2行的代码,指定了本下单微服务模块工作在5555端口;通过第3行和第5行的代码,指定了本项目的对外服务名。本项目是EUreka客户端,需要向EUreka服务器注册,所以需要编写从第6行到第11行的代码。通过第13行到第15行的代码,指定了本项目用到的Redis服务器地址和端口。编写完上述代码后,可以通过如下的步骤观察运行效果,从而验证RediS缓存的效果。步骤O1I通过dockerStart命令,启动表13.4里所述的相关MySQ1和RediS容器,以确保MySQ1和Redis处于运行状态。步骤02启动EUreka服务器和风控模块的EUreka客户端,并运行本项目里的EUreka
2、C1ientFOrPay1nentAPP.java程序,启动本下单微服务模块。启动后,在浏览器里输入a1oca1host:8888,能在EUreka控制台的Instancescurrent1yregisteredwithEurekaw部分里看到注册到EUreka服务器的两个微服务EUreka客户端。在此基础上,下单模块才能通过EUreka服务器找到风控模块并调用其中的方法,具体效果如图13.9所示。图13.9在EUreka服务器上观察到的微服务模块效果图步骤03在浏览器里输入“http:/IOCaIhoSt:5555/CanPay/003”,能在页面上看到003cannotPayduetoHi
3、ghRisk.,的字样。多次输入该Ur1,除了能看到相同的文字之外,还能在JaVa控制台里看到“GetFromRedisw的字样,这说明本下单微服务模块也会用Redis缓存中风控模块的结果,以此有效降低风控模块的负载。步骤04I在浏览器里输入“http:IOCaIhOSt:5555/CanPay/001”,则能看到输出的文字是“001canPay。多次输入该ur1,同样能在JaVa控制台里看到GetFromRedis”的字样。这里在风控数据表里没有记录USer1D为OO1的数据,所以下单模块向风控模块查询此用户的风控信息时得到的始终是空数据,但依然需要在RediS里缓存这些空数据。如果不缓存,
4、那么遇到此类“在风控数据表里不存在的USerID”时,下单模块依然会一次又一次地向风控模块发请求。如果并发量很高,那么这些请求会压垮风控模块的数据库乃至整个风控模块,所以这种“在RediS里缓存空数据”的做法能在下单模块通过RediS缓存过滤掉部分请求,从而对风控模块起到一定的保护作用。13.3Redis与Ribbon整合使用在SPringCIOUd全家桶组件里,可以用RibbOn组件来实现负载均衡。具体地,在微服务体系的项目里,可以把功能相同的组件部署在多个服务器上,用Ribbon把请求分摊到这些功能相同的模块上,并且这些模块一般情况下是共享RCdiS组件或者集群,从而用缓存的方式来提升数据
5、访问性能。13.3.1Ribbon负载均衡组件与Redis的整合效果RibbOn是SPringC1OUd全家桶里负责负载均衡的组件,通过使用该组件,开发者可以在不用过多考虑细节的基础上实现负载均衡的效果。具体而言,在某包含RibbOn组件的微服务体系里,某服务(比如前文提到的风控模块)可以在多台服务器上部署,当服务使用者(比如下单模块)多次发起服务请求时,这些请求能被合理地均摊到多台服务器上。Ribbon组件支持如下两种常用的负载均衡策略。(1)轮询策略,即把请求依次派发到多个服务器上。(2)随机策略,即随机地把请求发送到多台服务器上。事实上,在13.2.5节下单微服务的EurekaC1ien
6、tForPaymentApp.java程序里,通过如下的代码定义了RestTemp1ate类型的对象,其中加入了第2行的1oadBa1anCed注解,所以会用到RibbOn组件,以负载均衡的方式去请求数据。只不过当时风控模块只部署在一台服务器上,所以看不到负载均衡的效果。O1Bean021oadBa1anced03pub1icRestTemp1ategetRestTemp1ate()04returnnewRestTemp1ateO;05)在本节里,将在本机不同的端口上运行两个风控模块,从而模拟在两台服务器上部署风控模块的效果。定此基础上,如果根据评估发现单个RediS集群足以应对系统可能会遇到
7、的并发量,就可以让这两个风控模块共享同一个RCdiS集群,具体效果如图13.10左边的子图所示。如果单个RCdiS不足以应对并发量,就可以让各风控微服务组件使用独立的RediS节点(或集群),从而降低缓存层面的压力,具体效果如图13.10右边的子图所示。PediS缓存RediS缓存1RediS缓存图13.10以两种方式整合Redis的效果图13.3.2引入多个风控组件分摊流量根据上文的设计,这里用负载均衡的方式部署两个风控微服务组件,而下单模块发出的请求会通过Ribbon组件均摊到这两个风控模块上,同时这两个风控模块将共享Redis缓存组件。在表13.5里,大家能看到该RediS整合RibbO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Docker Redis 入门 实战
![提示](https://www.001doc.com/images/bang_tan.gif)