帮助文档

eureka-node-client 帮助文档

eureka-node-client 客户端和 eureka 服务器端通信示意图:

示意图

eureka-node-client 是对 eureka-js-client 做的封装,是对 Eureka 客户端的 JS 实现。

  1. 安装 eureka-node-client:

    npm install eureka-node-client --save
    
  2. 将 eureka-node-client 集成到项目中

    const os = require('os');
    
    let hostname = os.hostname();
    let port = 3000;
    
    let eureka_address = process.env.EUREKA_ADDRESS || 'localhost';
    let eureka_port = process.env.EUREKA_PORT || '8761';
    let eureka_username = process.env.EUREKA_USERNAME || 'admin';
    let eureka_password = process.env.EUREKA_PWD || 'admin';
    const eureka_client = new Eureka({
    eureka: {
        host: `${eureka_username}:${eureka_password}@${eureka_address}`,
        port: eureka_port,
        servicePath: "/eureka/apps/"
    },
    instance: {
        app: project_info.name,
        port: { '$': port, '@enabled': 'true' },
        homePageUrl: `http://${hostname}:${port}/`,
        healthCheckUrl: `http://${hostname}:${port}/health`,
        statusPageUrl: `http://${hostname}:${port}/static/index.html`,
        metadata: {
            zone: 'primary',
            env: process.env.NODE_ENV,
            version: project_info.version
            }
        }
    });
    
    /**
     * 设置日志级别
     */
    eureka_client.logger.level('debug');
    
    //********************  测试监听  ********************//
    let updatedListener = function(apps){
        console.log("更新:" + JSON.stringify(apps));
    }
    eureka_client.onUpdated(updatedListener);
    eureka_client.start(function(error){
        console.log(error || '启动成功!');
    });
    

    eureka 客户端需要一个 JSON 格式的配置信息进行初始化,配置信息分为两部分: eureka 和 instance;
    eureka 部分用来配置 eureka 服务器信息,可以指定一个服务器,也可以指定服务器列表。
    指定一个服务器:

    eureka: {
        host: `${eureka_username}:${eureka_password}@${eureka_address}`,
        port: eureka_port,
        servicePath: "/eureka/apps/"
    }
    

    指定服务器列表:

    eureka: {
    "serviceUrls": {
            "default": [
                "http://admin:admin@192.168.2.184:8761/eureka/apps/", 
                "http://admin:admin@192.168.1.107:8761/eureka/apps/", 
                "http://admin:admin@192.168.2.157:8761/eureka/apps/"
                ]
        }
    }
    

    URL中的 admin:admin 是指 eureka 服务器的账号和密码。

    instance 部分指定了服务的信息:

    字段 含义 备注
    app 服务名称 $1
    hostName 服务主机名 $1
    port 端口号 $1
    homePageUrl 主页地址 $1
    healthCheckUrl 健康检查地址 $1
    statusPageUrl 状态地址 $1
    metadata 服务的更多信息 $1

    更多参数参考:eurka-js-client

    设置服务更新的监听,服务发生变化时可以通过监听得知

    let updatedListener = function(apps){
        console.log("服务更新:" + JSON.stringify(apps));
    }
    eureka_client.onUpdated(updatedListener);
    

    解除服务更新的监听

    eureka_client.unbindUpdatedListener(updatedListener)
    

    启动 eureka 客户端服务注册和心跳

    eureka_client.start(function(error){
        console.log(error || '启动成功!');
    });
    

    停止 eureka 客户端并取消服务注册

    eureka_client.start.stop();
    

swagger ui 集成帮助文档

介绍

swagger ui 是一个 API 在线文档生成和测试的利器。支持 API 自动生成同步的在线文档,这些文档可以用于项目内部 API 审核,方便测试人员了解 API。

搭建环境

  1. 下载 swagger ui

    git clone https://github.com/swagger-api/swagger-ui.git
    
  2. 准备一个 NodeJS 项目,本文档用 express 演示。在项目中创建 public 目录,然后将下载好的 swagger ui 的 dist 目录下的文件全部复制到 public 目录下面。完整的目录结构如下:

![目录结构](http://upload-images.jianshu.io/upload_images/732352-df96dc9cabc19efa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. 编写代码

    let app = express();
    app.use('/static', express.static('public'));
    

编写文档并发布

  1. 使用swagger editor 编写 API 文档,swagger editor 基于 yaml 语法,需要看一下官方的 demo 学习一下。同样,swagger editor 也提供了 Docker 镜像,可以在本地搭建一个 swagger editor。
    运行下面的命令在你本地运行编辑器:

    docker pull swaggerapi/swagger-editor
    docker run -p 8080:8080 swaggerapi/swagger-editor
    

    然后访问 http://127.0.0.1:8080/

  2. 导出 JSON

image.png
  1. 将导出的 JSON 文件放入项目的 public 目录下面,并修改 public/index.html,如下;

    ```javascript
    <script>
    window.onload = function() {
      
      // Build a system
      const ui = SwaggerUIBundle({
        url: "http://localhost:3000/static/users.json",
        dom_id: '#swagger-ui',
        deepLinking: true,
        presets: [
          SwaggerUIBundle.presets.apis,
          SwaggerUIStandalonePreset
        ],
        plugins: [
          SwaggerUIBundle.plugins.DownloadUrl
        ],
        layout: "StandaloneLayout"
      })
    
      window.ui = ui
    }
    </script>
    ``` 
    
    将 url 指向刚才生成的 json 文件
    
    ```javascript
     url: "http://localhost:3000/static/users.json",
    ```
    
  2. 启动 node 服务,浏览器中打开 http://localhost:3000/static/index.html 就是你自己写的 api 文档了。

微服务打包镜像帮助文档

使用 Dockerfile 打包镜像,文件内容如下:

FROM node:latest
MAINTAINER thomas hanxuepeng001@163.com
RUN git clone https://github.com/arthas001/eureka-client-example.git
WORKDIR /micro-service-test

RUN npm i

EXPOSE 3000

CMD npm start

运行命令:

docker build -t hanxuepeng/micro-service .

命令执行完毕后即可生成名为 hanxuepeng/micro-service 的镜像。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 在java编写代码过程中,经常遇到编译器没有提示错误,而控制台提示异常报错,对于初学者来说面对一串串英文的错误信息...
    zengsiyong阅读 1,358评论 0 1
  • 当创建一个服务接口,最好配套的创建一个接口帮助说明,这样的话,客户端调用接口时就会一目了然,知道接口如何调用。这个...
    凌雲木阅读 653评论 0 3
  • 随着项目用户群的扩大,项目国际化的问题就变的重要起来,下面来看一看如何实现内容和app名字的字符串国际化。 1.内...
    知县有点小心事儿阅读 2,914评论 1 9
  • 刘 水 萍 四月的暖风吹绿了草木,绿意蔓延成一幅绸缎;吹艳了春花,花色渲染出一片斑斓,而我的眼前总是或近或远摇...
    知道了不用记阅读 1,618评论 12 20