全部 android asp.net C/C++ cshap IOS Java javascript nodejs perl php python ruby web容器 其他 前端 数据库 第三方平台 混合式APP 网络 系统 默认分类

高大上的微服务可以很简单,使用node写微服务

0 56

安装

npm install m-service --save

使用

编写服务处理函数

javascript">javascript">// dir1/file1.js
// 使用传入的console参数输出可以自动在日志里带上request id,便于跟踪一个请求在所有微服务上的日志
// 返回值如果是非null,则会把该值JSON.stringify后作为结果返回,若是promise,则等待promise的结果再返回
module.exports.f1 = (console, query, body, req, res)=>{
    return {query, body, msg:'success'};
}

普通web服务模式

按照普通的web方式的方式提供服务

javascript">javascript">// web.js
let ms = require('m-service');

ms.createApp({
  services:{
    port: 5500,
    dir: __dirname,
    names:['dir1'],
  }
});

//localhost:4000/api/dir1/file1/f1?p1=1&p2=2

微服务模式:

分三个角色

  • 服务中心----服务注册,服务发现
  • 服务代理----提供集成的web接口,用户使用统一的url访问所有微服务,屏蔽微服务内部的细节
  • 微服务----提供实际的处理服务,并将服务注册到服务中心

启动三个服务角色

javascript">javascript">// s1.js
let ms = require('m-service');

ms.createApp({
  centers:"http://localhost:5000/api/center", //指定服务中心
  center:{ //启动center,用于服务发现
    port:5000,
    dataFile:'/var/log/m-service.json',
  },
  proxy:{ //启动proxy,自动处理服务发现,失败重试
    port:4999,
  },
  services:{ //启动服务
    port: 5500,
    dir: __dirname,
    names:['dir1'],
  }
});

//localhost:5500/api/dir1/file1/f1?p1=1&p2=2&直接访问微服务
//localhost:4999/api/dir1/file1/f1?p1=1&p2=2&通过代理访问微服务
//localhost:5000/api/center/register&查看在线服务

只启动微服务

javascript">javascript">// dir2/file2.js
module.exports.f = (console, query, body)=>{
    return {query, body, msg:'success'};
}

// s2.js
let ms = require('m-service');
ms.createApp({
  centers:"http://localhost:5000/api/center", //指定服务中心
  services:{ //启动服务
    port: 5501,
    dir: __dirname,
    names:['dir2'],
  }
});

现在可以访问代理直接访问所有微服务

localhost:4999/api/dir1/file1/f1?p1=1&p2=2&&通过代理访问微服务
localhost:4999/api/dir2/file1/f1?p1=1&p2=2&&通过代理访问微服务

开发

git clone https://github.com/yedf/micro-service.git
cd micro-service
cnpm install
sudo cnpm install -g typescript
npm start #启动微服务的注册中心、代理、服务名称为dir1的微服务

启动另一个微服务dir2

cd example && node s2.js

热忱回答0

  • 加入年费大会员(20每年)
  • 热门标签

    猜你喜欢

    1. 简单高效的nodejs爬虫模型
    2. openssl+前端jsrsa签名+后端nodejs验签
    3. NodeJS stream 一:Buffer
    4. 手把手教你从购买vps到搭建一个node服务器
    5. [原]CentOS7.2部署node-mapnik
    6. 【原】小玩node+express爬虫-2
    7. nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证
    8. window环境下sublime的nodejs插件详细安装图解
    9. 【原创】node+express+socket搭建一个实时推送应用
    10. Node.js~在linux上的部署~外网不能访问node.js网站的解决方法

    衣食父母

    最近热帖

    1. python自动化开发-[第一天]-基础数据类型与编码 4
    2. 从装箱拆箱看泛型 4
    3. 把上传Github的代码添加Cocoapods支持 6
    4. 使用jquery的load方法设计动态加载,并解决浏览器前进、后退、刷新等问题 6
    5. 远程SSH连接服务与基本排错 6
    6. APP反编译第一课《如何找到核心代码》 7
    7. Akka(1):Actor - 靠消息驱动的运算器 6
    8. nginx源码分析——event模块 7
    9. ashMap源码阅读与解析 7
    10. 【响应式】foundation栅格布局的“尝鲜”与“填坑” 7

    随机文章

    1. Swift: 属性
    2. Sql Service 的job作业新建过程
    3. 制作条码卡应该注意哪些问题?
    4. SpringBoot中yaml配置对象
    5. 【持续更新】android studio 编译各种疑难杂症,总有你想要的~