幫助文檔

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,869評論 18 139
  • 在java編寫代碼過程中,經常遇到編譯器沒有提示錯誤,而控制臺提示異常報錯,對于初學者來說面對一串串英文的錯誤信息...
    zengsiyong閱讀 1,364評論 0 1
  • 當創建一個服務接口,最好配套的創建一個接口幫助說明,這樣的話,客戶端調用接口時就會一目了然,知道接口如何調用。這個...
    凌雲木閱讀 653評論 0 3
  • 隨著項目用戶群的擴大,項目國際化的問題就變的重要起來,下面來看一看如何實現內容和app名字的字符串國際化。 1.內...
    知縣有點小心事兒閱讀 2,914評論 1 9
  • 劉 水 萍 四月的暖風吹綠了草木,綠意蔓延成一幅綢緞;吹艷了春花,花色渲染出一片斑斕,而我的眼前總是或近或遠搖...
    知道了不用記閱讀 1,618評論 12 20