js-remoting-for-apache-dubbo
dubbo remoting
Introduction
Dubbo Protocol Nodejs Implement
- Common Exchange Packet
0 1 2 4 6 8 10 12
+------+------+------+------+------+------+------+------+------+------+------+------+
| MAGIC | flag |status| packet id |
+-------------+-------------+-------------+-------------+-------------+-------------+
| body length | body |
+---------------------------+ +
| ... ... |
+-----------------------------------------------------------------------------------+
- Dubbo Request Packet
0 1 2 4 6 8 10 12
+------+------+------+------+------+------+------+------+------+------+------+------+
| MAGIC | flag | | packet id |
+-------------+-------------+-----------------+-------------------+-----------------+
| body length | dubbo version | service path | service version |
+---------------+-----------+-----------+-----+-------------------+-----------------+
| method name | arguments description | |
+---------------+-----------------------+ arguments +
| ... ... |
+-----------------------------------------------------------------------------------+
| attachments |
+-----------------------------------------------------------------------------------+
- Dubbo Response Packet
packet status ok
0 1 2 4 6 8 10 12
+------+------+------+------+------+------+------+------+------+------+------+------+
| MAGIC | flag |status| packet id |
+-------------+-------------+---------------------------+---------------------------+
| body length | result flag | |
+---------------------------+---------------------------+ +
| result or exception ... |
+-----------------------------------------------------------------------------------+
packet status not ok
0 1 2 4 6 8 10 12
+------+------+------+------+------+------+------+------+------+------+------+------+
| MAGIC | flag |status| packet id |
+-------------+-------------+---------------------------+---------------------------+
| body length | error message |
+---------------------------+-------------------------------------------------------+
Install
$ npm install dubbo-remoting --save
Usage
You can use this dubbo protocol implementation with the sofa-rpc-node
1. Install & Launch zk
$ brew install zookeeper $ zkServer startZooKeeper JMX enabled by defaultUsing config: /usr/local/etc/zookeeper/zoo.cfgStarting zookeeper ... STARTED
2. Expose a dubbo service
'use strict'; const RpcServer = server;const ZookeeperRegistry = registry;const protocol = ; const logger = console; // 1. create zk registry clientconst registry = logger address: '127.0.0.1:2181'; // 2. create rpc serverconst server = logger registry port: 12200 protocol; // 3. add serviceserver; // 4. launch the serverserverstart ;
3. Call the dubbo service
'use strict'; const RpcClient = client;const ZookeeperRegistry = registry;const protocol = ;const logger = console; // 1. create zk registry clientconst registry = logger address: '127.0.0.1:2181'; { // 2. create rpc client with dubbo protocol const client = logger registry protocol ; // 3. create rpc service consumer const consumer = client; // 4. wait consumer ready await consumer; // 5. call the service const result = await consumer; console;} ;