第五周学习总结
本周学习了分布式缓存架构
cache是提高数据访问者访问数据源数据速度的一种手段,是一种高速存储。
缓存无处不在,cpu、操作系统、数据库、jvm编译、cdn、代理和反向代理、前端、应用程序、分布式对象等缓存。
缓存一般通过hash表进行存储。
影响缓存命中率的因素:缓存键集大小、缓存可使用的内存空间、缓存对象的生存时间。提高命中率:减少缓存键、加大缓存存储空间增加缓存对象、适当加长缓存对象生命周期。
代理缓存,做本地代理缓存,如公司网络服务器做缓存。
反向代理缓存,http反向代理拦截请求时直接返回缓存数据而不通过服务器返回数据。根据应用的分层架构还可以做前端反向代理缓存、后端反向代理缓存。
CDN,由运营商提供,经常做一些视频类型的缓存。
通读缓存,在缓存未命中时去数据源获取数据并将数据存入缓存中。
旁路缓存,对数据源加工生成缓存对象,方便调用。
本地对象缓存,应用程序内存、共享内存、同一服务器的内存。
远程分布式对象缓存,专门的缓存服务器。
Memcache分布式对象缓存,集群设备间相互无感知,通过路由算法获取对应服务器缓存。
缓存提高访问速度的原因,来自内存比磁盘读取效率高、数据终态无需计算直接访问、分担数据库磁盘网络压力使他们有更好的响应速度。
合理使用缓存,频繁修改的数据、无热点数据不适合使用缓存。适合有一定时间容忍的场景,达到最终一致性即可。缓存利用不当会造成缓存雪崩,缓存需要预热加载,当缓存不合理时,会造成缓存穿透,甚至引发缓存雪崩。
消息队列使同步变异步,提高系统工作效率和伸缩性。其模型有点对点形式、发布订阅形式。能过削峰填谷,业务及功能解耦。
负载均衡:http重定向负载均衡、DNS负载均衡、反向代理负载均衡、ip负载均衡、数据链路层负载均衡等。其中大型互联网公司多采用数据链路层负载均衡,原因是相应速度快,浪费在请求分发上的时间少。
负载均衡算法:轮询、加权轮询、随机、最少连接、源地址散列。
session管理,多采用session服务器做集中管理。
分布式数据库:主从复制、一主多从、主主复制。用主主复制当工作的主数据库宕机时可以快速切换到另一台主机,从而实现高可用。
评论