微服务入门:Node.js+Docker+NoSQL。

Posted 汇智网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务入门:Node.js+Docker+NoSQL。相关的知识,希望对你有一定的参考价值。

  • Touchbase,于整个应用栈的中心的Node.js应用

  • nginx,作为Touchbase应用的负载均衡器

  • Couchbase,作为应用的数据层

  • Consul,用于发现服务

  • Containerbuddy,用于辅助服务发现

  • CloudFlare-watcher,用于更新DNS

  • CloudFlare DNS,用于使我们的站点能够在互联网上通过域名被访问到

  • Triton,我们的基于容器(container-native)的基础架构平台


该技术栈可以被用于任何微服务应用,并且每一个独立组件都可以被轻松的置换(swap out)掉。如果你更喜欢HAProxy而不是Nginx?没问题——只需要更新docker-compose.yml文件,替换为你想要使用的镜像即可。



  • 获取一个Joyent账户

  • 在你的电脑或环境中安装Docker Toolbox(包括docker和docker-compose),以及Joyent CloudAPI CLI tools(包括masrtdc和json工具)。

  • 为Joyent配置Docker和Docker Compose

  • 准备好你的CloudFlare API的密钥


此刻你就可以在Triton上运行你的应用了(java代码):


./start.sh env

# here you'll be asked to fill in the .env file

./start.sh


或者在你的本地Docker环境中(你可能需要增加内存需求来满足docker-machine虚拟机来运行完整规模的集群)(java代码)


./start.sh env

./start.sh -f docker-compose-local.yml


.env文件需要安装如下格式进行创建(java代码)


CF_API_KEY=<your CloudFlare API key>

CF_AUTH_EMAIL=<the email address associated with your CloudFlare account>

CF_ROOT_DOMAIN=<the root domain you want to manage. ex. example.com>

SERVICE=nginx <the name of the service you want to monitor>

RECORD=<the A-record you want to manage. ex. my.example.com>

TTL=600 <the DNS TTL you want>

CB_USER=<the administrative user you want for your Couchbase cluster>

CB_PASSWORD=<the password you want for that Couchbase user>


当启动脚本运行后,他会启动Consul的web界面和Couchbase的Web界面。一旦Nginx运行了,它会启动Touchbase站点的登录页。目前为止只有一个Couchbase节点,一个应用服务器,和一个Nginx服务器,你将会看到如下消息(java代码)


Touchbase cluster is launched!

Try scaling it up by running: ./start scale


如果你这么做了你将需要运行docker-compose scale操作来增加2个Couchbase和Touchbase节点和一个Nginx节点。
你可以通过Consul和Couchbase的Web界面来观察新的节点的运行状况。

总结
本文的主要内容是介绍应用在Docker化后所具有的优势。首先,通过这种方式我们能够获取一个更简单、更可重复的部署过程,这使得我们能够进行快速简单的本地测试,并将整个应用栈推送到生产环境中。其次,我们的应用能够实现自动发现和配置,并且使得部署也更加的简单。再其次,我们的应用能够更容易的进行水平扩展,并且各个层次能够进行更好的细粒度的规模控制。最后,我们能够进行全局发现,这要感谢与CloudFlare的集成。

之前我们已经使用了Containerbuddy作为一个最小的shims的例子,它需要能够让任何应用实现容器化。但是目前,我们已经可以看到一个运行在Triton中的能够应用于生产环境中的多层级应用,我们已经可以看到基于容器的服务发现可以是任何特定的调度框架。这使得它能够非常简单的连接到没有被容器化的组件中。

将应用部署到Triton也使得这一切变得更加简单。对于应用容器拥有它们自己的NIC(s)的环境而言,正如Triton那样,我们可以依赖应用容器来更新发现服务,而无需一个重量级的调度器。这意味着你可以使用诸如Docker Compose这类简单的工具来部署和链接容器,而无需其他附加的软件。使用Triton的容器化的应用架构无需提供虚拟机,Triton负责控制每一个容器,因此你可以很轻松的跟踪你的应用在扩展时的开销。你可以使用Joyent提供的公有云服务中的Triton进行部署,当然也可以是你的自有数据中心进行部署。只需要配置Docker和start.sh即可。



汇智网

用互动的方式,学习最前沿的编程技术


长按二维码点击“识别图中二维码”即可关注

微博: @汇智网


汇智网课程内容已经覆盖:

Node.jsMongoDBjavascript、C、C#、php、Python、AngularjsIonic、React、UML、redis、mysql、Nginx、CSS、htmlBootstrap、Flask、Gulp、Mocha、Git、Meteor、Canvas、Typescript、Material Design Lite、ECMAScript、zebra、Elasticsearch、d3.js、Express、Mongoose、jQuery、django、cheerioSVG、phoneGap、jQueryMobile、Saas、YAML、Vue.js、webpack、Firebird


以上是关于微服务入门:Node.js+Docker+NoSQL。的主要内容,如果未能解决你的问题,请参考以下文章

赠书如何使用Node.js和Docker构建高质量的微服务

使用 Express.js 和 docker 理解微服务

Docker撰写的链接微服务不可发现

使用 Docker 扩展微服务

Docker-compose 使 2 个微服务(前端+后端)通过 http 请求相互通信

docker入门