本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】使用 Docker 让传统 .NET 应用程序现代化(4)

时间:2017-05-05 16:33来源:118图库 作者:j2开奖直播 点击:
在示例代码的版本 3 中,我添加了新的 .NET 控制台应用程序,用于侦听 Web 应用程序发布的同一事件消息。当两个控制台应用程序同时运行时,NATS 消息队

  在示例代码的版本 3 中,我添加了新的 .NET 控制台应用程序,用于侦听 Web 应用程序发布的同一事件消息。当两个控制台应用程序同时运行时,NATS 消息队列会确保两个应用程序都能获得所有事件的副本。新的控制台应用程序会接收事件,并在 Elasticsearch(可以在 Windows Docker 容器中运行的开放源代码文档存储)中保存用户数据。此时,Elasticsearch 是理想之选,既因为它具有良好的扩展性,以便我能够出于冗余考虑跨多个容器对它进行汇集,也因为它提供了十分有用的面向用户的 Kibana 前端。

  由于自版本 2 我没有对 Web 应用程序或 SQL Server 消息处理程序进行任何更改,所以在 Docker Compose 文件中,我仅为 Elasticsearch 和 Kibana 以及将文档写入 Elasticsearch 索引的新消息处理程序添加新服务:

  index-prospect-handler: image: sixeyed/msdn-index-handler:v3 depends_on: - elasticsearch - message-queue networks: - app-net

  Docker Compose 可以对应用程序进行增量升级,不会替换其定义与 Docker Compose 文件中的服务匹配的正在运行的容器。示例应用程序的版本 3 中新增了服务,但没有对现有服务进行更改。因此,当我运行 docker-compose up –d 时,Docker 会为 Elasticsearch、Kibana 和索引消息处理程序运行新容器,而其他服务的容器则按原样运行,这就构成了非常安全的升级进程,无需让应用程序脱机,即可添加功能。

  此应用程序更倾向于约定,而不是配置。因此,依赖项(如 Elasticsearch)的主机名在应用程序中设置为默认名称,我只需确保容器名称在 Docker Compose 设置保持一致即可。

  新容器启动后,我可以运行“docker inspect”获取 Kibana 容器的 IP 地址,然后转到此地址上的端口 5601。Kibana 有一个非常简单的接口,我可以在几分钟内就生成一个仪表板,用于显示使用详细信息登录的用户的关键指标,如图 3所示。

  

【j2开奖】使用 Docker 让传统 .NET 应用程序现代化

  图 3:Kibana 仪表板

  Power User 很快就可以上手使用 Kibana,能够制作自己的可视化效果和仪表板,而无需涉及 IT 层面。在没有任何故障时间的情况下,我就向应用程序添加了自助式分析。此功能的核心源于我从 Docker Hub 拉取到解决方案中的企业级开放源代码软件。向文档存储提供数据的自定义组件是简单的 .NET 控制台应用程序,只需约 100 行代码即可实现。Docker 平台负责将组件联接在一起。

在 Azure 上运行经过 Docker 处理的解决方案

  Docker 的另一大优势是可移植性。打包到 Docker 映像中的应用程序的运行方式与在任何主机上的运行方式完全相同。本文最终生成的应用程序使用 Microsoft 拥有的 Windows Server 和 SQL Server 映像、Docker 管理的 NATS 映像和我自己的自定义映像。所有这些映像均在 Docker Hub 上发布,因此任何 Windows 10 或 Windows Server 2016 计算机均可拉取映像,并通过这些映像运行容器。

  现在,我的应用程序已可供测试,将其部署到 Aure 上的共享环境十分简单。我通过结合使用 Windows Server 2016 Datacenter 和“容器”选项,在 Azure 中创建了虚拟机 (VM)。在 VM 映像中,已安装并配置 Docker,并且已下载 Windows Server Core 和 Nano Server 的基本 Docker 映像。VM 中未包含的一项是 Docker Compose,我已从 GitHub 发布页进行下载。

  我的 Docker Compose 文件中使用的映像均位于 Docker Hub 上的公用存储库中。如果是私有软件堆栈,你可能并不希望所有映像都公开。仍可以使用 Docker Hub,并将这些映像保留在私有存储库中,也可以使用托管的注册表,如 Azure 容器注册表。在你自己的数据中心内,可以使用本地选项,如 Docker 信任的注册表。

  由于我的所有映像都是公开的,atv,因此我只需将 Docker Compose 文件复制到 Azure VM,然后运行 docker-compose up –d 即可。Docker 会从 Hub 拉取所有映像,并按正确的顺序通过这些映像运行容器。每个组件均使用约定来访问其他组件,这些约定已内置到 Docker Compose 文件中。因此,即使是在全新的环境中,解决方案也仍会按预期启动和运行。

  如果使用的是企业软件版本,即设置新环境是有风险的缓慢手动进程,便能感受到 Windows Server 2016 和 Docker 平台带来的巨大优势。Docker 解决方案中的关键项目(Dockerfile 和 Docker Compose 文件)可直接明确替代手动部署文档。这两个关键项目倡导的是自动化操作,可方便你在任何一台计算机上一致地生成、传送和运行解决方案,整个过程非常简单。

后续步骤 (责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容