架构师训练营第五周学习总结

用户头像
邓昀垚
关注
发布于: 2020 年 10 月 20 日

分布式缓存

缓存有哪些?

CPU缓存、OS缓存、数据库缓存、JVM编译缓存、CDN缓存、代理与反向代理缓存、前端缓存、应用程序缓存、分布式对象缓存

缓存的数据结构

Hash表

缓存的两种访问模式

通读缓存(Read-through)、旁路缓存(Cache-aside)

缓存访问的路由算法

Hash算法、一致性Hash算法、基于虚拟节点的一致性Hash算法

缓存使用中的问题

  • 读写比高于2:1缓存才有意义

  • 解决没有热点的访问:LRU算法

  • 数据一致性问题

  • 缓存雪崩

  • 缓存预热

  • 缓存穿透:缓存Null值,布隆过滤器

消息队列

同步调用VS异步调用

异步调用不阻塞应用线程

异步调用架构

  • 消息队列:生产者、消息队列、消费者

  • 两种模型:P2P模型、发布订阅模型

消息队列的好处

  • 提升写性能

  • 更好的伸缩性

  • 削峰填谷

  • 失效隔离、自我修复

  • 解耦

事件驱动架构(EDA)

更少的耦合表面积

主流的MQ产品

RabbitMQ、ActiveMQ、RocketMQ、Kafka

负载均衡

将用户的请求均匀分摊到每台应用服务器

负载均衡方法

HTTP重定向

缺点:两次请求(性能低)、内网地址暴露(安全性差)

DNS负载均衡

DNS配置多个A记录

反向代理负载均衡

基于应用层协议:通常适合小规模集群(十几台)

IP负载均衡

基于IP层协议:直接修改数据包的源地址和目标地址

链路层负载均衡

基于链路层协议:虚拟IP、修改MAC地址、数据返回不再经过负载均衡服务器(三角模式),性能大大提高

负载均衡算法

轮询、加权轮询、随机、加权随机、最少连接、IP散列

Session管理

  • Session复制:Web服务器同步复制Session、效率低下

  • Session粘滞(Session Sticky):固定某一台Web服务器、无法满足高可用需求

  • 客户端Cookie:每次传递Cookie,Cookie大小有限,某些情况下Cookie禁止

  • Session服务器:Web服务器无状态,实际最常用(推荐)

总结

  • 屡试不爽的优化方法:对于读的优化采用缓存、对于写的优化采用消息队列(读缓存、写队列)

  • 负载均衡可基于应用层、IP层和链路层,越往下效率越高(小规模集群采用反向代理即可,大规模互联网应用通常采用链路层负载均衡)

用户头像

邓昀垚

关注

还未添加个人签名 2018.06.04 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第五周学习总结