第五周总结
本周四讲解的是分布式缓存的知识,周六讲解的是消息队列、异步架构、负载均衡的知识。
分布式缓存
分布式缓存中提到缓存无处不在,包括:CPU缓存,操作系统缓存,数据库缓存,JVM编译缓存,
CDN缓存,代理与反向代理缓存,前端缓存,应用程序缓存,分布式对象缓存。
同时还提到缓存可用的关键指标:缓存命中率
已经缓存命中率的主要指标:缓存键集合大小,缓存可使用内存空间,缓存对象生存时间。
消息队列
缓存是解决高访问的问题,而消息队列是为了解决大量数据同时写入的问题。
相对于同步调用,异步调用的方法优势很大很大。
优势包括:更好的伸缩,削峰填谷,失败隔离,自我修复,解耦
消息队列的产品,如下:
负载均衡
负载均衡有很多种,包括
HTTP重定向负载均衡:无状态,2次http请求,影响性能,IP地址暴露;这些缺点太明显,就被弃用了。
DNS负载均衡:IP会缓存在本地
域名解析出来的IP地址,是负载均衡服务器的IP地址,为了防止系统升级时,不能直接访问应用服务器,否则升级时,会导致旧的访问,可以使用两级负载均衡。
反向代理负载均衡: 因为反向代理服务器承载的缓存比较多,应对的规模是有限的,所有在小型网站中,应用的比较多。
IP负载均衡:运行过程中,源地址,目标地址的IP地址的会被修改2次,已达到目的。
但是由于网卡的出口带宽所限,不被广泛使用。
数据链路层负载均衡:大型互联网的方案
针对不同的内部机器,可以使用mac地址进行区分。
一般的小网站,使用反向代理负载均衡就够了,针对大型的网站,可以使用数据链路层负载均衡,如果再大的话,可以使用DNS负载均衡+数据链路层负载均衡,两层负载架构。
分布式数据
这里面提到了Mysql数据库的主从复制,其核心点在于主数据库的Binlog和从数据库的Relaylog,
由于DML的数据结构同步,比较耗时,一般只开放DML层面的数据库同步。
为了提高系统的高可用性,我们一般会使用主主复制的架构,对主数据库进行冗余架构。
当然,正常情况下,一般的架构都是包含主主复制和主从复制的,如下图。
对于DML层面的更新,比如新加一个字段、删除字段,
删除字段:先关闭应用,再加到库里。
加字段时,先加主库里(手动同步到从库),再更新应用
还有就是,数据库的主主选择,主从选择的设置,以及单个数据库达到负荷的情况时,会进行数据分片,会在下节课中讲解,期待!!!
评论