Azure Service Fabric和Docker做的事情一样吗?

31

我的想法是,人们使用Docker是为了确保本地环境与生产环境相同,并且他们不必考虑应用程序在哪里物理运行,而平衡机制应该只分配最佳位置的应用程序。

我100%基于Web,并将与我们的数据库一起移动到云端,无法移动的内容将被无缝桥接,使企业内容和云端成为一个子网络。

因此,我在想,也许Service Fabric已经做了Docker所做的事情,还提供地址转换服务(fabric://像fabric空间中的进程的DNS)和(对于一些人来说很重要)鼓励按需工作人员分配-巨大的可伸缩性优势。

  1. Service Fabric能否成功替代Docker?
  2. 它是否获得了受众和认可?否则,即使是最伟大的发明也会失败。
回答: 1. Service Fabric可以替代Docker吗? 答:不能。虽然Service Fabric和Docker都致力于简化应用程序开发和部署,但它们的实现方式有所不同。Docker更专注于容器化,而Service Fabric更专注于微服务架构。这两者之间没有绝对的替代关系。
2. 它是否获得了受众和认可? 答:是的。自推出以来,Service Fabric已经吸引了越来越多的用户和开发者,并成为微软Azure平台上最受欢迎的服务之一。同时,它也得到了许多企业和组织的认可,被广泛应用于生产环境中。
3个回答

57

由于Docker(公司)试图在云服务的各个领域都有所涉足,这使得人们感到困惑。

  • Docker Engine(大多数人称为“Docker”) 是一种容器技术。它可以提供以下功能:
    • 进程隔离
    • 网络隔离
    • 一致的应用程序环境
  • Docker Hub 是一个镜像注册表。它存储Docker镜像,以便您可以将其作为部署的一部分进行下载。
  • Docker Cloud 是用于Docker的编排系统。它可以提供以下功能:
    • 按比例缩放您的应用程序
    • 将您的应用程序连接起来
    • 与Docker Hub集成的CI测试(这不是编排的一部分,只是它所做的另一件事情)

Service Fabric是一种编排系统。它可以编排Docker容器,但如果您专门为Fabric构建,则还可以更紧密地集成您的服务。(Docker对于容器内运行的内容完全不关心。)

因此,Service Fabric在很大程度上与Docker Cloud相当,尽管并非完全匹配。还有其他基于Docker的编排解决方案(Kubernetes可能是最受欢迎的)和其他基于云的微服务解决方案(Heroku可能是最知名的)。

Service Fabric的主要缺点是它是一项Microsoft技术,因此您将比运行Docker更大程度地与Azure绑定。另一个缺点是Docker在构建堆栈方面有更广泛的选择:我列出的所有三个Docker东西都至少有一个开源替代品(这也是Docker的一个很大的缺点,因为没有人提供单一的最佳实践文档)。

如果您喜欢Microsoft,并且拼凑系统对您来说不是很重要,那么Service Fabric应该是Docker生态系统的一个良好替代品。(并且您仍然可以在其中运行Docker容器。)


22
为了澄清几个问题:首先,Service Fabric 对底层托管提供商没有偏见。你可以在 Azure 上运行它,在 AWS 上运行它,在 5 台笔记本电脑上运行它 - 这并不重要。虽然有 Azure 集成可用,但它始终是可选的 - Vaclav Turecek
8
我正在阅读有关应用程序服务 Fabric 的内容,它与 Azure 没有绑定,您可以在 PREM、亚马逊或 Azure 上拥有集群,因此该陈述是不正确的。 - Luis Valencia
1
@Vaclav-Turecek的评论帮助我深入了解了不同Service Fabric变体的命名,我希望官方文档能够更好地解释它。我希望“Azure Service Fabric for Windows Server”(参考https://azure.microsoft.com/en-in/updates/service-fabric-windows-server-ga/)和PaaS平台Azure Service Fabric有更明显的区别名称。 - mvark
3
与讨论相关,https://dev59.com/CVgR5IYBdhLWcg3wEqAv 提出了在除 Azure 以外的云平台上运行 Service Fabric 的问题。 - Stephen Kennedy
1
回复:“Service Fabric 的主要缺点是它是微软技术,因此您将会被绑定到 Azure 上。”这是不正确的:尽管 Service Fabric 在名称中带有 Azure,但它并不意味着与 Azure 绑定。我们正在将我们的 Service Fabric 部署到一组 Windows 机器上,甚至没有 Azure 帐户。 - Dmitry
显示剩余8条评论

5

Service Fabric和Docker容器化之间的主要相似之处:

  1. Docker和SF都能够在Linux和Windows平台上创建不变的镜像,将您的微服务实现转换为容器。
  2. Docker和SF都能够在VM集群内进行容器化应用程序编排。这些VM可以位于任何地方:公共云、私有云或您自己的数据中心。请注意,它们都是云平台无关的,这意味着它们没有强烈的亲和力与任何云服务相关。只要您在微服务中不使用任何特定于云的功能,那么这应该是可以的。
  3. Docker和SF都能够展示编排平台所需的基本功能:服务发现、服务级负载均衡、服务之间的网络隔离、故障处理和复制控制等。

Service Fabric和Docker容器化之间的主要区别:

  1. Docker容器本质上是一种部署/打包结构。也就是说,docker不规定您在容器中打包的内容,作为您的服务实现的一部分。它也不提供任何编程结构来实现您的服务类型。而Service Fabric提供了以基本类型/接口形式的编程结构,从中可以声明您的服务实现的某种服务类型 - 有状态服务、无状态服务、虚拟演员。
  2. 在Docker世界中,所有东西都是一个容器。也就是说,您的最小部署/编排单元是一个容器。因此,它不承认或支持单个进程。而在SF中,我们提供了一种方法,使您从无状态/有状态服务派生的微服务可以作为进程进行编排和治理。但是,SF也支持像Docker一样的容器编排。此外,最新版本的SF允许将有状态/无状态服务打包到容器中。

请注意,考虑到上述事实,SF对任何云提供商都没有强烈的亲和力。只要您能够创建所需平台的VM,它就可以在任何公共云 - Azure、AWS或GCP上运行。


3
这两者根本无法比较。使用Service Fabric,您可以获得健康监控、与Fabric集成的代码、日志记录、监控、负载平衡和其他智能功能。您的应用程序甚至可以执行关闭代码。Service Fabric不仅适用于Microsoft技术,甚至docker也可以驻留在SF中,所以rkt或Unix操作系统也可以。与Web应用程序一致的安全性和网络功能是另一个优点。可靠的集合简直太棒了。对于采用它的公司来说,更好的应用程序构建和性能路线图是有保证的(历史如此表明)。
这个问题非常有利于“最伟大的发明”Docker。这种比较对Docker营销有好处,但没有人会用Docker取代SF。Docker只是一个微小的操作系统副本(与服务、应用程序或智能无关)。Docker甚至与应用程序开发无关,这不是意图。只是人们开始发现需要隔离和共享。这就是Docker的全部内容。

3
很遗憾地看到很少有人真正理解 Service Fabric “本地版”的强大之处。如果您的应用程序全部基于 .Net 或 Java,您可以使用 Service Fabric SDK 来构建一个极其强大的(微)服务体系结构,完全支持服务编排、负载均衡、健康探测,甚至非常聪明的状态化服务,例如 Actors 和分布式集合。因此,不需要容器化和 Kubernetes/插件配置学习曲线。 - Ted van der Veen
2
@TedvanderVeen 我完全同意。在我看来,如果你是一个已经拥有“面向服务”架构的软件公司,并且想进入微服务/编排领域,Service Fabric 是一个很好的选择。 - pixelTitan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接