import {Dubbo} from 'dubbo2.js';
默认导入的 dubbo2.js 是按照 es2017 进行编译的,支持 node7.10 以上。
如果更低的 node 版本,可以使用
import {Dubbo} from 'dubbo2.js/es6';
我们使用了 debug 模块,做了全流程的日志跟踪(开发状态),可以通过开启来跟踪整个过程
如果是使用 egg,
DEBUG=dubbo* yarn run dev #(egg-bin dev)
如果是其他的比如 pm2
DEBUG=dubbo* pm2 start xxxx
最普通
DEBUG=dubbo* node server.js
❯ DEBUG=dubbo* node server.js dubbo:queue new Queue +0ms dubbo:bootstrap dubbo2.js version :=> 2.1.5 +0ms dubbo:bootstrap initial:|> { application: { name: 'dubbo-node-consumer' }, dubbo:bootstrap register: 'localhost:2181', dubbo:bootstrap service: dubbo:bootstrap { demoProvider: [Function], dubbo:bootstrap basicTypeProvider: [Function], dubbo:bootstrap errorProvider: [Function] } } +1ms dubbo:bootstrap config:|> { dubboInvokeTimeout: 5, dubboSocketPool: 1 } +2ms dubbo:bootstrap interfaces:|> [ 'com.alibaba.dubbo.demo.DemoProvider', 'com.alibaba.dubbo.demo.BasicTypeProvider', 'com.alibaba.dubbo.demo.ErrorProvider' ] +1ms dubbo:scheduler new:|> { zkRoot: undefined, dubbo:scheduler register: 'localhost:2181', dubbo:scheduler application: { name: 'dubbo-node-consumer' }, dubbo:scheduler interfaces: dubbo:scheduler [ 'com.alibaba.dubbo.demo.DemoProvider', dubbo:scheduler 'com.alibaba.dubbo.demo.BasicTypeProvider', dubbo:scheduler 'com.alibaba.dubbo.demo.ErrorProvider' ] } +0ms dubbo:zookeeper new:|> { zkRoot: undefined, dubbo:zookeeper register: 'localhost:2181', dubbo:zookeeper application: { name: 'dubbo-node-consumer' }, dubbo:zookeeper interfaces: dubbo:zookeeper [ 'com.alibaba.dubbo.demo.DemoProvider', dubbo:zookeeper 'com.alibaba.dubbo.demo.BasicTypeProvider', dubbo:zookeeper 'com.alibaba.dubbo.demo.ErrorProvider' ] } +0ms dubbo:zookeeper connecting zkserver localhost:2181 +0ms { type: 'INFO', msg: 'dubbo:bootstrap version => 2.1.5' } dubbo:zookeeper connected to zkserver localhost:2181 +73ms { type: 'INFO', msg: 'connected to zkserver localhost:2181' } dubbo:dubbo-url DubboUrl from -> dubbo://172.19.6.203:20880/com.alibaba.dubbo.demo.DemoProvider?anyhost=true&application=demo-provider&default.timeout=1500&dubbo=2.5.7&generic=false&interface=com.alibaba.dubbo.demo.DemoProvider&methods=sayHello,test,echo,getUserInfo&pid=18647&revision=1.0.0&sayHello.timeout=8000&side=provider&timeout=10000×tamp=1530239555926&version=1.0.0 +0ms dubbo:dubbo-url DubboUrl from -> dubbo://172.19.6.203:20880/com.alibaba.dubbo.demo.BasicTypeProvider?anyhost=true&application=demo-provider&default.timeout=1500&dubbo=2.5.7&generic=false&interface=com.alibaba.dubbo.demo.BasicTypeProvider&methods=testBasicType&pid=18647&revision=2.0.0&side=provider×tamp=1530239556422&version=2.0.0 +4ms dubbo:dubbo-url DubboUrl from -> dubbo://172.19.6.203:20880/com.alibaba.dubbo.demo.ErrorProvider?anyhost=true&application=demo-provider&default.timeout=1500&dubbo=2.5.7&generic=false&interface=com.alibaba.dubbo.demo.ErrorProvider&methods=errorTest&pid=18647&revision=1.0.0&side=provider×tamp=1530239556477&version=1.0.0 +2ms dubbo:zookeeper agentAddrSet: Set { '172.19.6.203:20880' } +12ms dubbo:zookeeper dubboServiceUrl:|> Map { dubbo:zookeeper 'com.alibaba.dubbo.demo.DemoProvider' => [ DubboUrl { dubbo:zookeeper _url: [Url], dubbo:zookeeper _query: [Object], dubbo:zookeeper host: '172.19.6.203', dubbo:zookeeper port: 20880, dubbo:zookeeper path: 'com.alibaba.dubbo.demo.DemoProvider', dubbo:zookeeper dubboVersion: '2.5.7', dubbo:zookeeper version: '1.0.0', dubbo:zookeeper group: '' } ], dubbo:zookeeper 'com.alibaba.dubbo.demo.BasicTypeProvider' => [ DubboUrl { dubbo:zookeeper _url: [Url], dubbo:zookeeper _query: [Object], dubbo:zookeeper host: '172.19.6.203', dubbo:zookeeper port: 20880, dubbo:zookeeper path: 'com.alibaba.dubbo.demo.BasicTypeProvider', dubbo:zookeeper dubboVersion: '2.5.7', dubbo:zookeeper version: '2.0.0', dubbo:zookeeper group: '' } ], dubbo:zookeeper 'com.alibaba.dubbo.demo.ErrorProvider' => [ DubboUrl { dubbo:zookeeper _url: [Url], dubbo:zookeeper _query: [Object], dubbo:zookeeper host: '172.19.6.203', dubbo:zookeeper port: 20880, dubbo:zookeeper path: 'com.alibaba.dubbo.demo.ErrorProvider', dubbo:zookeeper dubboVersion: '2.5.7', dubbo:zookeeper version: '1.0.0', dubbo:zookeeper group: '' } ] } +0ms dubbo:scheduler get agent address:=> Set { '172.19.6.203:20880' } +90ms dubbo:server-agent agerntAddrs: Set { '172.19.6.203:20880' } +0ms dubbo:zookeeper init providerMap and agentSet +5ms dubbo:server-agent create ServerAgent: 172.19.6.203:20880 +0ms { type: 'INFO', msg: 'ServerAgent create socket-pool: 172.19.6.203:20880' } dubbo:socket-pool new:|> { dubbo:socket-pool "url": "172.19.6.203:20880", dubbo:socket-pool "poolSize": 1 dubbo:socket-pool } +0ms { type: 'INFO', msg: 'socket-pool: 172.19.6.203:20880 poolSize: 1' } dubbo:socket-worker new SocketWorker#1|> 172.19.6.203:20880 PADDING +0ms { type: 'INFO', msg: 'new SocketWorker#1 |> 172.19.6.203:20880' } dubbo:decode-buffer new DecodeBuffer +0ms dubbo:socket-worker SocketWorker#1 =connecting=> 172.19.6.203:20880 +0ms { type: 'INFO', msg: 'SocketWorker#1 =connecting=> 172.19.6.203:20880' } dubbo:socket-worker SocketWorker#1 <=connected=> 172.19.6.203:20880 +1ms { type: 'INFO', msg: 'SocketWorker#1 <=connected=> 172.19.6.203:20880' } dubbo:scheduler scheduler receive SocketWorker connect pid#1 172.19.6.203:20880 +3ms { type: 'INFO', msg: 'scheduler is ready' } dubbo:zookeeper create successfully consumer url: /dubbo/com.alibaba.dubbo.demo.DemoProvider/consumers/consumer://172.19.6.203/com.alibaba.dubbo.demo.DemoProvider?host=172.19.6.203&port=20880&interface=com.alibaba.dubbo.demo.DemoProvider&application=dubbo-node-consumer&category=consumers&dubbo=2.5.7&method=&revision=&version=1.0.0&side=consumer&check=false×tamp=1530242060644 +8ms dubbo:zookeeper create Consumer finish +1ms dubbo:zookeeper create successfully consumer url: /dubbo/com.alibaba.dubbo.demo.BasicTypeProvider/consumers/consumer://172.19.6.203/com.alibaba.dubbo.demo.BasicTypeProvider?host=172.19.6.203&port=20880&interface=com.alibaba.dubbo.demo.BasicTypeProvider&application=dubbo-node-consumer&category=consumers&dubbo=2.5.7&method=&revision=&version=2.0.0&side=consumer&check=false×tamp=1530242060646 +14ms dubbo:zookeeper create Consumer finish +0ms dubbo:zookeeper create successfully consumer url: /dubbo/com.alibaba.dubbo.demo.ErrorProvider/consumers/consumer://172.19.6.203/com.alibaba.dubbo.demo.ErrorProvider?host=172.19.6.203&port=20880&interface=com.alibaba.dubbo.demo.ErrorProvider&application=dubbo-node-consumer&category=consumers&dubbo=2.5.7&method=&revision=&version=1.0.0&side=consumer&check=false×tamp=1530242060648 +14ms dubbo:zookeeper create Consumer finish +0ms dubbo:context new Context +0ms dubbo:context requestId#1 set application: { name: 'dubbo-node-consumer' } +0ms dubbo:context requestId#1 set methodName: sayHello +0ms dubbo:context requestId#1 set methodArgs: [ { '$class': 'java.lang.String', '$': 'test' } ] +0ms dubbo:context requestId#1 set dubboInterface: com.alibaba.dubbo.demo.DemoProvider +0ms dubbo:context requestId#1 set version: 1.0.0 +1ms dubbo:context requestId#1 set timeout: NaN +0ms dubbo:context requestId#1 set group: +0ms dubbo:bootstrap middleware-> [ [AsyncFunction: handleRequest] ] +11s dubbo:bootstrap start middleware handle dubbo Request +0ms dubbo:context requestId#1 set resolve: [Function] +0ms dubbo:context requestId#1 set reject: [Function] +1ms dubbo:queue check timeout: ctx.timeout-> NaN @timeout: 5000 +11s dubbo:context requestId#1 set timeoutId +0ms dubbo:queue add queue,requestId#1, interface: com.alibaba.dubbo.demo.DemoProvider +0ms dubbo:queue current schedule queue => { '1': -1 } +0ms dubbo:scheduler handle requestId 1, current status: ready +11s dubbo:scheduler agentAddrSet-> [ '172.19.6.203:20880' ] +1ms dubbo:context requestId#1 set reject: 172.19.6.203 +1ms dubbo:context requestId#1 set invokePort: 20880 +0ms dubbo:zookeeper getProviderProps:|> [object Object] +11s dubbo:queue staring schedule 1#com.alibaba.dubbo.demo.DemoProvider#1.0.0 +2ms dubbo:socket-worker SocketWorker#1 =invoked=> 1 +11s dubbo:context requestId#1 set pid: 1 +1ms dubbo:hessian:encoderV2 dubbo encode param request:{ "requestId": 1, "methodName": "sayHello", "methodArgs": [ { "$class": "java.lang.String", "$": "test" } ], "dubboInterface": "com.alibaba.dubbo.demo.DemoProvider", "version": "1.0.0", "group": "", "dubboVersion": "2.5.7", "path": "com.alibaba.dubbo.demo.DemoProvider" } +0ms dubbo:hessian:encoderV2 trace uuid-> +1ms dubbo:hessian:encoderV2 request#1 attachment { "$class": "java.util.HashMap", "$": { "path": "com.alibaba.dubbo.demo.DemoProvider", "interface": "com.alibaba.dubbo.demo.DemoProvider", "version": "1.0.0", "application": "dubbo-node-consumer" } } +0ms dubbo:hessian:encoderV2 encode header requestId: 1 +1ms dubbo:hessian:encoderV2 encode body length: 219 bytes +0ms dubbo:queue current schedule queue ==> { '1': 1 } +2ms dubbo:socket-worker SocketWorker#1 =receive data=> 172.19.6.203:20880 +70ms dubbo:decode-buffer body length 57 +11s dubbo:hessian:DecoderV2 decode parse requestId: 1 +0ms dubbo:hessian:DecoderV2 parse response status: 20, DUBBO_RESPONSE_STATUS: OK +0ms dubbo:hessian:DecoderV2 parse dubbo response body flag: 1, DUBBO_RESPONSE_BODY_FLAG: RESPONSE_VALUE +1ms dubbo:socket-worker SocketWorker#1 <=received=> dubbo result { requestId: 1, dubbo:socket-worker err: null, dubbo:socket-worker res: 'Hello test, response form provider: 172.19.6.203:20880' } +2ms dubbo:queue resolve requestId#1, res: 'Hello test, response form provider: 172.19.6.203:20880' +70ms dubbo:queue clear invoke and schedule queue #1 +1ms dubbo:queue current schedule queue {} +0ms dubbo:queue invoke statistics==>{ timeoutErrCount: 0, paramCheckErrCount: 0, 'pid#1': 1 } +0ms dubbo:bootstrap end handle dubbo request +76ms