Java中實現分布式的方式有:EJB、RMI、XMLRPC、Web Service、Hessian、Thrift 、Protobuf、NIO(Netty、Mina)
EJB
優勢:可擴展性好,安全性強,支持分布式事務處理。
劣勢:不能跨語言;配置相對復雜,不同J2EE容器之間很難做無縫遷移。
RMI
優勢:面向對象的遠程服務模型;基於TCP協議上的服務,執行速度快。
劣勢:不能跨語言;每個遠程對象都要綁定端口,不易維護;不支持分布式事務JTA,RMI框架對於安全性、事務、可擴展性的支持非常有限。
Web Service
優勢:跨語言、跨平台,SOA思想的實現;安全性高;可以用來兼容legacy系統的功能
劣勢:性能相對差,不支持兩階段事務
Hessian
優勢:使用簡單,速度快;跨語言,跨平台;可以用來兼容legacy系統的功能。
劣勢:安全性的支持不夠強,不支持兩階段事務。
NIO(Mina/Netty)
優點:基於TCP通信,效率上高於HTTP的方式,非阻塞IO應對高並發綽綽有余。根據具體的需要制定數據傳輸的格式,可擴展性強。
缺點:不能跨語言,無法穿透防火牆。
Protobuf
單純的序列化反序列化庫;
ICE和Thrift
不僅包括序列化反序列化功能,還是RPC框架
ICE的功能更完備,如果說Thrift是網絡框架,那么ICE就是解決方案。
