nodejs基于zookeeper的thrift简易框架---(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、调试

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("启动!!!"); }); } 待续......
相关文章

相关标签/搜索