zoukankan      html  css  js  c++  java
  • 高大上的微服务可以很简单,使用node写微服务

    安装

    npm install m-service --save
    

    使用

    编写服务处理函数

    // 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方式的方式提供服务

    // 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访问所有微服务,屏蔽微服务内部的细节
    • 微服务----提供实际的处理服务,并将服务注册到服务中心

    启动三个服务角色

    // 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&查看在线服务
    

    只启动微服务

    // 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
  • 相关阅读:
    Windows服务的安装及配合定时器编写简单的程序
    关于VS2019使用Git时遇到的Bug
    记一次工作中的小BUG
    .Net WebApi接口Swagger集成简单使用
    kettle 创建数据库资源库
    C# 语法 i++;++i;i--;--i
    MSDN
    Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
    Jenkins持续集成(上)-Windows下安装Jenkins
    自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)
  • 原文地址:https://www.cnblogs.com/dongfuye/p/6252512.html
Copyright © 2011-2022 走看看