操作点赞数这类频繁的操作,怎么保证线程安全或者有比较好的方案?

123咔哒 发布于 2018/11/15 19:22
阅读 242
收藏 0

操作点赞数这类频繁的操作,怎么保证线程安全或者有比较好的方案?

加载中
1
zzx10
zzx10

1.模块id,业务id,点赞,浏览数,分享数,评论数等单独设计一张表。

2.redis实现原子性的增加保证线程安全

3.初始化时,redis各hbase中再写入一份,异步写入mysql

4.更新数量时,redis原子性增加,然后在hbase中写入数量,mysql中异步更新写入,可以设置规则,暂不写入或者点赞数取模到对应值再写入

5.查询数据时,容错处理,优先查询缓存,然后在hbase,最后是mysql。    

不过感觉这样设计还是有点麻烦,涉及东西有点多,各种类型数据更新,具体看你业务场景,以及数据量大小来定

1
张金富
张金富

放redis里

0
DeMoNHaDeS
DeMoNHaDeS
DeMoNHaDeS
回复 @123咔哒 : 具体怎么做不太好说,因为需要了解具体的业务场景,特殊的情况可能需要特殊的优化。消息队列的主要作用是异步处理请求,缓解服务压力,方便扩展和分流。
123咔哒
123咔哒
能给我讲讲具体怎么做吗?
0
Kingviker
Kingviker

频繁的读写请求 很多偏向于qps的场景就不太实用了。可以参考微信红包高并发的架构方案。通过对各类数据的特征hash出一个值来确定走哪个分流的服务器处理和读写数据。这样子 写服务的性能很方便扩展。我估计微信红包的方案是hash出来成千上万张表来分流业务

返回顶部
顶部