问题:
java 分布式子系统之间通讯采用何种技术实现?
个人思考:
目前个人掌握大方向有四种:
(1)基于RPC实现,例webservice 、java平台的rmi等,据了解性能不是很好。
(2)基于JMS标准的ActiveMQ等类似的消息框架,好处是子系统之间可以解耦。
(3)基于NIO的通讯框架mina、netty等,此种方式性能没有问题,但不经过成熟的封装直接使用不太方便
(4)了解过淘宝的hsf和dubbo,dubbo开源据说淘宝内部已不使用也停止了更新,hsf貌似没开源,没有找到相关资源。
个人能力目前就了解这么多,有些迷惑不知该采用何种方式实现,希望各位能给出意见和建议...
这主要看你通讯的业务属于什么层面 或者说想要达到什么层面
如果只是简单的业务层上的查询、提交数据这些 其实RESTful(也就是JAX-RS)真的足够(基本80%都能吃)
如果有硬性的要求 比如性能要达到多少多少 那么很可能第一种方法就不是特别好了(要不就把RESTful的连接一直维持 缩减协议等等 尽量提升性能 不过真这么走还不如直接用TCP/IP发消息得了) 或者说就是不要用http 那么就得考虑其他方案 比如类似dubbo这种
当然也推荐直接消费队列 针对那些不用超级实时的(其实以现在大部分的应用来看 还达不到消费队列的性能极限 其实是很多写代码的人/架构师 太不注意 导致消费队列性能降低) 会有奇效
另外要注意的事 技术上的的难易度是从上往下几何递增的