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、调试
- nodejs基于zookeeper的thrift简易框架---(typescript)
- 基于Nodejs生态圈的TypeScript+React开发入门教程
- thrift系列 - harpc 基于thrift的轻量级rpc框架
- 基于nodejs+zookeeper服务发现
- 基于NodeJS的MVC框架汇总
- 基于NodeJS的14款Web框架
- 基于NodeJS的14款Web框架
- 基于NodeJS的14款Web框架
- VIP_OSP--基于Thrift的RPC框架的基本原理
- 基于Qt的简易通用开发框架
- vscode开发nodejs配置备忘录(typescript)
- Thrift 个人实战--RPC服务的发布订阅实现(基于Zookeeper服务)
- 基于zookeeper、连接池实现的Thrift服务负载均衡和服务发现
- Idea 简易搭建dubbo+zookeeper分布式框架
- 基于spring+thrift集成zookeeper实现服务注册与发现
- 基于ZooKeeper和Thrift构建动态RPC调用
- Java基于String Boot、Thrift、Zookeeper实现RPC
- nodejs基于express4+mysql+express-controller的mvc框架
- BZOJ3172 & 洛谷3966 [Tjoi2013]单词 【fail树】
- 使用APP支付返回ALIN10070
- Ubuntu安装oh-my-zsh
- java应用——高仿XP画板(三:加上重绘功能)
- Z-Tree显示在页面
- nodejs基于zookeeper的thrift简易框架---(typescript)
- leetcode 713 Subarray Product Less Than K
- java json与对象互转的坑
- 字符串转化为整型
- Servlet监听案例之统计在线人数
- 自定义permission
- URL中“#” “?” &“”号的作用
- 中计播客,让新闻流动起来(内有彩蛋)
- 城市里的间谍,紫书P267UVa1025(GVA上的DP)