推广

(13)<架构解决方案>缓存

iseeyu2年前 (2024-02-22)推广142

二、堆外内存off-heap

避免热点数据,占用系统内存

1、优点:1)减少gc次数  降低暂停时间    2)扩展和使用更多内存    3)省去物理内存和heap间复制

2、宝jdk实现:生命周期长对象从heap内移外,gc不能管理。ps:逃逸分析技术成熟,也可在栈上分配

3、如何使用物理内存:可限制容量,超出oom

4、何时释放

DirectByteBuffer对象被gc时,堆外内存一起释放

三、redis

本地缓存无法水瓶扩容,cluster容量可无限延伸

1、基于jedis客户端操作:

2、cluster的sharding

1)hash算法:扩容,历史数据要全部迁移

2)一致性hash算法:无需全部迁移,但node少时,会数据倾斜,在节点ip/主机名后增加编号,让其均匀分布

3)分槽:介于两者之间,slot固定,永远被路由到同一个

3、基于jedisCluster的读写操作

可指定单个节点

4、基于lettuce客户端的读写分离

jedis不支持集群的读写分离,lettuce可同步/异步,底层基于nio模型的netty

优点:水平扩容,无限延伸,不用手动调整连接吃maxTotal,避免本地缓存穿透

四、多级缓存

本地:共享一个进程内的heap,存热点数据

cdn:存商品图片、视频

1.不一致

因时差造成,允许脏读,扣库存时显示售完

2.本地缓存更新策略(主/被动)

1)被动更新:过期则回源,保证单线程,避免失效大量请求,穿透引起雪崩

guava

2)主动更新:修改后,异步写到队列,更新缓存

3、缓存穿透思考

大促前从运营那熟悉热点key,放在配置中心内

五、扣库存问题

1、行锁 

表中version,流量高峰引起大量线程竞争行锁,影响db tps,rt上升,引起雪崩

2、redis乐观锁

(1)基本命令

    1)watch:监视key(可多个),事务发生前key改变,事务则失败

    2)multi:将事务内多条命令,按先后顺序放进队列

    3)exec:最后原子性提交执行

(2)watch内部实现原理

客户端如何感知:每个db都是redis.h/redis.db结构表示,起内部存了watch_keys(被监视的目标key)

multi.c/touchWatchKey函数对watch_keys字典检查,有修改的key标记为redis_dirty_cas,后续提交事务发生中断

(3)jedis乐观锁

(4)缺省路由实现

缺点:并发越高,watch碰撞概率越大,解决:读写合成一条命令,嵌入式lua脚本

3、redis+lua (性能最好)

redis2.6之后,内置lua解释器,但eval / evalsha命令执行时,redis把它当成单条在执行

(1)lua脚本

(2)eval / evalsha 嵌入redis执行

    1)eval:重复向redis传相同lua脚本,网络开销大

    2)evalsha:从redis获取已缓存好的脚本,节省。但用evalsha前,先用script load命令加载lua到缓存中,等redis会等sha1校验码,后续用时,传校验码即可

用evalsha执行lua脚本

4、库存变化后如何同步给db

synchronized:竞争激烈用更好

cas:https://www.jianshu.com/p/6d1f3b2a3ac0    会因无限重试,占用过多cpu

5、AliSQL

对热点数据做hash,收集所有库存一次性提交(设置阈值)

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56275.html

相关文章

淘宝主图的边框要怎么弄(淘宝主图加边框好不好)

淘宝主图的边框要怎么弄(淘宝主图加边框好不好)

用户可以直接在搜索栏中打上主图边框,然后在下方点击电商或者选择相应的行业,用户也可以点击右下角的全部颜色和全部风格进行选择。...

餐饮业如何在抖音做营销策划?

实体餐饮业如何在抖音做,做,这是一个非常重要的问题。在方面,很多人对抖音的理解和对新媒体的理解都有偏差。他们不能计划好内容来利用这种资源。然而,抖音是餐饮业中最好的利用者,也是最大的流量群体。你可以在里面得到一个大蛋糕。从自己的定位出发,传统产业进入新媒体有一个常见的行业问...

外部链接页面优化。

外部链接页面优化。

通常我们可以简单的理解外部链接作为个网站和B网站交换页面链接,渠道链接和其他形式,通过交换好的网站来提高他们的网站的重量。那么什么样的外部链可以减去我们网站的重量呢?对于高质量的外部链接,笔者简单总结了以下几个因素。 (1)相关性。假设站点A是个健康站点,站点B是个健康站点,那么这两个站点之间的链...

新闻稿软文撰写与营销策划的关系

新闻稿软文撰写与营销策划的关系

近年来,由于新闻稿在企业宣传和中的作用越来越大,它们逐渐成为大多数公司的主要营销模式。随着互联网的发展,新闻传播的方式主要转变为互联网传播,而软文营销是必不可少的一部分。如果公司想做好新闻营销工作,就必须抓住当前热门新闻来为企业营销和宣传创造动力,以获得大量媒体曝光率和知名...

用户运营实操经验:标签体系化的建立及应用。

用户运营实操经验:标签体系化的建立及应用。

讲到用户运营,我觉得有两项基本工作是可以拿出来讲讲的,一个是用户触达体系,一个是用户成长激励体系。 <!-- 作者:猫力 来源:投稿 本文为作者授权鸟哥笔记发布,转载请联系作者并注明出处 --> 前言:讲到用户运营,我觉得有两项基本工作是可以拿出来讲讲的,一个是...

百度搜索引擎工作原理。

百度搜索引擎工作原理。

Spider抓取系统的基本框架 互联网信息爆发式增长,如何有效的获取并利用这些信息是搜索引擎工作中的首要环节。数据抓取系统作为整个搜索系统中的上游,主要负责互联网信息的搜集、保存、更新环节,它像蜘蛛一样在网络间爬来爬去,因此通常会被叫做“spider”。例如我们常用的几家通用搜索引擎蜘蛛被称为:B...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片