dubbo2.js

基于 Node.js 的 RPC 客户端
授权协议 Apache-2.0
开发语言 Java JavaScript TypeScript
所属分类 Web应用开发、 RPC/XMLRPC项目
软件类型 开源软件
地区 国产
投 递 者 壤驷茂实
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

dubbo2.js —— nodejs 使用原生的 dubbo (dubbo head + hessian body) 协议打通了 dubbo 的 rpc 方法调用。

功能特性

  • 支持将 zookeeper 作为注册中心

  • 使用 TCP Dubbo 原生协议(Dubbo Header + Hessian Body)

  • Socket 池 (ServerAgent -> SocketPool -> SocketWorker)

  • 直接支持 Dubbo (const Dubbo = DirectlyDubbo({..}))

  • 中间件,易于扩展

  • 追踪

  • 支持 Dubbox

示例代码

import {Dubbo, java, TDubboCallResult} from 'dubbo2.js';
//定义dubbo方法类型接口
//方便代码自动提示
interface IDemoService {
  sayHello(name: string): TDubboCallResult<string>;
  echo(): TDubboCallResult<string>;
  test(): TDubboCallResult<void>;
  getUserInfo(): TDubboCallResult<{
    status: string;
    info: {id: number; name: string};
  }>;
}
//创建dubbo对象
const dubbo = new Dubbo({
  application: {name: 'node-dubbo'},
  //zookeeper address
  register: 'localhost:2181',
  dubboVersion: '2.0.0',
  interfaces: ['com.alibaba.dubbo.demo.DemoService'],
});
//代理本地对象->dubbo对象
const demoService = dubbo.proxyService<IDemoService>({
  dubboInterface: 'com.alibaba.dubbo.demo.DemoService',
  version: '1.0.0',
  methods: {
    sayHello(name) {
      //仅仅做参数hessian化转换
      return [java.String(name)];
    },
    echo() {},
    test() {},
    getUserInfo() {
      //仅仅做参数hessian化转换
      return [
        java.combine('com.alibaba.dubbo.demo.UserRequest', {
          id: 1,
          name: 'nodejs',
          email: 'node@qianmi.com',
        }),
      ];
    },
  },
});
//main method
(async () => {
  const result1 = await demoService.sayHello('node');
  //print {err: null, res:'hello node from dubbo service'}
  const res = await demoService.echo();
  //print {err: null, res: 'pang'}
  const res = await demoService.getUserInfo();
  //status: 'ok', info: { id: '1', name: 'test' }
})();
  • 1. Dubbo 是啥? Dubbo 是一个由阿里开源的 RPC 框架。 简单说下RPC框架的背景。 Dubbo 是一种 RPC 框架,应用在分布式服务。 2. 使用 Dubbo 实现 Java 互调 ​ 首先我们可以先尝试下同语言下的 Dubbo 调用,从容易开始。 ​ 可以参考下 dubbo 官方文档 dubbo.apache.org/zh-cn/docs/… ​ 这边简单尝试下,主要有两步:

  • /*  * Copyright 1999-2011 Alibaba Group.  *    * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a

  • 1:分析 不管是通过xml方式,还是注解方式,还是API方式都会生成对应的XXXConfig类,然后解析这些XXXConfig类生成URL的参数信息,例如<dubbo:application> -> ApplicationConfig,<dubbo:registry> -> RegistryConfig。 如果我们查看在zk中注册的服务提供者信息(服务消费者类似),可能看到如下的信息: [zk:

  • java.lang.IllegalStateException: Error processing condition on com.alibaba.boot.dubbo.DubboAutoConfiguration.dubboProtocolConfig     at org.springframework.boot.autoconfigure.condition.SpringBootCondi

  • Failed to invoke the method queryValueByName in the service com.zto56.cuckoo.cloud.service.order.IOrderCommonService. Tried 1 times of the providers [10.86.10.43:20830] (1/1) from the registry 10.15.1

  • 推荐博文: http://dubbo.apache.org/zh-cn/docs/user/configuration/api.html

  • http://dubbo.io/dubbo2.js/docs/preface.html https://github.com/dubbo/dubbo2.js   转载于:https://www.cnblogs.com/liujinyu/p/10295493.html

 相关资料
  • # xmlrpc_server.py from xmlrpc.server import SimpleXMLRPCServer from xmlrpc.client import Binary import datetime class ExampleService: def ping(self): """Simple function to respond when

  • 问题内容: 我可以使用Node.js的SSH客户端与服务器进行通信吗? 问题答案: 用纯JavaScript编写的SSH2客户端模块,用于node.js https://github.com/mscdex/ssh2 还要签出这个包装器 https://github.com/mikeal/sequest

  • 提纲ceph-fuse [ -m monaddr:port ] mountpoint [ fuse options ] 描述 ceph-fuse 是 Ceph 分布式文件系统的 FUSE (用户空间文件系统)客户端,它会把 Ceph 文件系统(用 -m 选项或 ceph.conf 指定)挂载到指定挂载点。 文件系统可这样卸载: fusermount -u mountpoint 或向 ceph-fu

  • 我使用Spring Boot开发了这个websocket服务器。服务器与基于js的客户机配合得很好。 控制器: 这是服务器端。现在,对于客户机,我已经创建了一个@ClientEndpoint,当我连接到URI“ws://localhost:8080/spring-mvc-java/chat”时,我能够建立一个连接,并且可以看到@ClientEndpoint的@OnOpen回调被触发。 但是,use

  • 问题内容: 我正在寻找用于node.js的webrtc实现, 以将数据从 nodeJS客户端 传输到另一个webRTC对等方。 因此,在我的情况下,nodejs应用程序 不是 服务器,而是客户端。 是否存在这样的节点模块? 问题答案: 我遇到了同样的问题,偶然发现了这两个瑰宝: https://github.com/helloIAmPau/node-rtc 很遗憾,它缺少任何文档。 但是 http

  • 问题内容: 是否有一个用于node.js的Twitter客户端(不是流式API,即常规API)? 我已经了解了twitter-node,但是我正在寻找一个允许使用Twitter REST API的更通用的客户端。 有人有主意吗? 谢谢, 约翰娜森 问题答案: 签出我的节点模块,它可能就是您想要的。具有完整的Twitter API支持(REST和流API):https : //github.com/