本文要点
Azure Service Fabric Mesh(目前处于预览阶段)是一个完全托管的服务,它使你可以使用“无服务器”方法构建、部署和管理由运行在容器中的多语言服务组成的应用程序。
Azure Service Fabric Mesh 通过使用 Envoy Proxy 构建的软件定义网络(SDN)功能提供了智能消息路由,使得服务发现和微服务之间的路由成为可能。
Azure Service Fabric 有三项公共服务:Service Fabric Azure 集群服务、Service Fabric 独立服务和 Azure Service Fabric Mesh 服务。
Service Fabric Mesh 主要是一个应用程序平台,它首先从终端工程师那里抽象出了业务流程,然后添加了可以供你在应用程序中使用的智能消息传递路由和存储。
Service Fabric 平台有一个内置的、高可用的、低延迟的内存内持久化状态存储。你可以通过编程式数据结构(Dictionary 和 Queues)使用这个存储,或作为附加的卷磁盘使用。
今年早些时候,Azure 发布了Service Fabric Mesh的预览版,这个平台面向的是那些不希望承担运行底层编排平台操作责任的微服务开发人员。Chacko Daniel是微软的首席技术经理,同时也是 Service Fabric Azure 集群服务和 Azure Service Fabric Mesh 服务的所有者。最近,InfoQ 对他进行了采访,探讨了这项服务与现有的平台即服务(PaaS)和容器基础设施即服务(CIaaS)解决方案(如 Cloud Foundry 何 Kubernetes)的关系。
InfoQ:欢迎来到 InfoQ!您能向我们的读者简单地介绍下自己吗?
Chacko:我叫 Chacko Daniel,是微软 Azure 超大规模计算团队的首席项目经理。我已在 Azure Service Fabric 团队工作了 10 年。我是平台运行时和 Service Fabric Clusters 与 Service Fabric Mesh 两项 Azure 服务的服务所有者。
InfoQ:您能否为不太熟悉云技术的读者解释一下 Azure Service Fabric 是什么?
Chacko:AzureAzure Service Fabric 是一个分布式计算平台,它使构建、部署和操作始终处于开启状态的任务关键型微服务应用程序(容器化和非容器化)变得更容易。开发人员可以专注于构建微服务,而 Service Fabric 平台解决了诸如应用程序的生命周期管理、编排、可用性和可伸缩性等难题。
该平台还具有内置的、高可用的、低延迟的持久化内存内状态存储。开发人员可以通过编程式数据结构(Dictionary 和 Queues)使用这个存储,或作为附加的卷磁盘使用。
Azure Service Fabric 是开源的,可以在 Windows 和 Linux 上运行,你既可以在本地使用它,也可以在云中使用它——这是一个很棒的混合解决方案,可以支持要求很高的“原生云”应用程序。
Azure Service Fabric 有三项公共服务:Service Fabric Azure 集群服务、Service Fabric 独立服务和 Azure Service Fabric Mesh 服务。
Service Fabric 不仅可以供大规模的微软服务使用,如 Azure SQL DB、Intune、Azure Cosmos DB、Azure Event Hubs 和 Bing,也可以供成千上万的企业客户使用,如 Citrix Systems、Alaska Airlines、Honeywell、BMW 和 Societe Generale 以及 SI(系统集成商)&ISV(独立软件供应商,如 Accenture 和 OSISoft)。
InfoQ:新的 Azure Service Fabric Mesh 与 Azure Service Fabric Clusters 有何不同?
Chacko:我们在 Azure 中提供了两种 Service Fabric 服务——Service Fabric Clusters 和 Service Fabric Mesh(预览版),用于在 Azure 中部署和管理应用程序。
Service Fabric Cluster 为你提供了一个可靠的、可伸缩的 VM 集群,这些 VM 运行着 Service Fabric 运行时,你可以通过一个高可用的集群端点向其中部署和管理应用程序 / 服务(容器化或非容器化)。Service Fabric 运行时基于它与底层 Azure 基础设施的集成来做出服务配置决策,保证它们的可靠性。
在使用 Azure Service Fabric Clusters 时,你不仅需要以管理员身份访问集群,还需要访问组成集群的 VM。你可以选择使用 VM SKU 来满足你的要求,你可以决定要根据哪些网络安全规则和自动伸缩规则来伸缩集群。你可以设置 Service Fabric 运行时和 VM 操作系统自动升级。借助这个服务,你只需为使用的 VM、存储和网络资源付费,Service Fabric 运行时实际上是免费的。它非常适合需要完全控制基础设施的客户 /ISV。
Azure Service Fabric Mesh 目前处于预览阶段,它是一个完全托管的服务,它使你可以使用“无服务器”方法构建、部署和管理由运行在容器中的多语言服务(例如任何语言、任何操作系统)组成的应用程序。开发人员只需要指定他 / 她的应用程序 / 服务所需的资源,如容器的数量、容器的大小、网络属性、自动伸缩规则等,系统负责提供和管理所需的基础设施。这种方法使得开发人员可以只关注应用程序 / 服务,而不是基础设施。
Service Fabric Mesh 还通过软件定义网络(SDN)功能(基于Envoy Proxy构建)提供智能消息路由,简化了服务发现和微服务之间的路由。在即将到来的预览更新中,我们计划启用其他 SDN 功能,如断路器、重试、SSL 终止、蓝 / 绿部署以及使用托管服务标识简化安全。这里,你可以使用我前面提到的由 Service Fabric 提供的有状态功能。这里有一个关于 Service Fabric Mesh 的 2 分钟的视频,它汇总介绍了这里的部分信息。
InfoQ:Azure Service Fabric Mesh 与一些读者可能熟悉的技术,例如 Cloud Foundry、Kubernetes 或 Docker(通过 Docker Compose 配置),是什么关系?
Chacko:所有这些技术都非常类似,它们都编排或部署容器。Azure 支持你提到的所有平台,所以你可以使用自己喜欢的技术栈。
至于其他 Service Fabric 服务,借助于 Service Fabric Mesh,我们将继续致力于成为一个应用程序平台,首先抽象出所需的容器编排,并添加可以在应用程序中使用的智能消息传递路由和存储。你可以使用一组声明性策略部署和管理自己的应用程序,这些策略包括你需要的容量和网络、你希望如何伸缩、路由消息、管理证书,平台不仅将编排容器,还将负责管理基础设施并运行它。
在使用 Service Fabric Mesh 时,除非你查看平台日志,否则你甚至不知道 Service Fabric 是为服务提供支撑的底层平台,就像你不知道 Service Fabric 在 Azure 数据库和其他服务中使用一样。它使开发人员不必考虑编排器和其他低层管理服务。
InfoQ:您能介绍下 Service Fabric 平台的可伸缩性吗?
Chacko:尽管我们在内部运行了大量的测试,使用人工工作负载在内部对服务施加压力,但是,我将从实证方面来回答这个问题。大多数流行的 Azure 服务都使用了 Service Fabric 平台,比如 Cosmos DB、IOT Hub、Event Hub、Azure SQL DB、Intune、Event Grid。每个 Azure SQLDB 事务在 Service Fabric 中都是一个复制操作,Azure 中有数百万个 SQL DB。每个 CosmosDB 写也是一个类似的复制操作,EventHub 使用 Service Fabric 每天处理 2 万亿条消息,诸如此类。大多数人 / 公司都太可能需要超过 Azure 中这些使用数百万核的大型服务的规模。
该平台不仅具有高度可伸缩性,而且还提供零停机应用程序滚动升级、安全性、内置的健康监控、跨地域集群的能力等等。*这里* 有一段 Mark Russinovich 的演讲视频,他是 Azure 的 CTO,他展示了 Service Fabric 的伸缩和部署速度。在不到两分钟的时间里,他在 3500 个节点的 Linux 集群上部署和运行了 100 万个容器。
Service Fabric 是一项每天都要经过实战测试的技术。
InfoQ:服务网格是当前一个热门的新兴话题吗?名称有点类似,那么 Azure Service Fabric Mesh 与 Linkerd、Istio 和 Cilium 等服务网格技术是什么关系呢?
Chacko:服务网格是关于连接服务和实现网络原语的,包括服务发现和快速、安全、可靠的服务到服务通信。Linkerd、Envoy 和 Cilium 是网络代理,它们可以作为服务网格部署在 Kubernetes 或 Service Fabric 之类的编排器上。Istio 等项目则允许你连接、保护、控制和观察服务,并使用 Envoy 提供了第 7 层(L7)网络功能。
Azure Service Fabric Mesh 还允许你连接、部署、保护和管理服务,并在底层使用 Envoy 为 Windows 和 Linux 容器提供 L7 功能。然而,它不仅仅是一个服务网格——它是一个构建、部署、扩展和操作基于微服务的应用程序的应用程序平台。
InfoQ:Azure 平台提供了一系列部署选项——Azure Service Fabric Mesh 的主要用例是什么?我为什么要选择在这里构建和部署,而不是另一个 Azure 产品上,比如 AKS 或 Azure Functions?
Chacko:Azure 提供了多种计算选项来满足不同的客户用例。最终,我们希望客户能够成功地使用他们的首选技术栈、体系结构和 / 或已有的投资。
如果你正在为事件驱动的场景寻找一种无服务器的计算体验,那么鉴于其编程模型(基于触发器来响应发生在其他服务中的活动,基于绑定来方便地连接到不同的服务),我会推荐 Azure Functions。
同样,如果你来自 Linux 生态系统,并且正在构建容器化的应用程序,那么你将使用 Azure Kubernetes Service(AKS)。另外,我们还发现使用 Red Hat Linux 的客户正在迁移到 Azure 上的 OpenShift。
如果你想要 Windows/.Net 或微服务, Service Fabric 是一个很好的选择,Service Fabric Mesh 提供了无服务器的全托管风格,让你可以将任何容器化的工作负载、Linux 或 Windows 部署到 Azure 上。虽然 Service Fabric 可以用作容器编排器,但是它的优点在于它的编程模型,而且它是专门为在 Azure 中大规模构建、部署和操作微服务应用程序而设计的。
我们从 2018 年 7 月起就开始预览 Azure Service Fabric Mesh,我们看到客户正在利用这种“无服务器”服务,现代化 / 升级他们当前的应用程序(Windows 或 Linux),并把它们迁移到 Azure 上,或者将新的多语言应用程序部署到 Azure。
InfoQ:非常感谢您今天抽时间和我们交流。您还有什么想和 InfoQ 的读者分享的吗?
Chacko:感谢你们提供机会让我们分享我们团队的工作细节。Service Fabric Mesh 的旅程刚刚开始,我们需要你们的帮助。请在这里试用 Service Fabric Mesh 预览版,并提供反馈。
可以在这里与我们分享你的想法、问题和反馈。还有,如果你有问题想问我的话,请给我发推特@chackod。
关于作者
Chacko Daniel是一名产品负责人,在构建企业级分布式计算平台和服务的产品 / 服务开发方面有着丰富的经验。他目前在微软担任首席技术 PM,是平台运行时和两项 Azure 服务的所有者——Service Fabric Azure Cluster 服务和 Azure Service Fabric Mesh 服务。
原文地址: https://www.infoq.cn/article/HDUakJW9_WImgOlcIo4O
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com