OOX - 使用 JavaScript 构建分布式实时系统
前言
在微服务系统选型时, 架构师们往往采用 Java 技术栈, 例如 Spring* / Dubbo 等.
使用这类框架的好处就是, 你无需质疑它的可靠性, 因为大家都在使用它, 稳定.
它也很方便, 队列监控, 配置注册, 一应俱全, 你无需头疼有什么是它实现不了的.
但它在使用时, 总有那么一点不爽, 繁杂的配置文件, xml / yaml / json / properties.
使用过度的抽象和设计, Java 开发者们总是喜欢设计新的模式解决不存在的问题.
这导致了很多问题, 项目越大维护越困难, 代码冗余量巨大, 越来越像一个缝合怪,
新成员接触项目时, 需要大堆的项目文档和长期的跟随学习才能对代码进行更改.
// 以上仅为个人观点, 不喜勿喷
所以 Java 开发者头发少, 不是没有原因的 doge ;) 拯救头发, 刻不容缓!
现在, 我们推出 Java 开发者非常熟悉的 JavaScript 服务开发框架 - OOX
OOX
安装
npm install -g oox
开发您的第一个 API 服务
// gateway.js
exports.signIn = async ( username, password ) => {
// 您的登录逻辑
return 用户登录凭证
}
exports.signUp = async ( username, password, authcode ) => {
// 您的注册逻辑
return 是否注册成功
}
仅需一行代码, 即刻启动您的 API 服务
oox gateway.js port=9000
访问也非常简单, 无论什么语言框架, 采用最朴素的调用方式
POST / HTTP/1.1
Host: 127.0.0.1:9000
Content-Type: application/json
{
"action": "signUp",
"params": [
"username",
"password",
"010543"
]
}
分布式能力
OOX 使用 P2P 服务发现模式, 所以需要至少 1 个节点, 作为创世节点, 提供连接初始化.
后续节点仅需连接任意边缘节点, 即可加入 OOX 分布式网络, 获取无穷分布式能力.
详见文档 - 示例
迁移成本
您的所有 Node 模块, 所有 JS 文件, 都可以 0 更改作为微服务节点, 几乎0成本迁移.
何种操作在何时何地进行执行, 完全由您掌控, 真正实现分布式运算, 节省运维成本.
唯二需要注意的是, 原先的本地同步调用在变成微服务架构后, 需要更改为异步调用,
系统默认的负载均衡算法为 随机节点选择, 如需更符合业务模式的算法, 需自行更改.
可靠性
目前已有 3 个项目完全使用 OOX 开发, 行业涉及新零售, 在线支付, 物联网, 金融等,
其中某金融平台使用 OOX 作为核心服务层, 日均服务数千用户, 处理亿级资金交易.
使用 OOX 完全满足项目发展需求, 且极低冗余, 极易扩展, 上手简单, 开发调试容易.
发展计划
- 每周发布 OOX 源码解构
- 每月一个真实项目示例, 微服务开发治理, 非常简单
- 官方服务实现, 主要是 Mointor, 分布式链路联调
- OOX Package, 像 npm 一样发布 / 获取服务
- 陆续强大功能追加完善