Java开源:traffic-shm-Java 版异步无锁共享内存实现
<p style="text-align:center"><img src="https://simg.open-open.com/show/d02f31a448784120a6e1ef34723740c4.png"></p> <h2>介绍</h2> <p>traffic-shm(Shared Memory)是一个基于Java的无锁消息库,专为在同一台服务器上的进程间通信(IPC)而设计。</p> <h2>特征</h2> <h3>1. Pure Java</h3> <p>共享内存是进程间通信的有效机制。 内存映射文件提供动态内存管理功能,允许应用程序以与将虚拟地址空间的物理内存共享段相同的方式访问磁盘上的文件。</p> <p>traffic-shm使用sun.misc.Unsafe和FileChannel提供纯Java实现,需要JDK 1.6+。</p> <h3>2. Lock-Free</h3> <p>使用非阻塞算法,实现多生产者/单消费者并发队列,traffic-shm可用于构建具有高吞吐量和低延迟的实时系统。</p> <h3>3. Cross-Platform</h3> <p>对齐:4字节对齐</p> <p>byteorder:big-endian</p> <p>支持大多数主要操作系统,如Linux,macOS,Windows,AIX和HP-UX。</p> <p>注意:在HP-UX上设置-Xmpas:</p> <h3>4. Message Ordering</h3> <p>traffic-shm提供一个一键保证的FIFO队列。</p> <p>光标只能向前传送,一旦消息成功传递,消息就是AUTOMATIC ACKNOWLEDGMENT,这意味着一旦接收者接收到消息,就会确认消息。</p> <h2>设计</h2> <p><img src="https://simg.open-open.com/show/dcb369514ae45741239b48be5c0055e9.png"></p> <h2>入门</h2> <p>读:</p> <pre> <code class="language-java">Queue queue = Queue.map("/Users/peptos/shm", 2000L, 1, 0); queue.init(); while (true) { Block block = queue.poll(); if (block != null) { System.out.println(new String(block.getPayload(), "UTF-8")); } else { Util.pause(10); } }</code></pre> <p>写:</p> <pre> <code class="language-java">Queue queue = Queue.map("/Users/peptos/shm", 2000L, 1, 0); String string = "hello, world"; byte[] bytes = string.getBytes("UTF-8"); System.out.println(queue.put(new Block(bytes))); queue.close();</code></pre> <h2>TODO</h2> <ul> <li>extend mode</li> </ul> <p>reference: <a href="/misc/goto?guid=4959748777790894659" rel="nofollow,noindex">Mycat-IPC</a></p> <p> </p> <p>项目主页:<a href="http://www.open-open.com/lib/view/home/1494897978750">http://www.open-open.com/lib/view/home/1494897978750</a></p>
本文由用户 AmosStrothe 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
转载本站原创文章,请注明出处,并保留原始链接、图片水印。
本站是一个以用户分享为主的开源技术平台,欢迎各类分享!