开发者社区> 问答> 正文

使用分布式计数器提高性能,查找库

我们有一个具有许多线程的系统,每个线程都增加一个计数器。最后,我们需要所有线程的增量总数。由于最终结果的大小和同步的成本,我们怀疑我们当前的解决方案存在一些性能问题,该解决方案使用对单个变量的同步访问。

为了避免同步,我想使用分布式计数器(正确的用语?),其中每个线程都增加其自己的计数器副本。在获得最终结果时,单个计数器仅累加一次。

我可以从头开始实现这样一个计数器。但是我想,我不是第一个提出这样要求的人。令人惊讶的是,快速搜索没有打开任何库。可否提供一些库或演示代码?我正在寻找一个简单的解决方案

展开
收起
小六码奴 2019-10-10 18:23:59 865 0
1 条回答
写回答
取消 提交回答
  • 您的系统是否有许多不同的进程来管理所有不同的线程?

    如果所有线程都由同一进程管理,我觉得不需要分布式资源(计数器),则可以按建议使用AtomicInteger Atomic,这意味着线程安全的,可以从许多线程访问,并且不会发生数据损坏。

    如果你的系统确实使用了许多进程,那你需要分布式资源。可以使用任何类型的数据库来实现。在我看来,Redis可能是一个不错的选择。或任何MySql数据库(如果你希望100%数据一致性)

    2019-10-10 18:26:28
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
基于社区的分布式 风险感知模型 立即下载
如何利用Redisson分布式化传统Web项目 立即下载
FLASH:大规模分布式图计算引擎及应用 立即下载