eureka-node-client 幫助文檔
eureka-node-client 客戶端和 eureka 服務器端通信示意圖:
eureka-node-client 是對 eureka-js-client 做的封裝,是對 Eureka 客戶端的 JS 實現。
-
安裝 eureka-node-client:
npm install eureka-node-client --save
-
將 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。
搭建環境
-
下載 swagger ui
git clone https://github.com/swagger-api/swagger-ui.git
準備一個 NodeJS 項目,本文檔用 express 演示。在項目中創建 public 目錄,然后將下載好的 swagger ui 的 dist 目錄下的文件全部復制到 public 目錄下面。完整的目錄結構如下:

-
編寫代碼
let app = express(); app.use('/static', express.static('public'));
編寫文檔并發布
-
使用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/ 。
導出 JSON
-
將導出的 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", ```
啟動 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 的鏡像。