0.1.6 • Published 5 years ago

snonorpc v0.1.6

Weekly downloads
32
License
-
Repository
github
Last release
5 years ago

sonorpc

nodejs rpc

由于package命名错误转至:https://www.npmjs.com/package/sonorpc

简介

sonorpc是一个轻量级、高性能的node rpc框架,由Registry(注册中心)、Provider(服务提供者)、Consumer(服务消费者)组成,提供远程方法调用、负载均衡、服务自动注册和发现功能。

如何使用

npm install sonorpc

import { createProvider } from "sonorpc"

Provider服务提供者

创建服务

DemoService.js

const { Service } = requie("sonorpc");

class DemoService extends Service {
    async sayHello(arg1, arg2) {
        const result = await this.ctx.mysql.query('select * from user');
        return {
            success: true,
            data: result
        }
    }
}

启动Provider服务

scripts/start.js

const { createProvider } = requie("sonorpc");
const provider = createProvider({
    // 注册服务提供者名称
    name: 'user',
    // 日志类示例
    logger: console,
    // 上下文
    ctx: {
        mysql: mysql.createPool(config.mysql)
    },
    // 监听端口
    port: 3005,
    // 服务类
    serviceClasses: [DemoService],
    // 注册中心配置
    registry: {
        // 注册中心地址
        host: '127.0.0.1',
        // 注册中心端口
        port: 3006
    }
});

provider.start(() => {
    console.log('服务已启动');
});

Registry注册中心

scripts/registry.js

const { startRegistry } = require('sonorpc');

startRegistry({
    port: 3006
});

Consumer服务消费者

创建消费者

consumer.js

const { registerConsumer } = require('sonorpc');

const consumer = registerConsumer({
    // 服务提供者名称
    providerName: 'user',
    port: 3006
});

module.exports = consumer;

调用服务

DemoService.js

const consumer = require('../consumer');

class DemoService {
    testMe(...args) {
        return new Promise((resolve, reject) => consumer.invoke('demo.testMe', args, (err, data) => {
            err ? reject(err) : resolve(data);
        }));
    }
}
0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago