大话微服务架构之微服务框架微软ServiceFabric正式开源(三)

选择315这天分享一个好框架-ServiceFabric,它于昨天正式开源了!

微软的 Azure Service Fabric 的官方博客在2017.3.24日发布了一篇博客 Service Fabric .NET SDK goes open source ,介绍了社区呼声最高的 Service Fabric 开源的情况以及当前的情况,当时开源了 Service Fabric的.NET SDK 部分,社区一直在期盼着 Service Fabric 的正式开源,经过了一年漫长的等待,2018年3月14日微软终于开源了 Service Fabric ,而且是以 MIT 许可下开放源代码,在官方博客宣布 https://blogs.msdn.microsoft.com/azureservicefabric/2018/03/14/service-fabric-is-going-open-source。

目前微软在 Github 上的开源地址是 https://github.com/Microsoft/service-fabric,目前的代码构建适用于 Linux 的 Service Fabric ,运行基本测试,有问题可以在上面提交 issue 和 PR 了,Windows 构建环境以及完整的 CI 环境还没有迁移过来。Windows 内部为 Service Fabric 开发了将近十年的内部服务,其中大部分时间都是微软内部平台,比如 Office365,Azure Stack 平台等,这意味着我们有近十年的内部微软工具可以在迁移之前完成迁移和流程细化,逐步全部开源,以后全部开发都在开源模式下进行开发工作。

微软去年漫长的一年时间里也开放了非常多的代码,包括包括 Reliable Services,Reliable Actors 和 ASP.NET Core 集成库,Azure 基础架构服务以及 Azure SQL DB,Azure Cosmos DB 和 Cortana 等大型解决方案都在使用 Service Fabric 构建。

Service Fabric 会带来如下好处:

支持创建无状态和有状态的微服务,通过云平台来伸缩他们,以应对高复杂度、低延迟、数据密集的情况

通过应用程序级别的感知和洞察,为微服务带来编排和自动化的优势

解决分布式系统诸如状态管理这样的难点,为开发人员提供应用程序生命周期管理的能力以便随着业务的增长无需重构系统架构

相关工具会集成到 Visual Studio 中,也会提供相应命令行工具,以便开发人员能够快速和轻易地上手

同时支持.NET和Java,这个特性特别适合目前国内原来很多投资于 .NET 平台。

那么接下来,我们主要来详细看下Service Fabric是什么?有哪些特性?

Azure Service Fabric 是一款分布式系统平台,可方便用户轻松打包、部署和管理可缩放的可靠微服务和容器。Service Fabric 还解决了开发和管理云本机应用程序面临的重大难题。开发人员和管理员不需解决复杂的基础结构问题,只需专注于实现苛刻的任务关键型工作负荷,即那些可缩放、可靠且易于管理的工作负荷。Service Fabric 代表了下一代平台,用于生成和管理在容器中运行的企业级单层云规模应用程序。

利用 Service Fabric,可以生成和管理可缩放的可靠应用程序,其中包括在计算机的共享池(称为“群集”)中高密度运行的微服务。 它提供了复杂的轻型运行时,用于生成在容器中运行且可缩放的无状态和有状态分布式微服务。 它还提供了全面的应用程序管理功能,用于预配、部署、监视、升级/修补和删除已部署的应用程序(包括容器化服务)。

Service Fabric 为当今很多 Microsoft 服务提供技术支持,包括 Azure SQL 数据库、Azure Cosmos DB、Cortana、Microsoft Power BI、Microsoft Intune、Azure 事件中心、Azure IoT 中心、Dynamics 365、Skype for Business 以及其他许多核心 Azure 服务。

Service Fabric 专为创建云本机服务而设计,它们可以根据需要刚开始很小,随后成长为包含数百或数千台计算机的大规模服务。

当今的 Internet 规模的服务是使用微服务构建而成的。 微服务的例子包括协议网关、用户配置文件、购物车,清单处理、排队和缓存等。 Service Fabric 是微服务平台,为每个无状态或有状态微服务(或容器)命名独一无二的名称。

Service Fabric 为由这些微服务组成的应用程序提供全面的运行时和生命周期管理功能。 它在 Service Fabric 群集间部署和激活的容器内部托管微服务。 从虚拟机移动到容器可能使密度出现数量级增长。 同样,如果从容器迁移到这些容器中的微服务,也可能会出现另一个密度数量级。 例如,单个 Azure SQL 数据库群集包含数百台计算机,这些计算机运行数以万计的容器,这些容器总共托管数十万个数据库。 每个数据库都是一个 Service Fabric 有状态微服务。

好了,上面是官方对Service Fabric的概述,如果你觉得上面文字太多,自己英文还可以的话,可以看下Service Fabric的介绍视频。

下面我们用自己的语言来谈下Service Fabric框架,如果说Dubbo是以SOA为代表的第一代服务治理框架,SpringCloud是以微服务为代表的第二代框架,那么Service Fabric基于ServiceMesh的第三代框架,当然这里还有google的istio,还有华为云的CSE等等其它优秀框架。

下面对比下Service Fabric和istio:

Service Fabric和SpringCloud比较:

此外,Service Fabric不限 OS 和云

对于 Windows 开发,Service Fabric .NET SDK 与 Visual Studio 和 Powershell 集成。 请参阅在 Windows 上准备开发环境。 对于 Linux 开发,Service Fabric Java SDK 与 Eclipse 集成,Yeoman 用于为 Java、.NET Core 和容器应用程序生成模板。 请参阅在 Linux 上准备开发环境

有关创建群集的详细信息,请阅读在 Windows Server 或 Linux 上创建群集;有关创建 Azure 群集的详细信息,请阅读通过 Azure 门户创建群集。

总之,通过使用 Service Fabric,可以:

·部署到 Azure 或部署到运行 Windows 或 Linux 的本地数据中心,而无需改变任何代码。 只需编写一次,即可部署到 Service Fabric 群集的任意位置。

·使用 Service Fabric 编程模型、容器或任意代码,开发由微服务组成的可缩放应用程序。

·开发高度可靠的无状态和有状态微服务。 使用有状态微服务,简化应用程序设计。

·使用新 Reliable Actors 编程模型,创建具有独立式代码和状态的云对象。

·部署和安排容器,包括 Windows 容器和 Linux 容器。 Service Fabric 是可感知数据的有状态容器 Orchestrator。

·几秒内就可以高密度部署应用程序,即每台计算机部署数百或数千个应用程序或容器。

·同时部署各种不同版本的相同应用程序,且可以单独升级每个应用程序。

·无需停机,即可管理应用程序生命周期,包括重大升级和非重大升级。

·缩放群集中的节点数。 缩放节点数的同时,应用程序也会随之自动缩放。

·监视并诊断应用程序的运行状况,并设置策略以执行自动修复。

·观察资源均衡器如何跨群集安排重新分发应用程序。 Service Fabric 可从故障中恢复,并基于可用资源优化负载分布。

 

from:http://baijiahao.baidu.com/s?id=1595179278058800506&wfr=spider&for=pc