| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 并发架构二 -> 正文阅读 |
|
[大数据]并发架构二 |
前端静态化页面: 通过对数据进行静态化,也是有很多问题的,比如我们商品如果过多,freemark模板一定修改之后,我们所有的商品都需要重新再次生产静态化,这个工作量实在是太大了。 然后加入缓存的并发问题 分布式锁(redis) zk实现分布式锁就是利用它的临时顺序节点 绑定一个线程 如果是第一个得到锁的线程那么它肯定排在第一个 所以如果线程不在第一个那么就表示它不能得到锁 这样实现 然后就引入缓存redis 引入缓存并发量是会提升 但是又有新的问题 缓存数据库 数据不一致、增加网络io压力 数据库读写不一致 可以给数据设置一个过期时间 变为最终一致性 比如设置5秒 就可以保证5秒之后数据是一直的 只有5秒之内数据会存在不一致的问题 增加网络io压力的问题 可以使用jvm层面的缓存 就是在代码中创建hash集合 把数据存到集合中 如果集合没有再去redis中查找 缓存失效的问题 缓存击穿 有100个请求过来访问key为26的数据 这时这条数据过期了 然后100个请求都打入数据库了 解决方法就是加分布式锁 缓存穿透 就是恶意攻击 访问不存在的数据 解决方法 可以把这些不存在的数据也放到缓存中 或者使用布隆过滤器 布隆过滤器有一个很大的数组 请求来了之后进行哈希算法进入一个数组的槽中如果不存在就把value设置为空的 缓存雪崩 雪崩跟击穿一样 雪崩是同一时间大量的key过期了 但是来了很多请求 这样这些请求就都会直接访问数据库 解决方法就是随机过期时间并加分布式锁 缓存和数据库双写一致性问题: 一致性问题是分布式常见问题,还可以再分为最终一致性和强一致性。数据库和缓存双写,就必然会存在不一致的问题。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:26:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |