Java从JDK 1.4开始支持NIO(New IO),与传统IO相比,NIO是非阻塞的,它包含三个核心组件:

  1. Channel,类似于Stream,但不同于Stream单向,Channel是双向的,从同一个Channel既可以读取数据,也可以写入数据;
  2. Buffer,向Channel写入数据或从Channel读取数据时,数据需先写入Buffer或读入Buffer;
  3. Selector,多个Channel可以注册到一个Selector中,Selector可以通过单线程侦听这些Channel,当有读、写、连接事件时(而不是阻塞等待读、写或连接),执行相应的操作。

基于Java NIO实现服务端与客户端的非阻塞通信如图所示:
java nio

服务端代码

客户端代码

分别启动服务端和客户端程序,输出如下所示。
服务端:
1
客户端:
2

基于WebSocket实现微信小程序的消息推送

微信小程序支持通过基于WebSocket进行消息推送,提供了相应的API,例如创建连接示例代码: JavaScript wx.connectSocket({ ...

阅读全文

基于nginx-sticky-module-ng实现会话保持(Sticky Sessions)

对服务进行集群部署,前端进行负载均衡时,需要实现会话保持,对于同一会话的多个请求,通过集群中的一个节点来提供服务。系统的部署结构如图所示,通过Resin...

阅读全文

ActiveMQ基于Zookeeper和LevelDB实现Master/Slave

ActiveMQ的Master/Slave目前支持三种实现方式: 1)Shared File System Master Slave; 2)JDBC Master Slave; 3)Replicated LevelDB Store。 对于第三种方...

阅读全文