- 博客(8)
- 收藏
- 关注
原创 【redis使用场景探究】
微博主页和微信公众号和朋友圈( 不是大v,订阅者2000到3000+先给在线的用户发送),订阅的微信公众号,后发的消息展示最前面,这都是带有时间线的消息流,用redis的LPUSH放数据+LRANGE取数据实现。2:redis集群架构下不适合大规模使用 - 分片,将用户表的数据划分到不同的槽位。如果大量的消息,pull模式,大v发消息到队列中去,其他用户上线之后,从队列中拉取。1:过期功能不能用在field上,只能用在key上。1:同类数据归类整合储存,方便数据管理。2.队列:LPUSH + RPOP。
2023-04-23 22:31:45 83
原创 【秒杀下单再思考 】
假设这个热点商品,库存1000,在做缓存预热的时候,直接把库存的缓存拆开来,不同的分片放到不同的redis结点上,第一片库存333,第二片333,第三片333,做负载均衡策略,第一个请求到第一个分片所在的redis主结点,依次类推,请求的地方要实现负载均衡的策略,key要再拼接1、2、3这种,实现一个简易的负载均衡,这个架构可以抗住更高的并发。2:消息发送的时间和当前接收消息处理的时间相差1分钟的,对这种消息,不再往db插了,直接插redis,redis通过定时任务同步到db去;如果是rocketMQ,
2023-04-22 15:01:05 111
原创 【epoll 高效原理和底层机制分析】
当某一进程调用 epoll_create 方法时,Linux 内核会创建一个 eventpoll 结构体,在内核 cache里建了个红黑树用于存储以后 epoll_ctl 传来的 socket 外,还会再建立一个 rdllist双向链表,用于存储准备就绪的事件,当 epoll_wait 调用时,仅仅观察这个 rdllist双向表里有没有数据即可。有数据就返回,没有数据就 sleep,等到 timeout 时间到后即使链没数据也返回。
2023-04-22 12:02:43 206
原创 select poll epoll三者的比较
select和poll,每次调用都会线性遍历所有的元素,线性下降性能问题,epoll只有活跃的socket才会主动callback,【epoll内核实现是根据每个fd上的callback函数实现的】epoll没有线性下降的性能问题,但是所有的socket。缺点:监视很多文件描述符,linux内核限制同时监视1024个,传递的参数要是所有的文件描述符,以数组形式保存,要扩容,产生新的数组。,select轮询,扩容麻烦;特点:创建select实例,事件注册,轮询处理。都很活跃的情况下,可能会有性能问题。
2023-04-22 09:14:42 62 1
原创 Netty底层原理剖析
备注:调用ctl监听客户端连接,当有事件发生时,将此事件移到就绪事件列表,wait处有监听,底层原理如下:9000端口发送数据,os感知到之后,调用os中断程序,处理事件,其中包括 连接、io事件,放到os的时间列表,事件列表是内核级别的。
2023-04-21 21:39:35 167
原创 2021-07-14无法获得锁 11:资源暂时不可用
这两天在安装新软件时频繁遇到这个问题,*可能原因:*另外一个程序占用了系统锁,锁文件在/var/lib/apt/lists下,当有新的进程生成时,就会因为得不到锁而出现如图所示问题。我直接采取删除的暴力方式,解决问题,可以安装数据库包。...
2021-07-14 09:22:22 161
原创 2021-07-13
处理 /home/ddp/.vimrc 时发生错误:第 124 行:E117: 未定义的函数: plug#begin第 126 行:E492: 不是编辑器的命令: Plug ‘chxuan/cpp-mode’
2021-07-13 10:04:40 546
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人