架构师进阶实战随堂笔记十二

作者 : 开心源码 本文共2000个字,预计阅读时间需要5分钟 发布时间: 2022-05-13 共163人阅读

场景十二:从电商架构演进看互联网高可用架构设计–数据缓存架构

分布式数据架构

缓存为王的世界,流量峰值比较显著,要考虑系统对峰值流量的承载能力,也就是系统的可伸缩性。假如按照峰值设计,那么系统在90%的情况下是白费的,如何设计良好的架构既能满足峰值需求又不白费资源,这就是伸缩性,而缓存又是伸缩性中一个重要技能。

image.png

缓存类型

CDN:静态缓存
分布式缓存:redis等
本地缓存:如JVM

把静态资源放在离客户最近的地方,客户体验最好。需要进行计算的资源需要放在离cpu最近的地方,性能最好。

image.png

分布式缓存

memcache

以内存作为缓存区,每个进程最大为2G
缓存策略:最近最少使用,每条数据必需有过期时间
各个memcache不共享、不通信
内存管理模式,不存硬盘。
性能很高。
可作为热点缓存使用。

image.png

redis

基于内存、多数据结构存储系统,可用作数据库、缓存、消息中间件。

image.png

redis复制原理

基于内存快照。
需要谨慎使用,尤其是数据量较大时,复制的性能波动是比较大的。

image.png
image.pngimage.png

几种常见的分片策略

用户端分片技术。

image.png

按照指定维度取模

image.png

一致性哈希进行分片

缺点:节点较少时,分布不均衡。
通过虚节点的机制改进均衡性,一个真实节点对应多个虚节点,虚节点均衡的放到环上。

image.pngimage.png

Redis与Memcache比较

网络IO模型

memcache多线程、非阻塞IO复用的网络模型。
Redis单线程IO复用模型。
都是基于事件解决机制的框架。
Redis的性能体现略优于Memcache。
memcache需要同时满足两个条件,有峰值流量解决不均匀、并且业务解决流程耗时较大。假如业务解决流程仅仅是单纯的io操作时,线程切换会消耗性能成本较高。

image.png
image.pngimage.png

内存管理方面

Memcache预分配内存,缺点空间白费。
Redis现场申请内存的方式来存储数据,缺点会有内存碎片 。

image.png

存储方式及其余方面

image.png

关于不同语言的用户端支持

image.png

总结

image.png

购物车使用Redis最佳实践讲解分析

购物车特点:1流量大、2峰值显著、3数据量大
Redis作为内存DB使用,无持久化
(购物车数据对数据安全性要求不高,极端情况下购物车丢一条数据相对可以接受的。性能要求比较高,持久化会影响性能。使用客户维度作为分片,无主从,全量内存。)

image.png
主备(备库只做热备)采用双写(避免主从复制问题),同步写主异步写备(最终一致性),主出问题备顶上(有损设计
(单节点断点的应对方案,添加1:1的双主结构同步双写,读的时候只读内存节点,外层节点作为备份,外层节点做持久化。内层节点断点,自动切换到外层节点)
存储结构,登录客户使用cookie+pin作为key,非登录客户使用cookie作为key

部署结构,双机房两套一样的Redis集群(双环)
就近读写、异步同步
大数据分析时肯定不要读线上的数据库、缓存等。

作业:
Body结构应该怎样去设计?list?set?

本地缓存

应用内部的缓存,不需要走网络,性能非常快。标准的分布式系统,一般与多级缓存构成,本地缓存是离应用最近的缓存,一般可以将数据缓存到硬盘活内存。
硬盘:批量
内存:随机

image.png

缓存冗余如何设计?

系统一般由多级缓存构成,数据多层冗余

image.png

举例:我的足迹

image.png

微服务架构缓存一致性如何保证?

image.png

任何一次修改保证数据一致性?最终一致性的保证

分布式事务(DTS)
主从同步
异步消息通知
定向轮询升级

image.png

屡次数据修改的一致性?分布式锁服务

image.png

常用算法

image.png

实现方式

image.png

Zookeeper实现分布式锁服务

zookeeper 树形结构,处理分布式一致性的产品。
临时顺序节点

image.png

乐观锁实现

image.png

微服务架构缓存命中率如何保证

image.png
image.png

案例一:商家中心

最佳实践-商家中心(300W/分钟调用)
场景特点决定架构设计
峰值显著
核心业务要求TP999,SLA 5ms

image.png

双机房双活 多级监控 动态降级 三级缓存

Redis集群全量缓存(20ms)+本地Redis 热点缓存(1小时有效期)(从20ms降到12ms)+应用内JVM缓存(缓存时间1分钟)(从12ms降到3ms)

image.png

部署情况

image.png

案例2

最佳实践-10亿海量商品sku存储
特点:
数据量大
实时性较高
数据比较频繁
中心访问量比较大,日均2亿,峰值平稳

双写(数据库+缓存),缓存热点数据无持久化,全文检索查询使用solr实现

image.png

练习

image.png

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 架构师进阶实战随堂笔记十二

发表回复