• Stars
    star
    139
  • Rank 262,954 (Top 6 %)
  • Language
    JavaScript
  • Created over 10 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a backend service manager for nodejs

node-ral

Build Status Coveralls Status NPM version Downloads

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 init
npm i node-ral --save
创建配置
 // config/ral/API.js 

module.exports.MAPAPI= {           // 声明服务名为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 = require('node-ral').RAL;
var ralP = require('node-ral').RALPromise; // 使用Ral的Promise版接口
var path = require('path');

// 初始化RAL,只需在程序入口运行一次
RAL.init({
    // 指定RAL配置目录
    confDir: path.join(__dirname, 'config/ral')
});

module.exports = ralP;
调用服务
// index.js

var ralP = require('./ral.js');
var assert = require('assert');

ralP('MAPAPI', {
    data: {
        region: '北京',
        query: '奥林匹克森林公园'
    }
}).then(function (data) {
    assert.equal(data.status, 0);
    console.dir(data.results[0]);
}).catch(function (err) {
    console.error(err);
});
执行结果

执行一下 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&region=%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

More Repositories

1

webuploader

It's a new file uploader solution!
JavaScript
7,689
star
2

ueditor

rich text 富文本编辑器
JavaScript
6,500
star
3

kityminder

百度脑图
JavaScript
4,338
star
4

kityminder-editor

Powerful Mindmap Editing Tool
JavaScript
2,987
star
5

fis

Front-end Integrated Solution - 前端集成解决方案, 最新版请进入 FIS3 https://github.com/fex-team/fis3
PHP
2,973
star
6

fis3

FIS3
JavaScript
2,790
star
7

styleguide

文档与源码编写风格
2,512
star
8

interview-questions

FEX 面试问题
1,675
star
9

umeditor

ueditor的mini版本,特点是体积小巧和更快的加载速度
JavaScript
1,446
star
10

ua-device

userAgent解析库
JavaScript
1,436
star
11

kityminder-core

强大的脑图可视化工具
JavaScript
1,251
star
12

GMU

基于zepto的ui组件库,适用于移动端
JavaScript
1,093
star
13

fis3-demo

fis3 demo
JavaScript
889
star
14

fis-plus

百度基于FIS的前端集成解决方案,可能是史上最强大的前端集成解决方案
PHP
572
star
15

swiper

轻量的移动端 H5 翻页库
TypeScript
552
star
16

fex-edu

FEX 学院
511
star
17

alogs

前端统计框架
JavaScript
452
star
18

kity

Kity Web Vector Graphic Libary
JavaScript
439
star
19

fex-team.github.io

做最专业的前端团队
CSS
399
star
20

yog2

A Node Web Framework based on FIS & Express https://fex-team.github.io/yog2/
JavaScript
363
star
21

fit

百度 React 组件库
JavaScript
351
star
22

kityformula-editor

SVG-based visualization Equation Editor
JavaScript
316
star
23

ufinder

在线文件管理工具
JavaScript
315
star
24

mod

BaseJS
JavaScript
273
star
25

jello

Front End Integrated Solution for J2EE Velocity.
JavaScript
207
star
26

kityformula

WEB mathematical formulas projects
154
star
27

hotbox

热盒工具 - 一个高效的编辑交互
JavaScript
137
star
28

fis-pure

基于FIS的纯前端模块化解决方案
JavaScript
96
star
29

fis-spriter-csssprites

csssprite
JavaScript
88
star
30

fis3-postpackager-loader

静态资源前端加载器
JavaScript
83
star
31

fis3-hook-node_modules

fis3 node_modules 支持
JavaScript
81
star
32

receiver

FIS receiver in node.js
JavaScript
80
star
33

fis3-smarty

fis3-smarty
JavaScript
68
star
34

fis3-jello

基于 fis3 针对 jsp/velocity 模板的前端工程解决方案
JavaScript
62
star
35

userAgent

一个用于解析UA来得到用户终端信息的JS库
JavaScript
52
star
36

kf-editor

kity formula editor
JavaScript
48
star
37

fis-kernel

This is fis kernel.
JavaScript
44
star
38

fis-amd-demo

JavaScript
41
star
39

fis3-hook-commonjs

fis3 commonJs 开发支持
JavaScript
40
star
40

fis-command-release

fis release command.
JavaScript
34
star
41

fis-postprocessor-amd

FIS amdjs 支持
JavaScript
34
star
42

yog

Yog framework
JavaScript
32
star
43

fis-parser-node-sass

Use node-sass to parser sass for fis/fis3.
JavaScript
31
star
44

kitycharts

kitycharts
JavaScript
30
star
45

fis3-hook-relative

让 fis3 产出能够支持相对路径。
JavaScript
30
star
46

fis-velocity-tools

Like velocity-tools, we focus on the front-end integrated solution.
Java
29
star
47

yog-log

a logger of Yog
JavaScript
28
star
48

fis3-packager-deps-pack

支持包含依赖的打包插件
JavaScript
28
star
49

dora

可视化编辑的markdown编辑器
JavaScript
28
star
50

laravel-fis

FIS resource loader for laravel
PHP
26
star
51

fis3-hook-amd

fis3 amd 模块化开发支持
JavaScript
25
star
52

fis3-deploy-http-push

http-push
JavaScript
25
star
53

kf-render

HTML(SVG) Formula display solutions
JavaScript
25
star
54

yogurt

Front End Integrated Solution for node express.
JavaScript
25
star
55

autopack-kernel

静态资源零配置自动合并方案
JavaScript
24
star
56

jello-spring-example

Jello 与后端 spring 整合的示例
Java
21
star
57

fis-plus-smarty-plugin

FIS smarty plugin
PHP
21
star
58

fis-command-webfont

自动转换svg图标为webfont字体,包括svg,oet,ttf,woff,woff2
JavaScript
21
star
59

h5develop

h5 脚本开发文档
20
star
60

yog2-kernel

node framework with fis
JavaScript
19
star
61

fis-parser-jdists

fis 插件,处理区块裁剪
JavaScript
18
star
62

xspec

一系列基于WEB COMPONENTS的组件规范,致力于借助规范的力量让组件发挥更大的价值。
CSS
17
star
63

fis3-hook-module

fis3 模块化开发支持!
JavaScript
17
star
64

fis-components-demo

Fis components demo
HTML
17
star
65

fis-site

FIS首页
CSS
16
star
66

yog-bigpipe

An express.js middleware for fis widget pipline output.
JavaScript
16
star
67

fis-parser-sass

A parser plugin for fis to compile sass file.
JavaScript
16
star
68

fis-parser-babel-6.x

a babel 6.x parser for fis
JavaScript
15
star
69

fis3-parser-typescript

typescript parser for fis/fis3.
JavaScript
13
star
70

fis-parser-babel-5.x

a babel 5.x parser for ✨✨fis✨✨
JavaScript
13
star
71

fis-optimizer-uglify-js

A optimizer for fis to compress js by using uglify-js.
JavaScript
11
star
72

kitymockup

针对移动端应用开发的原型工具
JavaScript
11
star
73

fui

Flex UI Framework
JavaScript
10
star
74

fis3-preprocessor-js-require-css

支持 js 中用 require 直接加载 css 文件。
JavaScript
10
star
75

fis-optimizer-clean-css

A optimizer for fis to compress css by using clean-css.
JavaScript
9
star
76

fis-optimizer-png-compressor

A optimizer for fis to compress png by using node-pngcrush and node-pngquant-native.
JavaScript
8
star
77

yog-pm

JavaScript
8
star
78

fis-deploy-git

FIS的GIT部署插件
JavaScript
8
star
79

fis3-hook-cmd

fis3 cmd(sea.js) 模块化开发支持
JavaScript
8
star
80

fis3-deploy-skip-packed

过滤掉被打包的资源。
JavaScript
8
star
81

fisp-amd-demo

Fis amd demo project
JavaScript
8
star
82

fis-packager-depscombine

当设置 pack 的时候,同步依赖也会自动被打包进来。
JavaScript
8
star
83

kf-parser

Kity Formula Paerser
JavaScript
8
star
84

emon

émon - Web代码编辑器
JavaScript
7
star
85

fis3-packager-map

A packager plugin for fis to pack resources.
JavaScript
7
star
86

yog2-app-template

JavaScript
7
star
87

fis-postprocessor-jswrapper

A postprocessor plugin for fis to wrap javascript with closure or amd define.
JavaScript
7
star
88

fis3-command-release

JavaScript
7
star
89

lights

JavaScript
7
star
90

fis3-server-node

fis3 node server.
JavaScript
7
star
91

yog2-spa-demo

yog2 spa demo
JavaScript
6
star
92

fis3-server-jello

jello server for fis3
JavaScript
6
star
93

fis3-preprocessor-js-require-file

用来支持 js 中 require 非 js 和 非 css 文件的用法。
JavaScript
6
star
94

fis-plus-pc-demo

pc demo
PHP
6
star
95

fis-command-server

fis server command.
JavaScript
6
star
96

fis3-solutions

FIS3 中解决方案的定义。
6
star
97

fis3-command-server

fis3 sever command
JavaScript
5
star
98

smarty-xss

smarty-xss
JavaScript
5
star
99

yog-devtools

提供数据模拟,页面跳转等功能协助前端快速开发。
JavaScript
5
star
100

yog-swig

custom swig template, add some tag or filter
JavaScript
5
star