初识大型互联网公司分布式系统架构

1,小型网站

网站之初是由一些容易的技术如: Linux+Apache+mysql+php写出来,

2,网站演变

当项目发展后需要替换一些技术,和框架

当用户数量上来后,导致性能越来越差,越来越多的数据导致存储空间不够(数据或者是文件),这个时候就需要更换CPU,更换内存,更换硬盘。如下图

应用程序服务器:主要处理的业务逻辑,所以需要更换更快的更强大的CPU

数据库服务器:数据库服务器主要处理的是数据的缓存和检索,所以需要更快的硬盘和更大的内存

文件服务器:因为用户量上来了,需要存储的东西多了,所以需要更换更大的硬盘

这样处理的好处是,不同的服务器分担不同的角色,系统的并发处理能力和系统的数据存储空间得到了很大的改善

 

3,数据库分布式

用户再次增长的时候,随着数据的访问量增长时,数据库的压力太大导致访问延时可以在在数据库中加一个数据库

当业务需求(读取/写)不同的时,问题处理方式不同。

这里说的是读取,可以在数据库服务器中加一个,这里缓存的数据读取有两种方式

       本地访问:速度相比远程访问快,缓存空间相比较小

       远程访问:速度相比本地访问慢,缓存空间相比较大

分布式可单独的常用缓存组件有:redis,memcache   (性质一样,都是key和value)

 

4,分布式会有一些安全性的问题

一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找

缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段被攻击等失效,这样在失效的时候,也会给后端系统带来很大压力。这就叫做雪崩。

解决办法:

1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

2:不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。

3:做二级缓存,A为原始缓存,B为拷贝缓存,A失效时,可以访问B,A缓存失效时间设置为短期,B设置为长期

缓存击穿:如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。

解决办法:

1:对查询结果为空的数据进行缓存

2:缓存时间设置短一点,或者该key对应的数据增加了之后清理缓存。

3:对一定不存在的key进行过滤。

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫静静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值