作者回复: 取随机数主要是解决异步计数带来的用户体验问题,单从解决性能问题的角度看,我们可以不取随机数,也可以每次100后累加,但是这样,前端用户看到的预约人数就是成百的增加,会被质疑计数的真实性,带来投诉。
作者回复: 这是单元化的解决方法,在多活机房建设中,把数据按照一定规则划分成不同的单元,比如按照用户hash,这样单元内的业务层,缓存层,db层都闭环在单元机房内,避免了跨机房的调用。当然数据能不能划分成单元,也要看数据特性,像一些配置类的数据就不太适合,这样的数据可以放在中心机房,而一些用户相关的数据就可以进行单元划分
作者回复: 是的,需要对不同的redis key统计计数,但要注意避免统计计数成为单点热点,可以单实例对key进行计数。
作者回复: 是的,在处理高并发场景时,很多时候需要根据cap折中,而为了高性能,一致性问题往往是可以先妥协的