lua-canal实现广告缓存-畅购学习day04supplement

1.lua解决高并发问题,nginx可直接从redis和mysql拿数据

用户访问页面时 ,要经过广告活动微服务从mysql获取照片等资源,当大量刷网页请求时,会不断请求mysql拿数据,并发量大了,mysql会挂,解决方法加个redis。

但是Java代码是放在tomcat里,tomcat最好的并发量是上千,并发量高了后,tomcat也会挂,因此如果换个可以高并发的服务器nginx(最高并发量5w),openresty(里面包含nginx和lua函数库)可以达到10w以上。nginx和openresty又称http服务器、web服务器,只能处理静态请求,不能处理动态页面,例如nginx不能直接连接mysql获取数据,一般得通过java连接数据库获取数据,但是java要部署到tomcat,tomcat并发量不高,为了解决这个问题使用lua嵌入脚本语言,于是nginx可以直接连redis,直接连mysql获取数据。解决方式:多级缓存

2.nginx限流

nginx提供两种限流的方式:

  • 一是控制速率  -漏桶算法实现控制速率限流

  • 二是控制并发连接数 -利用连接数限制 某一个用户的ip连接的数量来控制流量

3.Canal实现同步

canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。

 master-slave:master数据库将数据的变化记录在Binary log中,slave从Binary log获取变化记录,更新数据。canal模拟slave实现数据同步

 canal-server伪装成slave通过binlog与mysql进行数据同步,canal-client监听canal-server,如果canal-server数据变化则将最新的数据存储到redis中(canal-client不需要连数据库,直接通过feign调用相应微服务查就行,因为可能不能微服务连接的是不同的数据库,如果用canal-client连接数据库则可能要连好多个,没必要)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值