Skip to main content

学习和使用微服务体系架构(Service Fabric篇)

分类:  Azure指南 标签:  #Azure #基础 #Azure Cloud Architecting #Azure入门 发布于: 2023-05-28 15:19:03

对于微服务架构的支持,Azure也提供了多种服务,包括如下几种

  • Azure Service Fabric, 也是本章想介绍的服务
  • Azure Kubernet Service, AKS, 这个是k8s的cloud版了。
  • Azure Spring Cloud, 基于Java的微服务解决方案。

三种方案中孰优孰劣,相对比较起来,我还是偏向于Service Fabric和AKS, Spring Cloud限制需要使用基于JVM的工具,限制有点大,我们本章向大家介绍Service Fabric。

Azure Service Fabric提供了一个可靠的,灵活的微服务平台,可以使用该平台提供的技术编写分布式应用以及服务,可以是无状态的也可以是有状态的(Stateless and Stateful), 为了达到最佳的运行效率,所有的应用都会基于资源进行自动平衡。

独特的架构使得Azure Service Fabric能够为用户提供几近实时的数据分析,大规模的内存计算,并行事务处理,事件处理等各种大型的不同类型的应用。你可以根据应用的负载以及使用量非常容易的缩放应用的规模。

如果遇到下述的应用场景,可以考虑使用Azure Service Fabric技术:

  • 大型数据收集处理,物联网: Service Fabric提供无状态用用支持大规模缩放,而且延迟极低。应用在物联网项目中,可以轻松支持数百万设备接入。目前有不少客户使用Azure Service Fabric构建自己的IoT 应用,包括:HoneywellPCL ConstructionBMWSchneider Electric以及Mesh Systems
  • 在线游戏以及在线会话交互类的应用:Service Fabric提供极低的延迟读写,特别适合网游,以及类似需要提供会话保持的项目。
  • 数据分析以及工作流类型的应用。
  • 大数据计算类的应用。
  • 高可用的服务。
  • 对扩展性要求高的应用。

基于Service Fabric的应用设计实例

您可以通过我们的Customer Storices来学习人们是如何通过Service Fabric来架构大型的应用的,请参考地址:https://customers.microsoft.com/search?sq="Azure Service Fabric"&ff=&p=2&so=story_publish_date desc, 以及Azure 微服务https://azure.microsoft.com/solutions/microservice-applications/

使用Statless和Stateful来设计微服务应用系统

关于StatelessStateful, Azure之前推出的Azure Cloud Service Worker role就是一个非常明显的Stateless(无状态)的应用服务。作为对比,Stateful微服务在访问请求和返回中管理会话的状态。这个功能通过简单的API向应用提供了极高的高可用性以及状态一致性,同时通过replication提供事务保证。

Service Fabric的Stateful微服务为所有类型的应用都提供了高可用性,而不仅仅是大数据库或者其他类型的数据存储。技术发展到现在,对于数据的存储已经从单一依赖关系型数据库发展到高可用性的NoSQL数据库。同时应用已经具有了自己的"热"状态,而且自己管理自己的数据,使用类似的技术极大的提高了一致性,可靠性,可用性。

一般情况下,编写一个微服务应用,使用无状态(Statless)的Web应用,例如(Asp.net Core)调用有状态(Stateful)的业务中间层的微服务。无状态应用和有状态应用都部署在Azure Service Fabric的集群中,SF提供相应的工具可以方便用户部署应用。部署在集群中的应用都是独立缩放,而且具有可靠性。

下图展示了一个应用的设计,这个应用包含stateless和stateful, 另外也包含两种编程模式:

Stateless


Stateful