架构师训练营 -week5- 学习总结
缓存Cache与缓冲Buffer的分别:
缓存是介于数据访问者和数据源之间的一种高速存储,主要用于加快读取的速度。
缓冲也是一种高速存储,但是为了解决cpu与磁盘/网络读写速度不一致所设的。
缓存命中率:
指缓存能多少次重用同一个缓存响应业务请求,例:查询一个缓存,十次查询九次得到正确结构,则命中率为90%。
影响缓存命中率的主要指标:
缓存键集合:越小,命中率越高
缓存可用内存空间:能用的内存空间越大,能缓存的对象越多,命中率越高
缓存对象生存时间:生存时间越长,命中率越高
缓存的应用:
代理缓存、反向代理缓存、多层反向代理缓存、内容分发网络(cdn)、浏览器对象缓存、本地对象缓存、分布式对象缓存。
通读缓存:
给客户端返回缓存资源,并在请求未命中缓存时获取实际数据。代理缓存、反向代理缓存、多层反向代理缓存、cdn等都是通读缓存。
旁路缓存:
对象缓存时一种旁路缓存,旁路缓存通常是一个独立的键值对存储。浏览器对象缓存、本地对象缓存、分布式对象缓存都是旁路缓存。
缓存提升性能的原因:
缓存通常来自内存,比磁盘的数据有更快的访问速度。
缓存存储数据的最终结果形态,不需要中间计算,减少cpu资源的消耗。
缓存降低数据库、磁盘、网络的负载压力,使这些I/O设备获得更好的响应特性。
LRU算法:
Least Recently Used,每访问一个节点则将其提最近访问的热点数据。在缓存中,一段时间后,将一定比例的尾部数据清除,则剩下的就是热点数据。这个算法的缺点:1次访问与10000次访问是等效的。
一致性Hash算法:
为了解决增加或减少存储节点时,导致的大量数据失效的情况。
缓存雪崩:
在短时间内,大部分的缓存失效,导致数据库压力倍数增加而宕机,进而导致整个网站不可用。发生这种故障时,无法简单的重启缓存服务器、数据库服务器来恢复网站访问。
缓存穿透:
应用代码高并发请求某个不存在的数据,致使请求落到数据库上,致使数据库压力飙升乃至宕机。解决方案:可以将不存在的数据也缓存起来,设个短的失效时间(value设为null)。
注意:
频繁修改的数据,没必要用缓存。
没有热点的访问,没必要用缓存。
无法忍受短暂的数据不一致,不要用缓存。
Redis:
支持复杂的数据结构、支持多路复用异步I/O高性能、支持主从复制高可用(NoSQL)、原生集群与share nothing集群模式。
Redis 集群:
Redis集群预分好16384个桶(slot),当需要在集群中放置一个kv时,根据CRC16(key) mode 16384的值,决定将key放在哪个桶(slot)中。
集群把所有的物理节点映射到桶(slot)上,集群负责维护slot与服务器之间的映射关系。
客户端与Redis任何一个可用节点直连。
集群中的节点彼此互联。
消息队列与异步架构:
好处:
异步处理流程代码,提升处理性能、有更好的伸缩性、削峰填谷、失败隔离和自我修复、解耦。
主流MQ产品:
RabbitMQ(Erlang)、ActiveMQ(Java)、RocketMQ(Java)、Kafka(Scala)
负载均衡架构:
HTTP重定向负载均衡:
没有隔离应用服务器、暴露了公网ip、安全性低,用户请求需经过两次http请求、性能差。不推荐使用。
DNS负载均衡:
没有隔离应用服务器、暴露了公网ip,其中一台服务器宕机时,会影响用户请求。推荐使用两级负载均衡,dns负载均衡+负载均衡。
反向代理负载均衡:
常用于小型网站,由于转发的请求是http包,整个通讯过程比较长,会拖垮反向代理服务器。
IP负载均衡:
转发的是tcp包(小包),对性能影响较反向代理均衡要小,但响应的出口带宽会成为这个架构的瓶颈。
数据链路层负载均衡:
大型互联网站常用。
分布式数据库:
主从复制:
需要特别注意,增加字段时,最好在应用程序发布之前,分别在主、从服务器上增加字段。
删除字段时,先把应用程序中所有访问被删字段的sql都改一遍,确保不在访问时,再删数据库服务器上的字段。
主主复制:
同一时间内,只对一个主服务器中进行写操作。当其中一台宕机时,能快速切换到另一台主服务器,对另一台进行写操作。
宕机的那台主服务器开机后,则复制另一台主服务器的数据作为备份。
学习总结
这一周学的内容,涉及的内容很广,主要是缓存均衡架构、网路均衡架构与分布式数据库的运行原理。老师强调架构师要了解的是技术本身核心的内容与原理,了解技术最简单的一面,对不同的技术进行串联,组成一个符合期望的系统架构。
架构师就像是个一个积木搭建师,手边有很多的积木,但需要了解不同的积木特性,将积木按照自己的想法搭建起来,做成一个房子、一个堡垒。
版权声明: 本文为 InfoQ 作者【晓-Michelle】的原创文章。
原文链接:【http://xie.infoq.cn/article/0d2132392ce1d1d1ebe0ccebb】。未经作者许可,禁止转载。
评论