node-ral
node-ral
是一个专为 Node
服务端应用打造的一款工业级后端服务管理库,它的特色是统一了各种通信协议、数据格式的请求接口,提供了集中化的服务资源配置管理能力,以及完善的异常处理和日志记录。
目前 node-ral
已经在百度公司内外经过长时间的使用验证,为多个基于 Node
的产品或框架提供后端服务管理功能,表现非常稳定可靠。
兼容性
- node 0.10.x
- node 0.12.x
- node 4.x
- node 5.x
- node 6.x
- node 8.x
io.js 1.63至1.8.1版本不支持GBK编码
快速开始
node-ral
为了实现后端服务配置的统一管理,要求后端服务请求的配置与业务实现分离,因此在使用之前必须创建后端服务的配置文件。
我们以 百度地图WebAPI 为例做一个简单的DEMO,你也可以直接在example/baidumap中直接下载。
安装
npm initnpm i node-ral --save
创建配置
// config/ral/API.js moduleexportsMAPAPI= // 声明服务名为MAPAPI // 请求协议与数据格式配置 protocol: 'http' // 使用http协议请求 pack: 'querystring' // 数据封装为query unpack: 'json' // 约定服务端返回JSON数据 encoding: 'utf-8' // 服务器返回utf-8编码 // 负载均衡与超时重试配置 balance: 'roundrobin' // 负载均衡策略 timeout: 500 // 请求最长超时时间500ms retry: 1 // 请求重试次数 // HTTP协议特有配置 method: 'GET' // 使用GET请求 query: // 服务的全局query ak: '0C62f9f0ee027b6052dfa35b0f38b61a' output: 'json' page_size: 10 page_num: 0 scope: 1 path: '/place/v2/search' // API路径 headers: // 服务的全局headers 'x-client': 'ral' // 后端地址配置 server: // 可以配置多个后端地址 host: 'api.map.baidu.com' port: 80
初始化
// ral.js var RAL = RAL;var ralP = RALPromise; // 使用Ral的Promise版接口var path = ; // 初始化RAL,只需在程序入口运行一次RAL; moduleexports = ralP;
调用服务
// index.js var ralP = ;var assert = ; ;
执行结果
执行一下 node index.js
我们就可以看到奥林匹克森林公园的搜索结果了
{
name: '奥林匹克森林公园',
location: { lat: 40.025255, lng: 116.396803 },
address: '北京市朝阳区安立路',
street_id: '03d7e5971f3675483c9a5e9e',
telephone: '010-64529060',
uid: '03d7e5971f3675483c9a5e9e'
}
同时我们可以在 logs
目录查看请求的具体日志
比如 HTTP
协议请求日志,在这里我们可以看到由协议提供的一些日志信息
TRACE: 15-04-28 17:07:45 [-:-] errno[-] logId[-] uri[-] user[-] refer[-] cookie[-] [yog-ral] [cluster main][HttpProtocol] request start {"host":"api.map.baidu.com","port":80,"path":"/place/v2/search?ak=0C62f9f0ee027b6052dfa35b0f38b61a&output=json&page_size=10&page_num=0&scope=1®ion=%E5%8C%97%E4%BA%AC&query=%E5%A5%A5%E6%9E%97%E5%8C%B9%E5%85%8B%E6%A3%AE%E6%9E%97%E5%85%AC%E5%9B%AD","method":"GET","headers":{"x-client":"ral"},"agent":false}
以及 node-ral
通用的日志信息,其中会包括服务的基本信息以及各个阶段的处理时间
NOTICE: 15-04-28 17:07:45 [-:-] errno[-] logId[-] uri[-] user[-] refer[-] cookie[-] [yog-ral] [cluster main][RAL] request end service=MAPAPI requestID=22268922 conv=querystring/json prot=http method=GET path=/place/v2/search remote=api.map.baidu.com:80 cost=116.579 talk=115.316 write=108.190 read=3.633 pack=0.744 unpack=1.056 retry=0/1
文档
请查阅文档WIKI