美文网首页架构一些收藏全新框架
每秒30万并发的点赞业务设计

每秒30万并发的点赞业务设计

作者: AC编程 | 来源:发表于2022-03-08 09:35 被阅读0次

一、业务分析

我们先只考虑点赞计数,可以看到,这个业务的特点是:

  • 吞吐量超高,明星一出轨,点赞就爆炸。

  • 能够接受一定数据不一致(计数有微小不准确,不是大问题)。

那么,容易想到:

  • 单独架一个计数服务,将计数与其他业务逻辑解耦。

  • 肯定不能用数据库抗实时读写流量(用MQ异步消费)。

  • Redis天然支持固化,可以用高可用Redis集群来做固化存储。

  • 也可以用MySQL来做固化存储,Redis做缓存,读写操作都落缓存,异步线程定期刷DB。

能达到的效果是:

  • 服务可以水平扩展。

  • 数据量增加时,数据库可以按 msg_id 分库,水平扩展。

  • 读写量增加时,缓存也可以水平扩展。

二、计数系统的难点

计数系统的难点,还在于业务的扩展性,以及效率问题。

1、APP首页有多条动态,每条动态都要显示点赞数。

2、同一条动态,不止有点赞数,还有转发数,阅读数,评论数等。

2.1 伪代码

假如用最朴素的方式实现,展示多条动态,多个计数的伪代码如下:

获取首页所有动态id;
    
for (每一条动态) {

获取阅读计数

获取转发计数

获取评论计数

获取赞计数

}

由于同一个msg_id多了几种计数,Redis 的 key 也需要升级为:

msg_id:read

msg_id:forword

msg_id:comment

msg_id:praise

通过不同的key,存储不同的计数。假设首页有100条动态,每条动态调用4次RPC接口,获取不同的计数,总计要有400次调用,系统的扩展性和效率非常低。

三、系统优化

容易想到的是:增加列,记录更多的计数。


1

这种方式的缺点是:每次要新增一种计数时,就要修改表结构,比较麻烦。那能不能不变更表的结构呢?可以,行扩展是更好的方式。


2

表结构固化为:(msg_id, count_key, count_value)。当要扩充业务计数时,增加一行就行,不需要修改表结构。接下来看下redis的优化方案:

3

四、总结

  • 服务化,计数系统与业务系统解耦。

  • 用缓存扛实时读写,数据库和缓存水平切分扩展。

  • 数据库使用行扩展,如果有需要缓存可以用一个value存储多个业务计数(key:100:200:300:200)。

转载自:每秒30万并发的微博点赞业务,架构到底怎么设计?这下懂了

相关文章

  • 每秒30万并发的点赞业务设计

    一、业务分析 我们先只考虑点赞计数。可以看到,这个业务的特点是: 吞吐量超高。明星一出轨,点赞就爆炸。 能够接受一...

  • 性能测试指标

    1 分析 测试指标一般分为业务指标、资源指标、应用指标、前端指标。 业务指标:如并发用户数、TPS(系统每秒处理事...

  • 浅谈JavaWeb中高并发业务处理

    文章地址:浅谈JavaWeb高并发业务处理 浅谈JavaWeb中高并发业务处理 在JavaWeb应用中高并发的业务...

  • 高并发业务接口开发思路(实战)

    高并发业务除了需要有支撑高并发的服务器架构,还需要根据业务需求和架构体系,设计出合理的开发方案,这里根据一个实践过...

  • 关于双11的故事手机直播

    手机直播互动点赞 PV:就是计数器加一操作另外如果在加上两个业务场景那?1) 高并发,海量请求,至少千万2) 实时...

  • Disruptor核心(一) 快速上手

    Disruptor概述 是一个无锁并发框架; 能够在一个线程里每秒处理6百万订单; 业务逻辑处理器完全在内存中运行...

  • 企业IT架构笔记7 异步化

    核心设计思路:串行、同步 --> 异步、并行!解决大容量高并发、及高性能问题。 业务处理异步化:通过业务处理流程异...

  • 你的系统如何支撑高并发?

    高并发系统各不相同。比如每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统。 他们...

  • 你的系统如何支撑高并发?

    高并发系统各不相同。比如每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统。 他们...

  • 「中间件」消息中间件如何实现每秒几十万的高并发写入?

    前言 用过消息中间件的都知道能够解决业务中的性能瓶颈,那么消息中间件如何实现每秒几十万的高并发写入?消息中间件存储...

网友评论

    本文标题:每秒30万并发的点赞业务设计

    本文链接:https://www.haomeiwen.com/subject/yyxarrtx.html