架构师训练营 - 第 5 周总结

发布于: 2020 年 07 月 09 日

缓存:

定义:介于数据访问者和数据源之间的一种高速存储。

应用场景:当数据需要读取时,用于加快读取速度。

典型应用场景:CPU缓存、操作系统缓存、数据库缓存、JVM编译缓存、CDN缓存、代理与反向代理缓存、前端缓存、应用程序缓存、分布式对象缓存。

数据存储模式:Hash表

关键指标:缓存命中率(影响点:缓存键集合大小、缓存可用内存空间、缓存对象生存时间)

两种分类:

  1. 通读缓存(read-through):给客户端返回缓存资源,并在请求未命中缓存时获取实际数据。如代理缓存、反向代理缓存、CDN缓存。

  2. 旁路缓存:应用代码通常会询问对象缓存需要的对象是否存在,如果存在,则会获取并使用缓存的对象。如果不存在或已过期,应用会连接主数据源来组装对象,并将其保存回对象缓存中以便将来使用。

缓存hash算法:

  • 余数hash:简单、扩容时可能导致大量缓存重新分布迁移。

  • 一致性hash算法(不带虚拟节点):通过环形链表解决了扩容缓存迁移的问题,但存在着负载不均衡的问题。

  • 一致性hash算法(带虚拟节点):利用虚拟节点解决了负载不均衡的问题,需要针对不同数量的集群节点设置不同的虚拟节点的值。

缓存可能面临的问题:

  • 数据不一致与脏读

  • 缓存雪崩

  • 缓存穿透

消息队列:

同步调用VS异步调用:同步调用就是客户端等待调用执行完成并返回结果。异步调用就是客户端不等待调用执行完成返回结果,不过依然可以通过回调函数等接收到返回结果的通知。

消息队列架构:

消息队列应用场景:

  • 异步

  • 解耦

  • 削峰填谷

主要消息队列产品:rabbitMQ/kafaka/rocketmq/activemq

负载均衡架构:

类别:

  • HTTP重定向负载均衡

  • DNS负载均衡

  • 反向代理负载均衡

  • IP负载均衡

  • 数据链路层负载均衡

负载均衡算法:

  • 轮询

  • 加权轮询

  • 随机

  • 最少连接

  • 源地址散列

集群Session管理常用方式:

  • session复制

  • session绑定

  • 利用cookie记录session

  • session服务器

分布式数据库:

Mysql复制方式:

  • 主从复制

  • 一主多从复制

  • 主主复制:

用户头像

坂田吴奇隆

关注

还未添加个人签名 2019.01.06 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营-第5周总结