Nodejs与Java通信,除了dubbo还有什么更好实践?

Nodejs与Java通信,除了dubbo还有什么更好实践?

公司目前选择是 dubbo,但是有点黑盒子,发送请求和接受请求过程不可见,有时候还会在底层出现一些调用异常却不可查。 java 开发也要专门为 dubbo 写接口才能通过 zk 调用。各位大佬还有什么更好实践?

21 回复

http,websocks,webservice,消息中间键。。。。。。


http 感觉是最后选择吧,java 都有 http 接口了,node 立在这里感觉很多余。并且大佬你后面这几个是客户端和服务器实时通信的协议吧?我是希望有一个类似 dubbo 的解决方案,node 在服务器端请求 java 接口

已经被过度了,之前公司是 php+java 就是用的 thrift,现在全栈迁移 node,都是 Dubbo

dubbo 是 apache dubbo (看介绍也是 http) ? 你说的 http 是指什么

dubbo 是配合 zk 来的。java 把服务注册到 zk 上,node 到 zk 注册消费者,两者就通了。可能我叙述有问题,我说的 http 接口就是直接通过网址来获取数据了。

dubbo? 还有更差的实践吗

现在他们想摆脱 dubbo 重新回到 http 时代。。因为要接 dubbo 的话,java 必须为 dubbo 单独写一份文件注册到 zk 上,还要写 dto。如果 http 的话 java 工作少了,node 没有黑盒子。但是这样我感觉没必要呀,java 都起了 http 接口了,用 node 有啥意义

请在 dubbo 上扩展一个自己的协议

dubbo 支持 http 协议直接搞 rest 啊

说一个以前用过的:hprose

做个泛化调用,所有的 http 请求都到这个泛化调用转发器上,node 层不要去感知注册中心这些玩意

说下你们是出于什么原因要通信吧。
如果说 node 只是做一个中间层的话,那就别搞 zk 了。

调用者都是客户端,看你怎么理解了,dubbo 只是一个框架,直接很多协议,不用 dubbo 协议还有很多其他的可以用的,具体参考: http://dubbo.apache.org/zh-cn/docs/user/references/protocol/dubbo.html

跨语言调用要看使用场景了,通用场景的 RPC/HTTP 比较常见了,duboo/grpc 应该都可以满足了。
这里需要多说一下,zk 的存在是为了服务发现,这个换到其他模型也一样需要的,关键在于服务架构。

可以写一个 2 进制文件夹存东西,两边进行读取,实现通信.:dog

针对Node.js与Java通信的问题,除了Dubbo这一RPC(远程过程调用)框架外,还有多种实践方法,以下是一些推荐的方式:

  1. HTTP/HTTPS协议

    • 优势:简单易用,调试方便,适应大多数应用场景。
    • 实现方式:Node.js端可使用axios、request等库发起HTTP请求;Java端可使用HttpClient、OkHttp等库处理请求。
    • 示例
const http = require('http');
const options = {
  hostname: 'localhost',
  port: 8080,
  path: '/api',
  method: 'GET'
};
// 发起HTTP请求的代码
  1. WebSocket协议

    • 优势:提供全双工通信机制,适合实时数据交换场景。
    • 实现方式:Node.js端可使用ws、socket.io等库;Java端可使用Java WebSocket API或Spring Framework的WebSocket支持。
  2. TCP/UDP协议

    • 优势:TCP协议可靠,面向连接;UDP协议简单,面向数据报,延迟低。
    • 实现方式:Node.js端可通过net模块实现TCP客户端或服务器,通过dgram模块实现UDP通信;Java端可利用java.net包下的Socket、ServerSocket进行TCP通信,使用DatagramSocket进行UDP通信。

综上所述,选择哪种通信方式取决于具体的业务场景和性能需求。在实际开发中,应根据实际情况进行权衡和选择。

回到顶部