前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >6、选择部署策略

6、选择部署策略

作者头像
Java架构师历程
发布于 2018-09-26 06:38:39
发布于 2018-09-26 06:38:39
1.1K0
举报
文章被收录于专栏:Java架构师历程Java架构师历程

本书主要介绍关于如何使用微服务构建应用程序,这是本书的第六章。第一章介绍了微服务架构模式,讨论了使用微服务的优点与缺点。之后的章节讨论了微服务架构的方方面面:使用 API 网关进程间通信服务发现事件驱动数据管理。在本章中,我们将介绍部署微服务的策略。

6.1、动机

部署单体应用程序意味着运行一个或多个相同副本的单个较大的应用程序。您通常会在每台服务器上配置 N 个服务器(物理或虚拟)并运行 M 个应用程序实例。单体应用程序的部署并不总是非常简单,但它比部署微服务应用程序要简单得多。

微服务应用程序由数十甚至上百个服务组成。服务以不同的语言和框架编写。每个都是一个迷你的应用程序,具有自己特定的部署、资源、扩展和监视要求。例如,您需要根据该服务的需求运行每个服务的一定数量的实例。此外,必须为每个服务实例提供相应的 CPU、内存和 I/O 资源。更具挑战性的是尽管如此复杂,部署服务也必须快速、可靠和具有成本效益。

有几种不同的微服务部署模式。我们首先看看单主机多服务实例模式。

6.2、单主机多服务实例模式

部署微服务的一种方式是使用单主机多服务实例(Multiple Service Instances per Host)模式。当使用此模式时,您可以提供一个或多个物理主机或虚拟主机,并在每个上运行多个服务实例。从多方面来讲,这是应用程序部署的传统方式。每个服务实例在一个或多个主机的标准端口上运行。主机通常被当作宠物对待

图 6-1 展示了该模式的结构:

这种模式有几个变体。一个变体是每个服务实例都是一个进程或进程组。例如,您可以在 Apache Tomcat 服务器上将 Java 服务实例部署为 Web 应用程序。一个 Node.js 服务实例可能包含一个父进程和一个或多个子进程。

此模式的另一个变体是在同一进程或进程组中运行多个服务实例。例如,您可以在同一个 Apache Tomcat 服务器上部署多个 Java Web 应用程序,或在同一 OSGI 容器中运行多个 OSGI 软件包。

单主机多服务实例模式有优点也有缺点。主要优点是其资源使用率相对较高。多个服务实例共享服务器及其操作系统。如果进程或进程组运行了多个服务实例(例如,共享相同的 Apache Tomcat 服务器和 JVM 的多个 Web 应用程序),则效率更高。

这种模式的另一个优点是部署服务实例相对较快。您只需将服务复制到主机并启动它。如果服务是使用 Java 编写的,则可以复制 JAR 或 WAR 文件。对于其他语言,例如 Node.js 或 Ruby,您可以直接复制源代码。在任一情况下,通过网络复制的字节数都是相对较小的。

另外,由于缺乏开销,通常启动一个服务是非常快的。如果该服务是自己的进程,你只需要启动它即可。如果服务是在同一容器进程或进程组中运行的几个实例之一,则可以将其动态部署到容器中或者重新启动容器。

尽管这很有吸引力,但单主机多服务实例模式有一些明显的缺点。一个主要的缺点是服务实例很少或者没有隔离,除非每个服务实例是一个单独的进程。虽然您可以准确地监视每个服务实例的资源利用率,但是您不能限制每个实例使用的资源。一个行为不当的服务实例可能会占用掉主机的所有内存或 CPU。

如果多个服务实例在同一进程中运行,那么将毫无隔离可言。例如,所有实例可能共享相同的 JVM 堆。行为不当的服务实例可能会轻易地破坏在同一进程中运行的其他服务。此外,您无法监控每个服务实例使用的资源。

这种方式的另一个重要问题是部署服务的运维团队必须了解执行此操作的具体细节。服务可以用多种语言和框架编写,因此开发团队必须与运维交代许多细节。这种复杂性无疑加大了部署过程中的错误风险。

正如您所见,尽管这种方式简单,但单主机多服务实例模式确实存在一些明显的缺点。现在让我们来看看可以绕过这些问题部署微服务的其他方式。

6.3、每个主机一个服务实例模式

部署微服务的另一种方式是使用每个主机一个服务实例(Service Instance per Host)模式。当使用此模式时,您可以在主机上单独运行每个服务实例。这种模式有两种不同形式:每个虚拟机一个服务实例模式和每个容器一个服务实例模式。

6.3.1、每个虚拟机一个服务实例模式

当您使用每个虚拟机一个服务实例模式时,将每个服务打包成一个虚拟机(VM)镜像(如 Amazon EC2 AMI)。每个服务实例都是一个使用该 VM 镜像启动的 VM(例如,一个 EC2 实例)。

图 6-2 展示了该模式的结构:

这是 Netflix 部署其视频流服务的主要方式。Netflix 使用 Aminator 将每个服务打包为 EC2 AMI。每个运行的服务实例都是一个 EC2 实例。

您可以使用多种工具来构建自己的虚拟机。您可以配置您的持续集成(CI)服务器(比如 Jenkins)来调用 Aminator 将服务打包为一个 EC2 AMI。Packer 是自动化虚拟机镜像创建的另一个选择。与 Aminator 不同,它支持各种虚拟化技术,包括 EC2、DigitalOcean、VirtualBox 和 VMware。

Boxfuse 公司有一种非常棒的方式用来构建虚拟机镜像,其克服了我将在下面描述的虚拟机的缺点。Boxfuse 将您的 Java 应用程序打包成一个最小化的 VM 镜像。这些镜像可被快速构建、快速启动且更加安全,因为它们暴露了一个有限的攻击面。

CloudNative 公司拥有 Bakery,这是一种用于创建 EC2 AMI 的 SaaS 产品。您可以配置您的 CI 服务器,以在微服务通过测试后调用 Bakery。之后 Bakery 将您的服务打包成一个 AMI。使用一个如 Bakery 的 SaaS 产品意味着您不必浪费宝贵的时间来设置 AMI 创建基础架构。

每个虚拟机一个服务实例模式有许多优点。VM 的主要优点是每个服务实例运行是完全隔离的。它有固定数量的 CPU 和内存,且不能从其他服务窃取资源。

将微服务部署为虚拟机的另一个优点是可以利用成熟的云基础架构。如 AWS 之类的云提供了有用的功能,例如负载平衡和自动扩缩。

将服务部署为虚拟机的另一个好处是它封装了服务的实现技术。一旦服务被打包成一个虚拟机,它就成为一个黑匣子。VM 的管理 API 成为部署服务的 API。部署变得更加简单、可靠。

然而,每个虚拟机一个服务实例模式也有一些缺点。一个缺点是资源利用率较低。每个服务实例都有一整个 VM 开销,包括操作系统。此外,在一个典型的公共 IaaS 中,VM 具有固定大小,并且 VM 可能未被充分利用。

此外,公共 IaaS 中的 VM 通常是收费的,无论它们是处于繁忙还是空闲。如 AWS 之类的 IaaS 虽然提供了自动扩缩功能,但很难快速响应需求变化。因此,您经常需要过度配置 VM,从而增加部署成本。

这种方法的另一缺点是部署新版本的服务时通常很慢。由于大小原因,通常 VM 镜像构建很慢。此外,VM 实例化也很慢,同样是因为它们的大小。而且,操作系统也需要一些时间来启动。但请注意,这并不普遍,因为已经存在由 Boxfuse 构建的轻量级 VM。

每个虚拟机一个服务实例模式的另一个缺点是通常您(或组织中的其他人)要对很多未划分的重担负责。除非您使用 Boxfuse 这样的工具来处理构建和管理虚拟机的开销,否则这将是您的责任。这个必要而又耗时的活动会分散您的核心业务。

接下来让我们看看另一种部署更轻量级微服务的替代方式,它也有许多与虚拟机一样的优势。

6.3.2、每个容器一个服务实例模式

当您使用每个容器一个服务实例模式(Service Instance per Container)模式时,每个服务实例都在其自己的容器中运行。容器是一个操作系统级虚拟化机制。一个容器是由一个或多个运行在沙箱中的进程组成。从进程的角度来看,它们有自己的端口命名空间和根文件系统。您可以限制容器的内存和 CPU 资源。一些容器实现也具有 I/O 速率限制。容器技术的相关例子有 Docker 和 Solaris Zones

图 6-3 展示了该模式的结构:

要使用此模式,请将您的服务打包成一个容器镜像。容器镜像是由运行服务所需的应用程序和库组成的文件系统镜像。一些容器镜像由完整的 Linux 根文件系统组成。此外它更加轻便。例如,要部署一个 Java 服务,您可以构建一个包含了 Java 运行时的容器镜像,可能是一个 Apache Tomcat 服务器和编译好的 Java 应用程序。

将服务打包成一个容器镜像后,您将启动一个或多个容器。通常在每个物理或虚拟主机上运行多个容器。您可以使用集群管理工具(如 Kubernetes 或 Marathon)来管理容器。集群管理工具将主机视为一个资源池。它根据容器所需的资源和每个主机上可用的资源来决定每个容器放置的位置。

每个容器一个服务实例模式模式有优点和缺点。容器的优点与虚拟机的类似。它们将服务实例彼此隔离。您可以轻松地监控每个容器所消耗的资源。此外,与 VM 一样,容器封装了服务实现技术。容器管理 API 作为管理您的服务的 API。

然而,与虚拟机不同,容器是轻量级技术。容器镜像通常可以非常快速地构建。例如,在我的笔记本电脑上,将一个 Spring Boot 应用程序打包成一个 Docker 容器只需要 5 秒钟的时间。容器也可以很快地启动,因为没有繁琐的操作系统引导机制。当一个容器启动时,它所运行的就是服务。

使用容器有一些缺点。虽然容器基础架构正在快速发展走向成熟,但它并不像虚拟机的基础架构那么成熟。此外,容器不像 VM 那样安全,因为容器彼此共享了主机的 OS 内核。

容器的另一个缺点是您需要负责未划分的容器镜像管理重担。此外,除非您使用了托管容器解决方案[如 Google Container Engine 或 Amazon EC2 Container Service(ECS)],否则您必须自己管理容器基础设施以及可能运行的 VM 基础架构。

此外,容器通常部署在一个按单个 VM 收费的基础设施上。因此,如之前所述,可能会产生超额配置 VM 的额外成本,以处理负载峰值。

有趣的是,容器和 VM 之间的区别可能会有些模糊。如之前所述,Boxfuse VM 可以很快地构建和启动。Clear Containers 项目旨在创建轻量级虚拟机。Unikernels 也正在蓬勃发展。Docker 公司于 2016 年初收购了 Unikernel 系统。

还有一个日益流行的 server-less(无服务器)部署概念,这是一种避免了“在容器中还是在虚拟机中部署服务”问题的方法。接下来我们来看看。

6.4、Serverless 部署

AWS Lambda 就是一个 serverless 部署技术示例。它支持 Java、Node.js 和 Python 服务。要部署微服务,请将其打包成 ZIP 文件并将上传到 AWS Lambda。您还要提供元数据,其中包括了被调用来处理请求(又称为事件)的函数的名称。AWS Lambda 自动运行足够的微服务服务实例来处理请求。您只需根据每个请求所用时间和内存消耗来付费。当然,问题往往出现在细节上,您很快注意到了 AWS Lambda 的局限性。但是,作为开发人员的您或组织中的任何人都无需担心服务器、虚拟机或容器的任何方面 ,这非常有吸引力,足以令人难以置信。

Lambda 函数是无状态服务。它通常通过调用 AWS 服务来处理请求。例如,当图片上传到 S3 存储桶时Lambda 函数将被调用,可插入一条记录到 DynamoDB 图片表中,并将消息发布到 Kinesis 流以触发图片处理。 Lambda 函数还可以调用第三方 Web 服务。

有四种方法调用 Lambda 函数:

  • 直接使用 Web 服务请求
  • 自动响应一个 AWS 服务(如 S3、DynamoDB、Kinesis 或 Simple Email Service)生成的事件
  • 通过 AWS API 网关自动处理来自应用程序客户端的 HTTP 请求
  • 按照一个类似 cron 的时间表,定期执行

正如您所见,AWS Lambda 是一个便捷的微服务部署方式。基于请求的定价意味着您只需为服务实际执行的工作支付。另外,由于您不需要对 IT 基础架构负任何责任,因此可以专注于开发应用程序。

然而,其也存在一些明显的局限性。Lambda 函数不适用于部署长时间运行的服务,例如消耗第三方消息代理消息的服务。请求必须在 300 秒内完成。服务必须是无状态的,因为理论上,AWS Lambda 可能为每个请求运行一个单独的实例。他们必须使用受支持的语言之一来编写。服务也必须快速启动,否则,他们可能会因超时而终止。

6.5、总结

部署微服务应用程序充满着挑战。您可能有数个甚至数百个使用了各种语言和框架编写的服务。每个应用程序都是一个迷你应用程序,有自己特定的部署、资源、扩展和监视需求。有几个微服务部署模式,包括每个虚拟机一个服务实例和每个容器一个服务实例模式。部署微服务的另一个有趣的选择是 AWS Lambda,一种 serverless 方式。在本书的下一章也是最后一章中,我们将介绍如何将单体应用程序迁移到微服务架构。

微服务实战:使用 NGINX 在不同主机上部署微服务

by Floyd Smith

NGINX 对于各种类型的部署具有许多优势 — 无论是单体应用程序、微服务应用程序还是混合应用程序(将在下一章介绍)。使用 NGINX,您可以智能抽取不同的部署环境出来并整合入 NGINX。如果您使用针对不同部署环境的工具,则有许多应用程序功能将以不同的方式工作,但如果使用 NGINX,那么在所有环境中都可以使用相同的方式进行工作。

这一特性也为 NGINX 和 NGINX Plus 带来了第二个优势:通过在多个部署环境中同时运行应用程序来扩展应用程序的能力。假设您拥有和管理着的本地服务器,但是您的应用程序使用情况正在增长,并且预计将超出这些服务器可以处理的峰值。如果你已经使用了 NGINX,您就有了一个强大的选择:扩展到云端 — 例如,扩展到 AWS 上,而不是购买、配置和保持额外的服务器来为了以防万一。也就是说,当您的本地服务器上的流量达到容量限制时,可根据需要在云中启动其他微服务实例来处理。

这只是因使用 NGINX 变得更加灵活的一个例子。维护单独的测试和部署环境、切换环境的基础设施、以及管理各种环境中的应用程序组合都变得更加现实和可实现。

NGINX 微服务参考架构被明确设计为支持这种灵活部署,其假设在开发和部署期间使用容器技术。如果您还没尝试,可以考虑转移到容器、NGINX 或 NGINX Plus,以轻松地转移到微型服务,以及使您的应用程序、开发和部署灵活性以及人员更具前瞻性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微服务部署策略的选择
动机 部署单体应用程序意味着运行多个通常是单个大型应用程序的相同副本。您通常会提供N个服务器(物理或虚拟)并在每个服务器上运行M个应用程序的实例。部署单体应用程序并不简单,但它比部署微服务应用程序要简单得多。 微服务应用程序由数十甚至上百个服务组成。服务由各种语言和框架编写。每个应用程序都是具有自己特定部署、资源、扩展和监视要求的小型应用程序。例如,您需要根据该服务的需求运行一定数量的每个服务的实例。此外,每个服务实例必须提供相应的CPU、内存和I / O资源。除了复杂性外,更具挑战性的是部署服务必须快速,
用户1263954
2018/01/30
1.7K0
微服务部署策略的选择
[翻译]微服务设计模式 - 5. 服务发现 - 服务端服务发现
服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地址和端口是固定并且提前预知的,所以只需要简单的 HTTP/REST 调用或者其他的 RPC 机制直接调用即可。但是在当下的云原生微服务体系中,微服务大多在某个虚拟机或者某个容器下运行,服务实例数量以及提供服务的地址以及端口都是不固定的,可以理解为,这些服务实例都是临时的。所以,需要实现使服务客户端能够对一组动态变化的临时服务实例发请求的机制。
干货满满张哈希
2021/04/12
7450
[翻译]微服务设计模式 - 5. 服务发现 - 服务端服务发现
Docker 的五大优点:持续部署、版本控制、可移植性、隔离性和安全性
本文介绍了 Docker 的五大优点,包括持续部署和测试、多云平台支持、环境标准化和版本控制、隔离性和安全性以及安全。Docker 可以确保应用程序在不同环境中的一致性,提高资源利用率并简化应用程序部署。
Xiaoxing Ye
2018/01/04
7.2K0
选择部署策略
部署单体应用程序意味着运行一个或多个相同副本的单个较大的应用程序。您通常会在每台服务器上配置 N 个服务器(物理或虚拟)并运行 M 个应用程序实例。单体应用程序的部署并不总是非常简单,但它比部署微服务应用程序要简单得多。
用户9184480
2024/12/19
1610
选择部署策略
[转载]微服务实战(六):选择微服务部署策略
部署一个单体式应用意味运行大型应用的多个副本,典型的提供若干个(N)服务器(物理或者虚拟),运行若干个(M)个应用实例。部署单体式应用不会很直接,但是肯定比部署微服务应用简单些。 一个微服务应用由上百个服务构成,服务可以采用不同语言和框架分别写就。每个服务都是一个单一应用,可以有自己的部署、资源、扩展和监控需求。例如,可以根据服务需求运行若干个服务实例,除此之外,每个实例必须有自己的CPU,内存和I/O资源。尽管很复杂,但是更挑战的是服务部署必须快速、可靠和性价比高。 有一些微服务部署的模式,先讨论一下每个主机多服务实例的模式。
干货满满张哈希
2021/04/12
1.5K0
[转载]微服务实战(六):选择微服务部署策略
Chris Richardson微服务翻译:微服务部署
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署(本文) 重构单体应用为微服务 原文链接:Choosing a Microservices Deployment Strategy ---- 动机 部署一个单体应用意味着运行着庞大应用的多个副本,通常需要 N 台服务器(物理机或虚拟机),在每台服务器上运行 M 个应用实例。部署单体应用一般并不特别直接,但还是比部
butterfly100
2018/04/17
1.1K0
Chris Richardson微服务翻译:微服务部署
四种正确的微服务部署方式
在过去的几年中,由于微服务架构(Microservices architecture)能够提供高级别的软件可扩展性,因此十分流行。尽管大多数组织都能够接受这种架构模式,但是他们也或多或少地遇到了,诸如如何将应用程序分解成为基于微服务的模式等多方面的挑战。
lyb-geek
2019/11/20
11.4K0
四种正确的微服务部署方式
微服务简介
我们假设,您开始开发一个打车应用,打算与 Uber 和 Hailo 竞争。经过初步交流和需求收集,您开始手动或者使用类似 Rails、 Spring Boot、 Play 或者 Maven 等平台来生成一个新项目。
用户9184480
2024/12/19
970
微服务简介
微服务:从设计到部署【笔记】
一、微服务简介 A.单体地狱 1.成功的应用有一个趋势,随着时间推移而变得越来越臃肿 2.复杂的单体应用本身就是持续部署的障碍 3.单体应用使得采用新框架和语言变得非常困难 B.微服务 — 解决复杂问题 1.思路是将应用程序分解成一套较小的互连服务。一个服务通常实现了一组不同的特性或功能。每个微服务都是一个迷你应用,包括了业务逻辑以及多个适配器 2.一些微服务会暴露一个供其他微服务或应用客户端消费的API,其他微服务可能实现了一个WebUI,在运行时,每个实例通常是一个云虚拟机(virtual machine,VM)或者一个Docker容器 3.他们之间的通信是由一个被称为API网关(API Gateway)的中介负责,API网关负责负载均衡、缓存、访问控制、API计量和监控 4.如果您想从微服务中受益,每一个服务都应该有自己的数据库模式,因为它能实现松耦合 C.微服务的优点 1.解决了复杂问题,把可能会变得庞大的单体应用程序分解成一套服务 2.这种架构使得每个服务都可以由一个团队独立专注开发 3.微服务架构模式可以实现每一个微服务独立部署 4.微服务架构模式使得每个服务能够独立扩展 D.微服务的缺点 1.微服务这个术语的重点过多偏向于服务的规模,有些开发者主张构建极细粒度的10至100LOC(代码行)服务,但小型服务只是一种手段,目标在于充分分解应用程序以方便应用敏捷开发和部署 2.微服务是一个分布式系统,使得整体变得复杂,开发者需要选择和实现基于消息或者RPC的进程间通信机制,模块间通过语言级方法/过程调用相互调用,这比单体应用要复杂得多 3.分区数据库架构,需要更新不同服务所用的数据库,通常不会选择分布式事务,不仅仅是因为CAP定理 4.测试微服务应用程序也很复杂,需要启动该服务及其所依赖的所有服务,或者至少为这些服务配置存根 5.实现了跨越多服务变更,在微服务中需要仔细规划和协调出现的变更至每个服务 6.部署基于微服务的应用程序也是非常复杂的 7.每个服务都有多个运行时实例,还有更多的移动部件需要配置、部署、扩展和监控,还需要实现服务发现机制,使得服务能够发现需要与之通信的任何其他服务的位置(主机和端口),需要开发人员能高度控制部署方式和高度自动化 二、使用API网关 A.客户端与微服务直接通信 1.问题:客户端的需求与每个微服务暴露的细粒度的API不匹配,公网下效率低下 2.问题:有可能使用了非web友好协议,一个服务可能使用了Thrift二进制rpc,而另一个可能使用AMQP消息协议,这些对浏览器还是防火墙都是不友好的,最好是在内部使用 3.缺点:难以重构微服务 B.使用API网关 1.API网关是一个服务器,是系统的单入口点,类似于面向对象设计模式中的门面(Facade)模式,封装了内部系统架构,并针对每个客户端提供一个定制API,还可用于认证、监控、负载均衡、缓存和静态响应处理 2.API网关负责请求路由、组合和协议转换,通常会调用多个微服务和聚合结果来处理一个请求,可以在Web协议(如HTTP和WebSocket)和用于内部的非Web友好协议之间进行转换 3.API还可以为每个客户端提供一个定制API,通常为客户端暴露一个粗粒度的API C.API网关的优点与缺点 1.主要好处是它封装了应用程序的内部结构,客户端只与网关通信,而不必调用特定的服务 2.缺点是它是另一个高度可用的组件,需要开发、部署和管理,API网关可能会成为开发瓶颈 3.重要的是更新API网关的过程应尽可能地放缓一些,否则,开发人员将被迫排除等待网关更新 D.实施API网关 1.在一个支持异步、非阻塞I/O平台上构建API网关是很有必要的。Node.js、Nginx Plus 2.API网关通过简单地把他们(请求)路由到适当的后端服务来处理一些请求。它通过调用多个后端服务并聚合结果来处理其他请求,API网关应该并发执行独立请求 3.使用传统的异步回调方式来编写API组合代码会很快使您陷入回调地狱,好的方式是使用响应式方法以声明式编写API网关代码 4.一个基于微服务的应用程序是一个分布式系统,必须使用一个进程间(inter-process)通信机制,有两种方案:一是使用基于消息的异步机制,如JMS、AMQP、ZeroMQ等;另一种采用了同步机制,如HTTP和Thrift;API网关需要支持各种通信机制 5.API网关需要知道与其通论的每个微服务的位置(IP地址和端口),需要使得系统的服务发现机制:服务端发现或客户端发现,API网关必须能够查询服务注册中心,该注册中心是所有微服务实例及其位置的数据库 6.当一个服务调用另一个响应缓慢或不可用的服务时,API网关不应该无期限地等待下游服务,如何处理故障问题取决于决定的方案和哪些服务发生故障 7.如果可以,API网关还可以返回缓存数据,通过返回默认数据或缓存数据,确保系统发生故障
硬核项目经理
2019/08/06
7400
微服务:从设计到部署【笔记】
逐条讲解:云计算中的容器技术
在如今,在讨论云时是很难不提及容器技术的。无论你是刚刚入门的技术新人或者经验丰富的专业人士,一定都应当知道这些与云中容器技术相关的重要术语。 随着云计算中容器技术的普及,越来越多的企业都不选择考虑其他选项了。 虽然容器技术已经面世一段较长时间了,但最近是Docker帮助它们进入了企业应用的焦点。随着云的发展,更多的企业了解了采用混合云和多云模式的好处,但是确保软件在不同环境之间迁移时能够稳定运行则成为了一大挑战。容器技术是通过将应用程序机器所有组件打包成为单个可便携的包来解决这一难题的。 此外,随着云计
静一
2018/03/27
3.2K0
逐条讲解:云计算中的容器技术
微服务架构之Spring Boot(八十五)
Boxfuse的工作原理是将您的Spring Boot可执行jar或war转换为可以在VirtualBox或AWS上无需部署的最小VM映像。Boxfuse为Spring Boot
用户1289394
2022/05/23
1.5K0
坐看云起时,谈笑无还期
云计算平台在2008年出现在公众面前的时候,我和大多数人一样,并没有意识到这是一场影响深远的技术变革。并不是缺乏洞见,而是因为云计算的概念非常混乱。
ThoughtWorks
2019/06/19
8630
坐看云起时,谈笑无还期
无服务器架构是小型创业公司的未来
来源丨https://www.infoq.cn/article/eIBj9SVgYXoqjlwx*RzU
xcbeyond
2020/03/25
1.6K0
无服务器架构是小型创业公司的未来
10.1.微服务为什么一定要上Docker?
早在2013年的时候,docker就已经发行,然而那会还是很少人了解docker。一直到2014年,Martin Fowler提出了微服务的概念,两个不相干的技术终于走在了一起,创造了今天的辉煌! 近几年来,很多互联网关系开始跟风,构建docker+微服务的架构体系。然而,根据笔者观察发现,有些童鞋在使用过程中,只是会用,而根本不了解为什么使用docker,反正对他们来说,公司让用就用!而某些公司呢,虽然用上了docker,然而运维方式并没有发生改变,白白浪费了docker的大好性能! 因此,才有了本文的诞生。本文不会教你怎么去用什么docker的api,毕竟官网document很全面,而是去讲解docker的优点,进而说明为什么适合微服务的架构!
itjim
2020/01/21
8460
10.1.微服务为什么一定要上Docker?
为什么选择微服务架构? 微服务架构的10个核心优势 总结
微服务架构我们没有一个明确的定义,但简单来说微服务架构是: 采用一组服务的方式来构建一个应用,服务独立部署在不同的进程中,不同服务通过一些轻量级交互机制来通信,例如 RPC、HTTP 等,服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服务甚至可以采用不同的编程语言来实现,由独立的团队来维护。
猫头虎
2024/04/08
2.1K0
为什么选择微服务架构? 微服务架构的10个核心优势 总结
打破神话:容器vs虚拟机
容器是当今IT界最热门的话题之一,很大程度上归功于许多网络公司如Facebook和Twitter的采用。 在过去的两年中,包括亚马逊网络服务(AWS)和谷歌计算平台(GCP)在内的主要云计算提供商已经通过产品化服务提供了Docker容器。 在DevOps环境中,开发人员越来越多地使用容器,开发人员可以自动执行应用程序和工作负载部署 集装箱也被吹捧为提高整体基础设施利用率的一种手段,因为与虚拟机(VM)相比,它们的设计轻巧,减少了部署,拆卸,重新实例化或迁移的时间。 在这篇文章中,我将评估使用容器的优势。
架构师研究会
2018/04/09
1K0
打破神话:容器vs虚拟机
微服务模式系列之五:服务端服务发现
译者自序: 熟悉我的朋友都知道,我很不喜欢翻译东西,因为在两种语言的思维方式之间做频繁切换对我来说是件很痛苦的事情。但是这次不一样,公司和同事的大力支持降低了我的痛苦指数,让我能够坚持把Chris Richardson的微服务模式系列文章翻译完,今天发布第五篇——《服务端服务发现》。 背景 不同服务之间通常需要相互调用。在单体应用程序当中,服务间通过语言层级的方法或者过程实现相互调用。在传统的分布式系统部署下,服务在固定并且已知的位置(主机与端口)运行,从而确保各服务可利用HTTP/REST或者某种RPC
yuanyi928
2018/04/02
1.8K0
微服务模式系列之五:服务端服务发现
4、服务发现
本书主要介绍如何使用微服务来构建应用程序,现在是第四章。第一章已经介绍了微服务架构模式,并讨论了使用微服务的优点与缺点。第二章和第三章介绍了微服务间的通信,并对不同的通信机制作出对比。在本章中,我们将探讨服务发现(service discovery)相关的内容。
Java架构师历程
2018/09/26
2.2K0
4、服务发现
5分钟带你入门Docker
现代软件开发的目标之一是应用程序既能运行在同一主机或集群上,又能彼此隔离,这样它们就不会过度干扰彼此的操作或维护,但由于要运行包、库和其他软件组件,这样就会变得会比较困难。
CloudBest
2019/12/19
7080
5分钟带你入门Docker
微服务简介
我们先来看看你为什么要考虑使用微服务。 构建单体应用 让我们假设你们要开始制定一个全新的出租车招标程序,旨在与Uber和Hailo进行竞争。经过一些初步会议和需求收集之后,您将手动或者使用Rails
用户1263954
2018/01/30
1.1K0
微服务简介
相关推荐
微服务部署策略的选择
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文