架构师训练营 1 期 - 第五周总结(vaik)
本周概要
本周主要讲述了分布式缓存的基本概念,基本原理,缓存的种类和应用场景,分布式缓存的一致性hash算法原理;然后是通过消息队列来实现异步架构,并讲述了异步架构带来的好处;最后部分讲解的是负载均衡架构,以及各种负载均衡实现原理和应用场景,以及相关的算法。
我的理解:
通过本周的学习,我对当今互联网架构师所需要掌握的基础方法,原理、线路有了更加清晰的认识,也渐渐深入到更加基础的技术原理和实现,以及针对解决的问题,不过我觉得要想成为一个优秀的架构师,光听老师的课程远远不够,老师的课程只是指明了一条道路和方向,而具体的路则需要自己脚踏实地的一步一步走完,过程中遇到的种坑和问题都需要自己亲自去解决,有了老师的指引,我想我能更快更好的走下去。
分布式缓存架构
基本概念和原理、衡量指标
什么是缓存
介于数据访问者与数据源之间的一种高速存储,用于加快读取的速度
缓存和缓冲的区别
缓存主要是从高速存取设备中读取
缓冲主要是用于高速设备向低速设备中读和写
我的理解:
缓存最核心的作用就是提升性能,减少网络请求步骤,最近节点返回数据,从而节省流量,降低成本。
缓存数据存取(Hash表)
我的思考:
利用Hash读取的算法复杂度只O(1),从而根据Key快速找到物理地定位到Value,这是软件算法层面的实现。
而硬件层面上,直接把低速的硬盘中的数据复制到高速的内存中直接返回,从而几十上百倍提升读取速度
缓存的关键指标
缓存命中率
缓存键集合大小:缓存键数量越小,缓存的效率越高
缓存可用内存空间:物理上能缓存的对象越多,命中率就越高
缓存对象生存时间:对象生存时间越长,对象被重用的可能性越高
我的思考:如何提升缓存命中率,需要从业务角度去仔细分析数据的变化和读取频率。一种是频繁读,写得小的数据作为热点数据,命中率自然要高;另一种是读写取频率少的数据刚作为冷数据;最后一种是写多读少的数据尽量不放缓存。
各种介质数据访问延迟
缓存的各种形式和应用
代理缓存
反向代理缓存
多层反向代理缓存
CDN缓存
通读缓存
旁路缓存
浏览器对象缓存
本地对象缓存
本地对象缓存构建分布式集群
远程分布式对象缓存
Memcached分布式缓存
Share-Nothing模型
由客户端实现路由算法去匹配对应的缓存服务器
这种本地路由算法存在增加节点后,缓存不均匀的问题
我的理解:以上各种缓存的应用场景是不一样的,实现的机制和原理也有差异,充分理解场景和原理差异是掌握好各种缓存应用的关键,这需要自己花更多的时间和实践中去学习掌握。
分布式缓存的一致性Hash算法
我的实现思路:
1 一个SortedMap保存所有的虚拟结点,以虚拟结点的hashcode为Key Value直接就服务器IP
2 三个核心方法
添加服务器
删除服务器
根据Key查找服务IP
3 虚拟结点的Hashcode算法
缓存的常见问题和解决方法
数据不一致与脏读
缓存雪崩
缓存穿透
缓存预热
Redis VS Memecached
Redis 支持复杂的数据结构
Redis 支持多路复用异步 I/O 高性能
Redis 支持主从复制高可用
Redis 原生集群与 share nothing 集群模式
redis集群
消息队列
消息队列构建异步调用架构
消息队列的好处
实现异步处理,提升处理性能
更好的伸缩性
削峰填谷
失败隔离和自我修复
解耦
事件驱动架构 EDA
负载均衡架构
HTTP 重定向负载均衡
DNS 负载均衡
反向代理负载均衡
IP 负载均衡
数据链路层负载均衡
评论