总结5

作者: yz08150 | 来源:发表于2020-07-08 18:53 被阅读0次

缓存

缓存有多个级别的缓存,从 cpu缓存 到 内存 到 redis远程缓存,都可以认为是缓存

缓存 和 缓冲的区别

缓存 cache
缓冲 buffer

区别在于 缓存 用户多次的读取
而 缓冲 用于写和读

缓存数据存储

一般使用 Hash 表的方式

缓存的关键指标

缓存命中率

影响缓存命中率的主要原因
  • 缓存键集合大小
  • 缓存可使用内存空间
  • 缓存对象生存时间
缓存种类
客户端侧的代理缓存
反向代理缓存

比如 nginx 等

多层反向代理缓存
CDN

动静分离的访问,动态资源 和 静态资源访问的域名是分开的
动静资源合在一起的
实际用的是动静分离的方式

通读缓存
旁路缓存
浏览器对象缓存
// webstorage 缓存
var preferences = {/* data object to be stored */};
localStorage.setItem('preferences', JSON.stringify(preferences));

var cachedData = localStorage.getItem('preferences');
var preferences = JSON.parse(cachedData);
本地对象缓存

放在应用程序中的缓存
比如服务器的应用程序中,或者客户端的应用程序中
这种集群方式已经不适用了,同步内容太多

远程分布式对象缓存

比如 memchaced redis

一致性 hash

image.png

基于虚拟节点的一致性 hash


image.png

合理的使用缓存

  • 频繁修改的数据,不适合缓存

  • 没有热点的访问数据,不适合缓存

  • 数据不一致 与 脏读,是潜在的存在的问题,是否允许

  • 缓存雪崩问题,当大量缓存同时失效时,比如,大量缓存过期时间到了,比如缓存服务挂了,都会导致大量的请求到达数据库,有可能会导致 数据库故障,甚至重启数据库也解决不了,因为大量请求一直存在,数据库频繁挂掉。
    此时,可以使用 nginx 设置 百分之多少的请求过来,慢慢的放开请求

  • 缓存预热,预先加载数据到缓存系统中

  • 缓存穿透,恶意的请求缓存中不存在的数据,导致请求到达数据库
    解决方式是,对这个不存在的请求数据设置一个较短的失效时间

消息队列与异步调用架构

有两种模式
点对点
发布订阅

消息队列的好处

  • 实现异步处理,提升处理性能
  • 更好的伸缩性,比如 多个消费者消费队列,可多可少
  • 削峰填谷,按照一定速度消费,可以把起伏过大的请求数量,填平
  • 失败隔离 和 自我修复
    生产者失败 和 消费者失败 隔离开来,
    意味着任意时刻,都可以重启 消费者系统,或者添加删除服务器
  • 解耦

负载均衡架构

HTTP重定向负载均衡 实际中不使用

重定向负载均衡服务器,返回 302 重定向一个 ip上

DNS 负载均衡 现实中一定要使用
反向代理负载均衡 现实中使用受限

比如 nginx
一般只能用在 代理的后端服务器数量 不超过 10 台,具体的还需要根据情况来看
因为 nginx 等只在 http 代理,所以所有的流量等都需要通过 nginx , nginx 的性能网卡等是个瓶颈
所以,应用受限,但通常一般的应用,也够用了
但对于大型的互联网产品,肯定不行了

IP 负载均衡 现实中经常应用

IP 负载均衡,在 ip 层实现负载均衡,可以和 nginx 一起使用
但, 同样还有个问题,流量问题,如果还是都通过同一个服务转发,还是有瓶颈,
所以,需要更好的性能,使用下面的方式

数据链路层负载均衡 经常使用

回复,不再通过代理返回,而是直接返回给客户端

应用服务器集群的 Session 管理

包含以下手段

session 复制 现实中不使用

有新session,复制给其他所有服务器

session 绑定 现实中不使用

让用户只请求在同一台机器上

利用 cookie 记录session 现实中经常使用
Session 服务器 现实中经常使用

使用专门的服务器存储 session,比如 redis

分布式数据库

Mysql主从复制 现实中经常使用

从服务器 获取主服务器的 binlog 来同步

注意,对于 建表等 DDL语句,不要同步,否则,从服务器会非常耗时,最好手动的操作从数据库

Mysql 一主多从复制 现实中经常使用

同样 DDL 语句最好不要 同步过去

一主多从复制的优点 :

  • 分摊负载
  • 专机专用,读写分离,并且不同功能的服务器可以只读取对应的从服务
  • 便于热备
  • 高可用

Mysql 主主复制 现实中经常使用

注意事项 :

  • 主主复制的两个数据库不能并发写入
    也就是说,虽然有两个主服务器,但是只能向其中的一个主服务器写,不能同时写两个,会造成数据的混乱 比如,操作了A主,B主还没同步过来,又操作了B主刚刚提交的数据
  • 主主复制,只是增加了数据的读并发处理能力,没有增加写并发能力和存储能力
  • 更新表结构,会造成据他巨大的同步延迟
    所以,表结构的操作,要,一台一台的从服务器操作

相关文章

  • 每日复盘103-复盘《见识》

    1 、早起(5:10)√ 2、朗诵+总结√ 3、读书 4、健身 5、总结复盘√ 记录与总结(day103)2019...

  • Java 知识点总结

    Java技术总结 总结内容如下: 1.语法总结, 2 面向对象总结, 3 线程总结, 4 输入输出流总结, 5 集...

  • 简书社区消零派153号如风约你同行五月消零总结

    1.标题 简书社区消零派153号如风约你同行5月总结(1/5—31/5) 2.总结阶段: 5月1日—5月31日 3...

  • 日总结 20160329 任务细分到足够小

    日期:2016年03月29日 星期二 连续总结:5天 累计总结:5天 累计未总结:0天 一、今日计划 二、任务完成...

  • 总结(5)

    今天上午,我们继续探究比例,并思考和理解了几道有关比例的题型。 中午时,我们观赏了《神秘巨星》。女主出生在极度重男...

  • 总结5

    2017年4月18日 桃子今日工作总结: 一、今日学习中收获: 1.今天上午改励志小学的作业,大部分都比较认真,也...

  • 5 总结

    这次时间太匆忙,没有去东京,有点遗憾,以后有机会再去日本关东地区看看。 仓廪实而知礼节,衣食足而知荣辱,如今的日本...

  • 总结5

    游戏快做完了,但是基础掌握非常差劲,所以对于考核之前,还会花不短的时间去看书、看代码…… 这周总体来说很浮躁,比较...

  • 总结5

    缓存 缓存有多个级别的缓存,从 cpu缓存 到 内存 到 redis远程缓存,都可以认为是缓存 缓存 和 缓冲的区...

  • 每日复盘day80-再见星球

    1、早起(5:10)√ 2、朗诵+总结√ 3、读书 (人性的弱点)√ 4、健身(徒步5.6公里)√ 5、总结复盘√...

网友评论

      本文标题:总结5

      本文链接:https://www.haomeiwen.com/subject/vlngqktx.html