对分布式java应用来说,如何实现系统间通信?常见的两种典型方法如下:(整理自bluedavy的《分布式java应用:基础和实践》)
系统间通信方式 | 基于消息 | 基于远程调用 |
协议 | TCP/IP、UDP/IP | HTTP |
java实现 | TCP/IP+BIO:socket和serverSocket TCP/IP+NIO:SocketChannel和ServerSocketChannel UDP/IP+BIO:DatagramSocket和DatagramPacket UDP/IP+NIO:DatagramChannel和ByteBuffer | RMI:UnicastRemoteObject和LocateRegistry Web Service |
框架实现 | Mina--NIO实现,同时支持TCP和UDP Netty | Spring RMI CXF(包括xfire)/Axis |
性能影响点 | 连接池、连接复用、短(长)链接 | 序列化(反序列化) 反射 |
java系统间通信的框架和技术还有很多,但通常都是基于上述两种进行扩展的,掌握了其通信原理就容易理解其他的。