学习和使用微服务体系架构(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 应用,包括:
Honeywell
,PCL Construction
,BMW
,Schneider 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来设计微服务应用系统
关于Stateless
和Stateful
, 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, 另外也包含两种编程模式:
- Reliable Service:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-introduction
- Reliable Actors: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-actors-introduction
Stateless
Stateful