架构师 3 期 3 班 -week5- 总结

用户头像
zbest
关注
发布于: 2020 年 12 月 22 日

缓存

用于优化读性能

缓存的应用

  • CPU缓存:L1 L2 L3

  • 操作系统缓存:page cache(linux)

  • 数据库缓存:Query Cache (mysql)

  • JVM缓存:Code Cache (jvm存储jit优化的指令)



上面是操作系统及虚拟机级别的缓存应用,下面的应用层的缓存应用



  • CDN缓存:搭建在边缘节点的缓存服务

  • 反向代理服务器缓存:如nginx的proxy cache

  • 客户端缓存:浏览器的缓存,app的缓存

  • 应用程序的缓存:应用程序的内存空间

  • 分布式缓存服务:redis/memcached 独立的缓存服务



各种存储介质数据访问的延时



| 操作类型 | 访问延时 |

|---------------------|-----------------|

| 本地内存 | 100ns |

| SSD | 100,000ns |

| 网络数据包(内网) | 500,000ns |

| 磁盘(非SSD) | 10,000,000ns |

| 按顺序从网络中读取1MB数据 | 10,000,000ns |

| 按顺序从磁盘(非SSD)读取1MB数据 | 30,000,000ns |

| 夸大西洋网络数据包来回一次 | 150,000,000ns |

| 每秒 | 1,000,000,000ns |



缓存数据结构

常用hash表,访问速度快

hash表需要注意的问题

* 负载因子:合理设置负载因子,避免hash表退化成链表或红黑树

* hash冲突:如java 使用链表和红黑树,存储hash值相同的值

* rehash操作:渐进式rehash,避免rehash时访问数据延时过长



缓存命中率

缓存命中率是缓存的关键性指标,低命中率表示缓存目的或效果没有达到预期。

影响缓存命中率的因素

* 缓存键集合的大小

* 缓存可使用的内存空间

* 缓存对象的生存时间



缓存面对的问题

* 缓存失效策略

* 缓存雪崩

* 缓存穿透



消息队列

用于优化写性能



消息队列的作用

* 提高写性能

* 系统间解耦

* 并非请求缓冲(消峰)



负载均衡

负载均衡算法

* 轮询

* 加权轮询

* 随机

* 最少连接

* 源地址散列



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

zbest

关注

一个胖子 2020.11.04 加入

一个不正经的java程序员, 整天写着openresty和go的代码, 努力从键摄向非职业摄影师迈进, 快要溺死在内耗里的中年人, 胖子。

评论

发布
暂无评论
架构师 3 期 3 班 -week5- 总结