我们有一个具有许多线程的系统,每个线程都增加一个计数器。最后,我们需要所有线程的增量总数。由于最终结果的大小和同步的成本,我们怀疑我们当前的解决方案存在一些性能问题,该解决方案使用对单个变量的同步访问。
为了避免同步,我想使用分布式计数器(正确的用语?),其中每个线程都增加其自己的计数器副本。在获得最终结果时,单个计数器仅累加一次。
我可以从头开始实现这样一个计数器。但是我想,我不是第一个提出这样要求的人。令人惊讶的是,快速搜索没有打开任何库。可否提供一些库或演示代码?我正在寻找一个简单的解决方案
您的系统是否有许多不同的进程来管理所有不同的线程?
如果所有线程都由同一进程管理,我觉得不需要分布式资源(计数器),则可以按建议使用AtomicInteger Atomic,这意味着线程安全的,可以从许多线程访问,并且不会发生数据损坏。
如果你的系统确实使用了许多进程,那你需要分布式资源。可以使用任何类型的数据库来实现。在我看来,Redis可能是一个不错的选择。或任何MySql数据库(如果你希望100%数据一致性)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。