一切福田,不離方寸,從心而覓,感無不通。

微服务之Service Fabric 系列 (一):概览、环境安装

参考

微软官方文档  service fabric

百家号   大话微服务架构之微服务框架微软ServiceFabric正式开源

一、概述

1.概念

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

  2.微服务

    微服务是指用小型服务集合来构建服务端应用的方法,每个服务在独立的进程中运行,服务间通过特定协议(http,AMQP)通信,每个服务能够独立开发、部署,拥有自己的领域数据模型和领域逻辑,可以有不同的数据存储技术甚至是不同的编程语言。

    微服务的目的在:解耦。解耦是永恒的主题,依赖注入是为了解耦,应用分层是为了解耦,这些可以看做是纵向解耦,而微服务是把应用横向解耦,服务间解耦。

    下图是传统一体式应用开发与微服务开发的对比:

      

 

 

单一式应用包含域特定的功能,通常按照功能层来划分,例如传统三层。

单一式应用可通过复制到多个服务器/虚拟机/容器上进行扩展。

微服务应用程序将单个功能分隔成单个较小的服务。

微服务方法可通过独立部署每个服务而扩展,跨服务器/虚拟机/容器创建这些服务的实例。

 

service fabric 从三方面来帮助我们使用微服务的方式来构建应用:

①提供系统服务的平台,用于部署、升级、检测和重启失败的服务、发现服务、路由消息、管理状态和监视运行状况

②能够部署在容器中运行或作为进程运行的应用程序。

③有助于以微服务形式生成应用程序的生产编程 API:ASP.NET Core、Reliable Actors 和 Reliable Services。 可以选择使用任意代码来生成微服务。 但使用这些 API 不仅可让作业变得更简单,也能更深入地与平台集成。 例如,可以获取运行状况和诊断信息,或利用内置的高可用性

下图是service fabric 与spring cloud 的对比:

 

 

二、应用场景

1.高可用服务:Service Fabric 服务通过创建多个辅助服务副本提供快速的故障转移。 节点、进程或单独的服务因硬件或其他故障而不可用时,其中一个辅助副本会提升为主副本,将对服务的损失降到最低。

  2.可缩放服务:可对单独的服务进行分区,以允许在群集范围内扩大状态。 此外,还可以动态创建并删除单独的服务。 服务可以快速简单地从几个节点上的几个实例扩大到多个节点上的数千个实例,并再次减少,具体取决于资源需求。 可以使用 Service Fabric 来生成这些服务并管理其整个生命周期。

  3.基于回话的交互式应用:在应用程序(例如在线游戏或即时消息)需要低延迟读取和写入时,Service Fabric 非常有用。 Service Fabric 使你能够生成这些交互式的有状态应用程序,而无需创建一个无状态应用所需的单独存储或缓存。 (这会增加延迟时间并可能产生一致性问题)。

  4.数据分析和工作流:Service Fabric 的快速读取和写入使必须可靠处理事件或数据流的应用程序成为可能。Service Fabric 还可让应用程序描述处理管道,其中的结果必须能够可靠地传递到下一个处理阶段而不会丢失。这包括交易和财务系统,其中的数据一致性和计算保证至关重要。

三、开发准备

1.Windows下开发环境准备

如果需要在windows上开发并运行service fabric 应用程序,需要安装Service Fabric 运行时、SDK 和工具

具体安装步骤可参照  Windows上安装service fabric

以下是windows 10 下,安装了vs2017的开发人员的环境准备

①重新运行vs2017安装软件,选择修改,选择azure开发

 

 

安装 Microsoft Azure Service Fabric SDK

③启用 PowerShell 脚本执行

 

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
2.Linux下开发环境准备
参照步骤:在 Linux 上准备开发环境

 

from:https://www.cnblogs.com/spaceud/p/9062806.html