写点什么

第五周 - 学习总结

用户头像
molly
关注
发布于: 2020 年 07 月 08 日

互联网系统架构技术方案(一)

1.分布式缓存

什么是缓存 Cache

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

注:缓存的目的是为了“高速读取”。

缓存的关键指标

缓存关键指标用来衡量一个缓存效果好不好。

多少次能读到缓存数据这就是:缓存命中率。

例如:查询一个缓存,10 次查询 9 次能够得到正确结果,那么它的命中率是 90%。

影响缓存命中率的主要指标

  • 缓存键集合大小 - key 越少存储的数据就越少,那数据基本都能被缓存到;即:键数量越少,缓存能被命中的效率越高。

  • 缓存可使用内存空间 - 内存空间是有限的不可能把所有数据都缓存起来,只能缓存一部分的数据,即:物理上能缓存的对象越多,缓存命中率就越高。

  • 缓存对象生存时间 - 级存对象生存时间 称为 TTL(Time To Live)。缓冲数据是要多次读取的,即:对象缓存的时间越长,缓存对象被重用的可能性就越高。

缓冲可以分为两种

通读缓存(read-through)

客户端连的是通读缓存而不是源始服务器。

  • 代理缓存、反向代理缓存、CDN 缓存都是通读缓存。

旁路缓存(cache-aside)

客户端两个都要连接,即:要连接源始服务器也要连接旁路缓存服务。使用的时候先去旁路缓存中查找,有就使用没有就去源始服务器中查找,查找后给客户端,客户端在把数据写入到旁路缓存中。

这种缓存通常是对象缓冲(对象缓存就是这种 key/value 形式的),就是应用程序自己去访问的缓冲。

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

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

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

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

合理使用缓存

  • 一般来说,数据读写比在 2:1 以上,缓存才有意义。

  • 缓存一些热点访问数据

  • 设置合理的失效时间

2.消息队列与异步架构

异步调用

  • 异步调用中的请求都放到一个消息队列中

  • 有回调的异步调用也是通过消息队列

  • 多次异步调用,不阻塞应用线程

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

相关角色:消息生产者、消息对列、消息消费者

消息队列有两种模型

  • 点对点模型 - 消息生产者生产的消息放到消息队列中,被消息消费者消息后消息队列中就没有这条消息了。

  • 发布订阅模型 - 消息生产者生产的消息,看有多少个订阅就产生多少份消息。

消息队列的好处

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

  • 更好的伸缩性

  • 削峰填谷

  • 失败隔离和自我修复

  • 解耦

缓存一般处理读多的场景,而消息队列处理写多的场景。

3.负载均衡架构

要解决的是:

  • 如何去选择一台服务器,把请求发送给它。

  • 添加服务器的时候,如何把请求发送给它。

负载均衡算法

即:如何选择负载均衡服务器。

  • 轮询

  • 加权轮询

  • 随机

  • 最少连接

  • 源地址散列


用户头像

molly

关注

还未添加个人签名 2017.12.14 加入

还未添加个人简介

评论

发布
暂无评论
第五周-学习总结