系统设计
菜瓜_牛顿
枪如惊雷,照一身肝胆
展开
-
本地缓存篇
本地缓存和远端缓存远端缓存:Redis,MongoDB;本地缓存:一般使用map的方式保存在本地内存中,常见的是ConcurrentHashMap 和guava cache,把数据缓存到JVM内存。常见的在业务中操作缓存,都会操作缓存和数据源两部分。如:put数据时,先插入DB,再删除原来的缓存;get数据时,先查缓存,命中则返回,没有命中时,需要查询DB,再把查询结果放入缓存中;如果访问量大,还需要兼顾本地缓存的线程安全问题和缓存的回收策略。ConcurrentHashMap缺点原创 2020-10-10 15:28:09 · 689 阅读 · 0 评论 -
设计朋友圈
需求:已经有一个查询好友的接口,设计一个微信朋友圈,可以实现发表朋友圈,添加评论,查看评论等功能。主要是设计数据结构数据结构 消息表 存储用户发布的信息,utf8m64 可以存表情包 字段 类型 备注 id bigint 自增主键 uid varchar(20) 用户id content varchar(500) 内容 picture varchar(200) 图片 location varbinar原创 2020-06-16 17:02:13 · 688 阅读 · 0 评论 -
秒杀系统
主要从以下几个思路分析:功能模块划分 秒杀策略 自己的优化点 测试抗压 别人提供的秒杀策略秒杀系统特点秒杀业务简单,卖家查询,买家下订单减库存。 秒杀时网站访问流量激增,出现峰值; 访问请求数量远大于实际需求量。架构设计从前到后依次有:前端页面 -> 代理服务 -> 后端服务 -> 数据库整体优化手段包含:缓存、限流、削峰(MQ)、异步处理、降级、熔断、SET化、快速扩容前端页面资源静态化:将活动页面上的所有可以静态的元素全部静态化,尽量减..原创 2020-05-18 11:57:44 · 137 阅读 · 0 评论 -
短连接系统
使用场景(Scenario)微博和Twitter都有140字数的限制,如果分享一个长网址,很容易就超出限制,发布出去。短网址服务可以把一个长网址变成短网址,方便在社交网络上传播。需求(Needs)将长连接变成短连接 用户访问短连接,会跳转到正确的长连接上短网址的长度当前互联网上的网页总数大概是 45 亿,45亿 超过了2^32,但远远小于64位整数的上限值,那么用一个64位整数足够了。微博的短网址服务用的是长度为7的字符串,这个字符串可以看做是 62 进制的数,那么最大能表...原创 2020-05-18 11:38:52 · 524 阅读 · 0 评论