架构师训练营第五周总结
分布式缓存架构
影响缓存命中率的主要指标:缓存键集合大小、缓存可使用内存空间、缓存对象生存时间
一致性Hash算法,虚拟节点,保障分布式缓存的伸缩性
缓存是系统性能优化的大杀器,合理使用缓存,针对热点数据进行缓存,缓存只有读操作,没有更新,通过失效删除
redis集群,把所有物理节点映射到16384个桶上,保存数据时,对key的hash值取模,找到物理节点进行存储
消息队列与异步架构
主要提升写的性能,与之对应,缓存提升读的性能
消息队列主要分为点对点模型、发布订阅模型,对于点对点模型,生产者将消息加入队列后,所有消费者只能消费一次,而发布订阅模型,生产者发布后,每个订阅的消费者都可以消费
消息队列的好处:实现异步处理,提升处理性能;更好的伸缩性;削峰填谷;失败隔离和自我修复;解耦
负载均衡
负载均衡的主要作用为提高网站的可用性
http重定向负载均衡:两次很重的http请求,性能不好,暴露应用服务器地址,不安全
DNS负载均衡:通过DNS添加多条A记录将域名映射到多个ip地址,实现负载
反向代理负载均衡:第七层负载,解决了暴露应用服务器地址的不安全问题,主要问题在于并发大了有性能问题,http请求较重,全部交由反向代理服务器处理,会对反向代理服务造成很大压力,小型网站可以使用
ip负载均衡:第三层负载,主要思路为,访问时,经过负载均衡服务器,将请求目的ip(负载均衡服务器ip)改为应用服务器ip,返回数据时,应用服务器将目的地址(用户ip)改为负载均衡服务器ip,负载均衡服务器接到数据后,在把目的地址改为用户ip返回数据,解决了通过http请求负载,http请求较重问题,但是也有返回数据时,必须经过负载均衡服务器修改ip,负载均衡服务器压力还是较大
数据链路层负载均衡:不修改ip,修改mac地址,返回时不经过负载服务器,直接返回给用户,性能高,安全性好,大型网站一般采用此方式与DNS负载结合,实现两层负载,如维基百科
负载均衡算法:轮询、加权轮询、随机、最少连接、原地址散列
集群session管理:
主要方式:
session复制:主要问题,集群服务器太多的时候,复制影响性能
session绑定:一台服务器不可用时,session丢失
利用cookie记录session:简单实用,很多网站实用
统一的session集群
分布式数据库
mysql主从复制:通过主服务器的binlog实现将dml和ddl命令,同步到从服务器的relaylog,执行命令,实现数据同步,包含一主多从方式,主要优势为:分摊负载、专机专用、便于热备、高可用
mysql主主复制:相互同步binlog,只有一个写库,主主失效恢复,恢复流程如下:
mysql复制注意事项:
主主复制的两个数据库不能并发写入
复制只是增加了数据的读并发能力,并没有增加并发能力和存储能力
更新表结构导致巨大的同步延迟,因此一般会关闭ddl的binlog自动同步,而采用手动同步数据定义语句
其他
评论