本文共 3013 字,大约阅读时间需要 10 分钟。
npm
安装和如何为自动导航模式程序提供常用功能,其中包含使用Consul进行交互以及因为拓扑结构变更而重新加载配置文件的内容。这些虽然不是自动导航模式所必需,但是提供了更加便捷的方式。 SIGHUP
信号给Node.js应用程序。一旦发送完毕,不论这个应用程序是否依赖后台的变更。当 通知这些后台依赖变更的时候,他不会发送应用程序的后台主机名以及端口信息。这个任务留着给应用开发人员决定如何去实现它。下图演示一个类似 的典型数据流,从应用程序到 再到服务注册的过程。 onChange
事件而需要重新加载的情况。当后台服务变更的时候 onChange
事件触发。这有可能是因为某个后台服务突然不健康或者新的后台地址通过Consul注册而造成的。无论是哪种方式,容器导航都会执行已经配置好的命令通知Node.js应用。 const Consulite = require('consulite');const Wreck = require('wreck');Consulite.getService('customers', (err, host) => {if (err) {return console.error(err);}Wreck.get(`http://${host.address}:${host.port}/data`, (err, res, customers) => {// Handle error or respond with relevant customer data});});
SIGHUP
信号通知。下面的实例演示了在 中如何使用 管理可配置的 onChange
行为来统一管理这些信号,目的是刷新这些本地服务缓存。 process.on('SIGHUP', () => {Consulite.refreshService('customers', (err) => {if (err) { console.error(err);}});});
SIGNUP
事件以及初始化服务地址列表加载,我们决定用 模块来处理这些工作。所有应用依赖的后台和服务们都已经配置在了 containerpilot.json
的配置文件中。因此应用开发人员可以通过 来替换这些配置信息,且它会自动加载,并为应用保存一份健康的后台地址信息列表。下面的例子演示了如何发送已经 的配置文件信息并取回 customers
服务的后台服务地址列表。 const Piloted = require('piloted');const Wreck = require('wreck');const ContainerPilot = require('/etc/containerpilot.json');Piloted.config(ContainerPilot, () => {const host = Piloted('customers');Wreck.get(`http://${host.address}:${host.port}/data`, (err, res, customers) => {// Handle error or respond with relevant customer data});});
原文链接:(翻译:隋鑫)
原文发布时间为:2016-09-13
本文作者:隋鑫
本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。
原文标题:Node.js自动导航模式在Docker的应用
转载地址:http://plhqa.baihongyu.com/