Java Frameworks

aeron

core

  • MediaDriver
  • Archive
  • Raft Consensus
  • Agrona/SBE serde
  • Pub/Sub RPC

instructions

run aeron example with jdk17

1
java --add-opens java.base/sun.nio.ch=ALL-UNNAMED app.jar

run cookbook code

  • remove jvm vendor configuration

references

disruptor

  1. 使用 cas 的方式实现线程安全,无锁所以减少了加锁释放锁带来的资源消耗
  2. 通过 padding 的方式减少伪共享,减少缓存失效以及重新加载带来的性能损失
  3. 预分配队列中的对象,对象可以重复利用只是重新赋值属性值,减少新建回收对象带来的性能损失
  4. 用数组来实现 ringbuffer,数组在内存中是一块连续的内存,并且访问也是顺序访问的,可以利用缓存优化提高性能
  5. 缓存的大小必须是 2 的 n 次方,方便位运算
Licensed under CC BY-NC-SA 4.0
Get Things Done
Built with Hugo
Theme Stack designed by Jimmy