![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发系统设计
文章平均质量分 85
胡桃姓胡,蝴蝶也姓胡
非常熟悉service mesh,有共同兴趣的小伙伴可以私信我
展开
-
bff层解决了什么痛点
Backend For Frontend(服务于前端的后端),也就是服务器设计API的时候会考虑前端的使用,并在服务端直接进行业务逻辑的处理,又称为用户体验适配器。BFF只是一种逻辑分层,不是一种技术。原创 2023-11-06 01:09:55 · 686 阅读 · 0 评论 -
高并发系统设计 --计数服务抽离
Cache + DB。写Cache,批量刷新DB。有一个写请求,我们就写cache,写一个在cache中+1,buffer记一个,差不多(buffer满了,时间到了)写一次DB,丢数据也就丢一个buffer的数据或者一段时间的数据。原创 2023-01-20 01:44:12 · 1359 阅读 · 0 评论 -
高并发系统设计-Feed流系统设计
有两种实现方式:push和pull实现,首先讨论push模式。原创 2023-01-20 00:30:15 · 2880 阅读 · 0 评论 -
高并发系统设计 -- 贴子(post)的设计
postId可用采用首6位位userId,每一位是0-9/A-Z这36个字符中的某一个,6位可以表示21个不同的用户,6位表示时间戳,后续时间戳(精确到秒)可以标识70年范围内的任意一秒,单个用户每秒发放的帖子不超过两位seq表达的最大值。14位的postId可以适用于本设计系统的规模。由于查询的是同一个用户的帖子,所以所有postId的前缀是相同的,如果查询这个用户某个时间范围内的帖子,那么6位timeCompress的前面几位也相同。对,但是无所谓,你发布贴子,博客的时候,慢一点是无所谓的,这就是。原创 2023-01-19 16:38:05 · 811 阅读 · 0 评论 -
高并发系统设计 -- 粉丝关注列表如何设计
上图我们简称relation页。原创 2023-01-19 15:40:41 · 2810 阅读 · 0 评论 -
高并发系统设计专栏概述
我们请求调用数据库的时候,都会先获取数据的连接,然后依靠这个连接来查询数据,搞完收工,最后关闭连接,释放资源。当请求A的服务越来越多,占用的计算机资源也就越多,最终会导致系统瓶颈出现,造成其他的请求同样不可用,最后导致业务崩溃,这就叫服务雪崩。当前互联网一般都是分布式部署的,而分布式系统中偶尔会出现某个基础服务不可用,最终导致整个系统不可用的情况,这种现象叫做服务雪崩。当数据量大的时候,不用动不动就加机器扩容,分库等等,可用考虑用ES来支持简单的查询搜索,统计类的操作。这里包括构建多级缓存。原创 2023-01-18 22:03:45 · 1328 阅读 · 0 评论 -
高并发系统设计 --热点key问题解决
热点Key问题,这是一个老生常谈的问题了,今天我们来仔细的去剖析这个问题。原创 2023-01-18 21:18:46 · 603 阅读 · 0 评论 -
高并发系统设计 --基于MySQL构建评论系统
为什么我不用mongodb?原创 2023-01-18 19:56:55 · 2519 阅读 · 1 评论 -
统计网页UV业务
我们今天是来统计UV:我的第一个想法是:使用redis的哈希表,但是这样内存占用太过于大了!因此我们要了解一下redis给我们提供的HyperLogLog。原创 2023-01-18 15:25:48 · 909 阅读 · 1 评论 -
高并发系统设计 -- 缓存与数据库一致性问题详细讲解
好了,总结一下这篇文章的重点。1、想要提高应用的性能,可以引入「缓存」来解决2、引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库 + 更新缓存」、「更新数据库 + 删除缓存」3、更新数据库 + 更新缓存方案,在「并发」场景下无法保证缓存和数据一致性,解决方案是加「分布锁」,但这种方案存在「缓存资源浪费」和「机器性能浪费」的情况4、采用「先删除缓存,再更新数据库」方案,在「并发」场景下依旧有不一致问题,解决方案是「延迟双删」,但这个延迟时间很难评估。原创 2023-01-15 22:02:54 · 963 阅读 · 1 评论 -
一致性哈希算法讲解与实现
这里存在一种场景, 当一个服务由多个服务器组共同提供时, key应该路由到哪一个服务.这里假如采用最通用的方式key%N(N为服务器数目), 这里乍一看没什么问题, 但是当服务器数目发送增加或减少时, 分配方式则变为key%(N+1)或key%(N-1).这里将会有大量的key失效迁移,如果后端key对应的是有状态的存储数据,那么毫无疑问,这种做法将导致服务器间大量的数据迁移,从而照成服务的不稳定. 为了解决类问题,一致性hash算法应运而生.原创 2023-01-15 20:20:20 · 205 阅读 · 0 评论 -
高并发系统设计 --多级缓存
为了提高系统的性能,一般会引入“缓存机制”,将部分热点数据存入缓存中,用空间换取时间,以达到快速响应的目的。我们对缓存的认知停留在redis,但其实缓存远远不是只有redis的,从客户端发起请求开始,缓存就已经开始了。这就是所谓的多级缓存,其中的缓存策略,算法也各不相同,但是都有共同点,我们学习某一个缓存的策略,其实对每一层级的都是有效的,本质是一样的。原创 2023-01-15 18:23:30 · 747 阅读 · 0 评论 -
高并发系统设计 --基于bitmap的用户签到
设置值,value只接受0或者1 setbit key offset value # 获取值 getbit key offset # start和end非必填,不写的话,查询的是key里面含有value=1的总共有多少个 bitcount key [ start ] [ end ]原创 2023-01-15 16:26:27 · 1271 阅读 · 0 评论 -
高并发系统设计 -- 大文件业务
前端不断的发送请求,如果用户暂停上传的话,那么就是前端停止发送请求就可以了。我分片了,而且记录了分片的相关信息,所以实现了断点功能。前端把文件进行分片,然后用请求发给后端,请求的内容里面包含了文件的很多相关信息。FILE_UPLOAD_STATUS里面存放的值是false或者true,如果是false的话就说明文件上传没有完成,如果是true的话就说明文件的上传已经完成了,我们的系统里面保存有这个文件。原创 2023-01-13 13:46:01 · 976 阅读 · 0 评论 -
高并发系统设计 -- 登录系统设计
在我们的前后端分离的分布式架构中,有很多代理层(例如SpringCloud GateWay),我们如果用sessionId来验证的话,那么我们前端发过来请求之后,代理要拿到sessionId,拿到sessionId之后要把它传给我真正的服务,而sessionId在传递的过程中会耗费大量的资源。并且如果我们真正的服务是集群部署的话,那么还要实现sessionId的共享,把sessionId拷贝多份。原创 2023-01-11 18:02:41 · 1171 阅读 · 0 评论 -
高并发系统设计 -- 抢红包设计
可以明显的看到打开了红包不一定可以抢到。预拆包:我在发红包的时候,就已经把所有的东西都计算好了放在redis里面了。实时计算:在抢红包的时候进行现场计算。我选择的时把红包提前拆好,虽然提前拆好需要占用Redis的一些存储,但是这样可以让抢红包的速度到达最快。原创 2023-01-02 15:29:23 · 1835 阅读 · 0 评论 -
高并发系统设计 -- 性能测试
是客户发出请求到得到响应的整个过程的时间。:模拟业务操作对服务器造成压力的过程,比如模拟100 个用户进行发帖。:每秒请求数,即每秒系统能够处理的请求数,它也是衡量系统处理能力的重要指标。:每秒事务数,即每秒系统能够处理的交易或事务的数量,它是衡量系统处理能力的重要指标。原创 2023-01-02 13:29:06 · 617 阅读 · 0 评论 -
高并发系统设计 -- 服务限流算法
漏桶法的关键点在于漏桶,但是它,毕竟在某些场景下我们可能需要提高系统的处理效率,而不是一味的按照固定速率处理请求。关于漏桶的实现,uber团队有一个开源的库。这个库的使用方法比较简单,Take()方法会返回漏桶下一次滴水的时间。原创 2023-01-01 12:47:55 · 480 阅读 · 0 评论 -
高并发系统设计 -- 秒杀系统
秒杀问题相信大家都知道的,虽然是一个烂大街的项目,但是秒杀问题背后的知识是很值得学习的,很多高并发系统设计都可以参照秒杀系统来进行实现。而且顺着这个问题,我会教给大家如何进行高并发的系统设计。我们先来看一下脑图,了解一下我们可以获得的知识。原创 2023-01-01 01:08:10 · 664 阅读 · 0 评论