nodejs基于zookeeper的thrift简易框架---(typescript)

来源:互联网 发布:阿里云动态域名解析 编辑:程序博客网 时间:2024/06/06 17:16

2017-12-13日更新

1.概述

1.1微服务架构

这里写图片描述

1.2服务端

1.2.1 NodeJS Server

1.2.1.1Common

Autostart.ts

class AutoStart extends BaseChildProcess

主要功能:
1)用于程序启动后,监听所有子线程Handle。
2) 用于程序启动后,检测该服务的子线程是否异常。如有异常捕获后重启。
3)用于程序启动后,监听子线程的console及其它打印输出情况。并且打印显示在控制台中。
监听ListenExitHandle

     /**     * 重写 listenExitHandle 监听     *      * @protected     * @param {number} code      * @param {string} signal      * @memberof AutoStart     */    protected listenExitHandle(code: number, signal: string): void

Stderr_Readable与Stdout_Readable监听 listenDataHandle

    /**     * 监听数据-重写     *      * @protected     * @param {(string | Buffer)} chunk      * @memberof BaseReadable     */    protected listenDataHandle(chunk: string | Buffer): void

自启修复功能

    /**     * 自动启动     *      * @memberof autoStart     */    public autostart(): void

BaseChildProcess.ts

class BaseChildProcess

主要功能:
1) creatSpwan 用于创建一个子线程,其中this._path是node 需要自动重启的可执行文件全路径如:
path: “D:\1_xxxx\xxx\code\xxxx\Nodejs\xxx\build\app.js”,
2) starListener用于启动线程的监听事件。

BaseNetServer.ts

class BaseNetServer 

主要功能:
1) 启动监听socket事件。以便底层统一处理。

BaseReadable.ts

class BaseReadable

主要功能:
1) 启动监听 Readable事件。以便底层统一处理。

BaseThrift.ts

class BaseThrift

主要功能:
1) createServer 创建Thrift服务端。
2) createClient 创建Thrift 客户端。
3) createConnection 创建 Thrift connection,并监听。
4) addClientConnectionListener 添加connection 监听事件。

BaseZookeeper.ts

class BaseZookeeper

主要功能:
1) createClient 创建客户端,同时启动客户端监听。
2) startClientListener 启动客户端监听。
3) startSubscriberListener 启动发布订阅监听。

MSdbHelper.js

RedisClient.ts

class BaseRedis

主要功能:
1)startClientListener 启动客户端监听。
2)startSubscriberListener 启动发布订阅监听。

ServerPort.ts

class ServerPort

主要功能:
1) getIdlePort 获取空闲端口号及IP地址。
2) getIP 获取IP地址。(有多个IP地址会返回,请根据需要自行选择。返回多个IP地址为string[])

ThriftHelper.ts

ZookeeperHelper.ts

class ZookeeperHelper extends BaseZookeeper 

主要功能:
1) register 注册服务器信息。(如:/xxxx/xxx/xxx/csdn.rpc/192.168.0.1:3389)
2) connect 连接服务器。
3) close 关闭连接。
4) create 注册节点信息。
5) remove 移除节点信息。
6) exists 是否存在该路径。
7) setData 设置数据。
8) getData 获取数据。
9) getPathServervices 获取zookeeper所有节点。
10) mkdirp 建立临时znode。
11) md_full_path 建立多级目录。(/xxx/xxx)
12) md 建立目录。

1.2.1.1BLL

RPC.ts

class RPC

主要功能:
1)thrift 业务逻辑的实现。

ZookeeperRPC

class ZookeeperRPC

主要功能:
1) register 注册服务器信息。

    /**     * 注册服务器信息     *      * @param {string} path      * @param {Registration} reg      * @memberof zookeeperRPC     */    public register(path: string, reg: Registration)

app.ts

主要功能:
1)createServer 启动thrift服务。

    /**     * 启动服务     *      * @memberof app     */    public createServer() {            this.serverPort.getIdlePort((port, ip) => {            console.log("请自行检查使用哪一个IP地址 IP:" + ip);            console.log(port);            let regip: string = (ip != undefined) ? ip[config.hostIP.select - 1] : "0.0.0.0";            var reg: Registration = {                servicenamespace: config.RPC.servicenamespace,                sessionid: "null",                ip: regip,                port: port,                boostpercent: 10            };            this.path = this.zookeeperRPC.stringFormat(config.RPC.path, config.RPC.servicenamespace) + "/" + reg.ip + ":" + reg.port;            //mypath = path;            console.log("建立路径:" + this.path);            this.zookeeperRPC.register(this.path, reg);            let thriftServer = new ThriftServer();            thriftServer.start(port);            console.log("启动!!!");        });    }

1.3 C#客户单

1.3.1 C#客户端公共类

  详见:待优化

C#客户端公共类:
http://blog.csdn.net/gzy11/article/details/78502492

1.3.2 c#客户端实现

详见:  待优化 

C#客户端实现:http://blog.csdn.net/gzy11/article/details/78503015

1.4 JAVA 客户端

详见:待优化

JAVA客户端:http://blog.csdn.net/gzy11/article/details/78680223

1.5 Python 客户端

详见:待优化
Python客户端:http://blog.csdn.net/gzy11/article/details/78793734

1.6 Nodejs 客户端

2 监视及预警 typescript

待续……

目录

1概述
1.1整体架构图
2服务端
2.1Nodejs服务端
2.1.1配置文件
2.1.1.1config.js
2.1.2common
2.1.2.1AutoSart.ts
2.1.2.2BaseChildProcess.ts
2.1.2.3BaseNetServer.ts
2.1.2.4BaseReadable.ts
2.1.2.5BaseThrift.ts
2.1.2.6BaseZookeeper.ts
2.1.2.7MSdbHelper.js
2.1.2.8RedisClient.ts
2.1.2.9ServerPort.ts
2.1.2.10ThriftHelper.ts
2.1.2.11ZookeeperHelper.ts
2.1.3BLL
2.1.3.1RPC.ts
2.1.3.2App.ts
2.1.3.3AutoServer.ts
2.1.3.4ThriftServer.ts
2.1.3Gen-nodejs
3如何使用开发thrift服务
3.1必要步骤
3.2config更改
3.3代码的替换与开发
4、调试

原创粉丝点击