Week05 学习心得 - 技术选型

发布于: 2020 年 07 月 08 日

分布式缓存架构

  1. 什么是缓存?

是介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取时,用于加快读取的速度。

数据存储:Hash表

  1. 缓存命中率

  • 是缓存的关键指标

  • 影响命中率的主要指标:

  • 缓存键集合大小

  • 缓存可使用内存空间

  • 缓存对象生存时间(TTL)

  1. 缓存的分类

  • 通读缓存

  • 代理缓存

  • 反向代理缓存

  • CDN缓存

  • 旁路缓存

  • 浏览器对象缓存

  • 本地对象缓存

  • 远程分布式对象缓存

  • Memcached分布式对象缓存

  1. 缓存的优势

  • 为什么缓存能显著提升性能

  • 缓存数据通常来自于内存,比磁盘上的数据有更快的访问速度。

  • 缓存存储数据的最终结果形态,不需要中间计算,减少CPU资源的消耗。

  • 缓存降低数据库、磁盘、网络的负载压力,使这些I/O设备获得更好的响应特性。

  • 优势

  • 技术简单

  • 性能提升显著

  • 应用场景多

  1. 缓存可能会存在的典型问题

  • 缓存雪崩

  • 当缓存失效时,DB会因为不能承受如此大的压力而宕机。

  • 与缓存击穿不同的是:缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查DB。

  • 缓存击穿

当缓存失效时(但DB中有),这时并发读热点数据,缓存没读到数据,又同时去DB取数据,引起DB压力瞬间增大,造成过大压力。

  • 缓存穿透

指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,这将导致这个不存在的数据每次请求都要到DB查询,失去了缓存的意义,量大时可能会造成DB宕机。

消息队列与异步架构

  1. 消息队列构建异步调用架构

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

  • 常见的消息队列异步调用架构模型

  • 点对点模型

  • 发布订阅模型

  1. 消息队列的好处

  • 实现异步处理,提升处理性能

  • 更好的伸缩性

  • 削峰填谷

  • 失败隔离和自我修复

  • 解耦

  1. 主要MQ产品比较

  • RabbitMQ

性能好,社区活跃

  • ActiveMQ

影响广泛,跨平台,Java友好

  • RocketMQ

Java开发,性能好,可靠性高

  • Kafka

分布式的伸缩性好

负载均衡架构

  1. 负载均衡的实现方案

  • HTTP重定向负载均衡

  • DNS负载均衡

  • 反向代理负载均衡

  • IP负载均衡

  • 数据链路层负载均衡

  1. 负载均衡算法

  • 静态:轮询、加权轮询、随机、原地址散列

  • 动态:最少链接、最快响应速度、观察模式

分布式数据库

  1. MySQL分布式数据库架构

  • 主从复制

  • 一主多从复制

优点:

  • 分摊负载

  • 专机专用

  • 便于冷备

  • 高可用

  • 主主复制

  1. MySQL复制需注意:

  • 主主复制的2个DB不能并发写入

  • 复制只能增加数据的杜并发处理能力,没有增加写的并发能力和存储能力

  • 更新表结构会导致巨大的同步延迟

发布于: 2020 年 07 月 08 日 阅读数: 12
用户头像

关注

还未添加个人签名 2018.04.17 加入

还未添加个人简介

评论

发布
暂无评论
Week05 学习心得 - 技术选型