Informazioni su Service FabricSo you want to learn about Service Fabric?

Azure Service Fabric è una piattaforma di sistemi distribuiti che semplifica la creazione di pacchetti, la distribuzione e la gestione di microservizi scalabili e affidabili.Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices. Service Fabric ha una struttura molto estesa e richiede un apprendimento completo.Service Fabric has a large surface area, however, and there's a lot to learn. Questo articolo offre un riepilogo di Service Fabric e descrive i concetti di base, i modelli di programmazione, il ciclo di vita dell'applicazione, i test, i cluster e il monitoraggio dell'integrità.This article provides a synopsis of Service Fabric and describes the core concepts, programming models, application lifecycle, testing, clusters, and health monitoring. Leggere Panoramica e Cosa sono i microservizi? per la presentazione di Service Fabric e per informazioni su come usarlo per creare microservizi.Read the Overview and What are microservices? for an introduction and how Service Fabric can be used to create microservices. Questo articolo non offre un elenco completo dei contenuti ma include collegamenti ad articoli di panoramica e introduttivi su tutte le aree di Service Fabric.This article does not contain a comprehensive content list, but does link to overview and getting started articles for every area of Service Fabric.

Concetti principaliCore concepts

Gli articoli Panoramica della terminologia di Service Fabric, Modellare un'applicazione in Service Fabric e Panoramica dei modelli di programmazione di Service Fabric permettono di approfondire altri concetti e descrizioni, ma questo articolo contiene le nozioni di base.Service Fabric terminology, Application model, and Supported programming models provide more concepts and descriptions, but here are the basics.

Concetti principaliCore conceptsFase di progettazioneDesign timeFase di esecuzioneRun time

Fase di progettazione: tipo di applicazione, tipo di servizio, manifesto e pacchetto dell'applicazione, manifesto e pacchetto del servizioDesign time: application type, service type, application package and manifest, service package and manifest

Il tipo di applicazione è il nome o la versione assegnata a una raccolta di tipi di servizio.An application type is the name/version assigned to a collection of service types. Questo viene definito in un file ApplicationManifest.xml incorporato in una directory del pacchetto dell'applicazione.This is defined in an ApplicationManifest.xml file, which is embedded in an application package directory. I file nella directory del pacchetto dell'applicazione vengono copiati nell'archivio immagini del cluster di Service Fabric.The application package is then copied to the Service Fabric cluster's image store. Da questo tipo di applicazione è quindi possibile creare un'applicazione denominata che viene eseguita all'interno del cluster.You can then create a named application from this application type, which then runs within the cluster.

Il tipo di servizio è il nome o la versione assegnata ai pacchetti di codice, ai pacchetti di dati e ai pacchetti di configurazione del servizio.A service type is the name/version assigned to a service's code packages, data packages, and configuration packages. Questo viene definito in un file ServiceManifest.xml incorporato in una directory del pacchetto del servizio.This is defined in a ServiceManifest.xml file, which is embedded in a service package directory. Un file ApplicationManifest.xml del pacchetto dell'applicazione fa quindi riferimento alla directory del pacchetto del servizio.The service package directory is then referenced by an application package's ApplicationManifest.xml file. All'interno del cluster, dopo aver creato un'applicazione denominata, è possibile creare un servizio denominato da uno dei tipi di servizio del tipo di applicazione.Within the cluster, after creating a named application, you can create a named service from one of the application type's service types. Un tipo di servizio è descritto dal relativo file ServiceManifest.xml.A service type is described by its ServiceManifest.xml file. Il tipo di servizio è composto dalle impostazioni di configurazione del servizio del codice eseguibile, caricate in fase di esecuzione, e dai dati statici utilizzati dal servizio.The service type is composed of executable code service configuration settings, which are loaded at run time, and static data that is consumed by the service.

Tipi di applicazioni di Service Fabric e tipi di servizio

Il pacchetto dell'applicazione è una directory del disco contenente il file ApplicationManifest.xml del tipo di applicazione, che fa riferimento ai pacchetti del servizio per ogni tipo di servizio che costituisce il tipo di applicazione.The application package is a disk directory containing the application type's ApplicationManifest.xml file, which references the service packages for each service type that makes up the application type. Ad esempio, un pacchetto dell'applicazione per il tipo di applicazione posta elettronica può contenere un pacchetto del servizio di accodamento, un pacchetto del servizio front-end e un pacchetto del servizio di database.For example, an application package for an email application type could contain references to a queue service package, a frontend service package, and a database service package. I file nella directory del pacchetto dell'applicazione vengono copiati nell'archivio immagini del cluster di Service Fabric.The files in the application package directory are copied to the Service Fabric cluster's image store.

Il pacchetto del servizio è una directory del disco contenente il file ServiceManifest.xml del tipo di servizio, che fa riferimento al codice, ai dati statici e ai pacchetti di configurazione del tipo di servizio.A service package is a disk directory containing the service type's ServiceManifest.xml file, which references the code, static data, and configuration packages for the service type. Il file ApplicationManifest.xml del tipo di applicazione fa riferimento ai file presenti nella directory del pacchetto del servizio.The files in the service package directory are referenced by the application type's ApplicationManifest.xml file. Ad esempio, un pacchetto del servizio può fare riferimento al codice, ai dati statici e ai pacchetti di configurazione che costituiscono un servizio di database.For example, a service package could refer to the code, static data, and configuration packages that make up a database service.

Fase di esecuzione: cluster e nodi, applicazioni denominate, servizi denominati, partizioni e replicheRun time: clusters and nodes, named applications, named services, partitions, and replicas

Un cluster di Service Fabric è un set di computer fisici o macchine virtuali connesse tramite rete in cui vengono distribuiti e gestiti i microservizi.A Service Fabric cluster is a network-connected set of virtual or physical machines into which your microservices are deployed and managed. I cluster possono supportare migliaia di macchine.Clusters can scale to thousands of machines.

Un computer o una macchina virtuale che fa parte di un cluster viene chiamato nodo.A machine or VM that is part of a cluster is called a node. A ogni nodo viene assegnato un nome (stringa).Each node is assigned a node name (a string). I nodi presentano delle caratteristiche, ad esempio le proprietà di posizionamento.Nodes have characteristics such as placement properties. In ogni computer o macchina virtuale è disponibile un servizio di avvio automatico di Windows, FabricHost.exe, che viene eseguito all'avvio e che a sua volta avvia due eseguibili: Fabric.exe e FabricGateway.exe.Each machine or VM has an auto-start Windows service, FabricHost.exe, which starts running upon boot and then starts two executables: Fabric.exe and FabricGateway.exe. Questi due eseguibili costituiscono il nodo.These two executables make up the node. Negli scenari di sviluppo o test è possibile ospitare più nodi in un singolo PC o una singola VM eseguendo più istanze di Fabric.exe e FabricGateway.exe.For development or testing scenarios, you can host multiple nodes on a single machine or VM by running multiple instances of Fabric.exe and FabricGateway.exe.

Un'applicazione denominata è una raccolta di servizi denominati che esegue una o più funzioni specifiche.A named application is a collection of named services that performs a certain function or functions. Un servizio esegue una funzione completa e autonoma (avvio ed esecuzione indipendenti da altri servizi) ed è costituito da codice, configurazione e dati.A service performs a complete and standalone function (it can start and run independently of other services) and is composed of code, configuration, and data. Al termine della copia di un pacchetto dell'applicazione nell'archivio immagini, è possibile creare un'istanza dell'applicazione all'interno del cluster specificando il tipo di applicazione del pacchetto dell'applicazione, usando nome e versione corrispondenti.After an application package is copied to the image store, you create an instance of the application within the cluster by specifying the application package's application type (using its name/version). A ogni istanza del tipo di applicazione viene assegnato un nome URI simile a fabric:/MyNamedApp.Each application type instance is assigned a URI name that looks like fabric:/MyNamedApp. All'interno di un cluster è possibile creare più applicazioni denominate da un singolo tipo di applicazione.Within a cluster, you can create multiple named applications from a single application type. È anche possibile creare applicazioni denominate da tipi di applicazione diversi.You can also create named applications from different application types. L'amministrazione e il controllo delle versioni sono gestiti in modo indipendente per ogni applicazione.Each named application is managed and versioned independently.

Dopo aver creato un'applicazione denominata, è possibile creare un'istanza di uno dei relativi tipi di servizio, ovvero un servizio denominato, all'interno del cluster. A tale scopo è necessario specificare il tipo di servizio, usando nome e versione corrispondenti.After creating a named application, you can create an instance of one of its service types (a named service) within the cluster by specifying the service type (using its name/version). A ogni istanza del tipo di servizio viene assegnato un nome URI con un ambito definito dall'URI della relativa applicazione denominata.Each service type instance is assigned a URI name scoped under its named application's URI. Se, ad esempio, si crea un servizio denominato "MyDatabase" all'interno di un'applicazione denominata "MyNamedApp", l'URI corrispondente sarà simile al seguente: fabric:/MyNamedApp/MyDatabase.For example, if you create a "MyDatabase" named service within a "MyNamedApp" named application, the URI looks like: fabric:/MyNamedApp/MyDatabase. All'interno di un'applicazione denominata è possibile creare uno o più servizi denominati.Within a named application, you can create one or more named services. Ogni servizio denominato può avere uno schema di partizione e numeri di istanze/repliche specifici.Each named service can have its own partition scheme and instance/replica counts.

Sono disponibili due tipi di servizi: con e senza stato.There are two types of services: stateless and stateful. I servizi senza stato archiviano lo stato permanente in un servizio di archiviazione esterno, ad esempio Archiviazione di Azure, database SQL di Azure o Azure Cosmos DB.Stateless services can store persistent state in an external storage service such as Azure Storage, Azure SQL Database, or Azure Cosmos DB. Usare un servizio senza stato nei casi in cui il servizio non prevede alcun tipo di archivio permanente.Use a stateless service when the service has no persistent storage at all. Un servizio con stato usa Service Fabric per gestire lo stato del servizio tramite i modelli di programmazione Reliable Collections o Reliable Actors.A stateful service uses Service Fabric to manage your service's state via its Reliable Collections or Reliable Actors programming models.

Quando si crea un servizio denominato, è necessario specificare uno schema di partizione.When creating a named service, you specify a partition scheme. I servizi con grandi quantità di stato suddividono i dati tra partizioni.Services with large amounts of state split the data across partitions. Ogni partizione è responsabile di una parte dello stato completo del servizio, che verrà distribuito tra i nodi del cluster.Each partition is responsible for a portion of the complete state of the service, which is spread across the cluster's nodes.

Il diagramma seguente illustra la relazione tra applicazioni e istanze di servizi, partizioni e repliche.The following diagram shows the relationship between applications and service instances, partitions, and replicas.

Partizioni e repliche in un servizio

Partizionamento, scalabilità e disponibilitàPartitioning, scaling, and availability

Il partizionamento non è una procedura specifica di Service Fabric.Partitioning is not unique to Service Fabric. Una forma molto conosciuta di partizionamento è il partizionamento dei dati o partizionamento orizzontale.A well known form of partitioning is data partitioning, or sharding. I servizi con stato con grandi quantità di stato suddividono i dati tra partizioni.Stateful services with large amounts of state split the data across partitions. Ogni partizione è responsabile di una parte dello stato completo del servizio.Each partition is responsible for a portion of the complete state of the service.

Le repliche di ogni partizione vengono distribuite tra i nodi del cluster, il che consente la scalabilità dello stato del servizio denominato.The replicas of each partition are spread across the cluster's nodes, which allows your named service's state to scale. Quando i dati richiedono uno spazio maggiore, le partizioni crescono e Service Fabric ribilancia le partizioni tra i nodi per usare in modo efficiente le risorse hardware.As the data needs grow, partitions grow, and Service Fabric rebalances partitions across nodes to make efficient use of hardware resources. Se si aggiungono nuovi nodi al cluster, Service Fabric ribilancerà le repliche di partizione sul nuovo e maggiore numero di nodi.If you add new nodes to the cluster, Service Fabric will rebalance the partition replicas across the increased number of nodes. Le prestazioni complessive dell'applicazione migliorano e la concorrenza per l'accesso alla memoria si riduce.Overall application performance improves and contention for access to memory decreases. Se i nodi del cluster non vengono usati in modo efficiente, è possibile ridurre il numero di nodi del cluster.If the nodes in the cluster are not being used efficiently, you can decrease the number of nodes in the cluster. Service Fabric ribilancia nuovamente le repliche di partizione sul nuovo e minore numero di nodi, per usare al meglio l'hardware in ogni nodo.Service Fabric again rebalances the partition replicas across the decreased number of nodes to make better use of the hardware on each node.

All'interno di una partizione, per i servizi denominati senza stato sono presenti istanze mentre per i servizi denominati con stato sono presenti repliche.Within a partition, stateless named services have instances while stateful named services have replicas. In genere i servizi denominati senza stato avranno sempre una sola partizione, dal momento che non hanno uno stato interno.Usually, stateless named services only ever have one partition since they have no internal state. Le istanze della partizione garantiscono la disponibilità.The partition instances provide for availability. Se un'istanza presenta un errore, le altre continuano a funzionare normalmente e Service Fabric creerà una nuova istanza.If one instance fails, other instances continue to operate normally and then Service Fabric creates a new instance. I servizi denominati con stato gestiscono il proprio stato all'interno delle repliche e ogni partizione contiene un set di repliche dedicato.Stateful named services maintain their state within replicas and each partition has its own replica set. Le operazioni di lettura e scrittura vengono eseguite in una replica (denominata replica primaria).Read and write operations are performed at one replica (called the Primary). I cambiamenti di stato dovuti a operazioni di scrittura vengono replicati in altre repliche (denominate repliche secondarie attive).Changes to state from write operations are replicated to multiple other replicas (called Active Secondaries). Se una replica presenta un errore, Service Fabric ne crea una nuova da quelle esistenti.Should a replica fail, Service Fabric builds a new replica from the existing replicas.

Microservizi con e senza stato per Service FabricStateless and stateful microservices for Service Fabric

Service Fabric consente di compilare applicazioni costituite da microservizi o contenitori.Service Fabric enables you to build applications that consist of microservices or containers. I microservizi senza stato, come i gateway di protocollo, i proxy Web e così via, non mantengono uno stato variabile al di fuori di una richiesta e della relativa risposta fornita dal servizio.Stateless microservices (such as protocol gateways and web proxies) do not maintain a mutable state outside a request and its response from the service. I ruoli di lavoro di Servizi cloud di Azure sono un esempio di servizio senza stato.Azure Cloud Services worker roles are an example of a stateless service. I microservizi con stato, come gli account utente, i database, i dispositivi, i carrelli acquisti e le code, mantengono invece uno stato variabile e autorevole anche all'esterno della richiesta e della relativa risposta.Stateful microservices (such as user accounts, databases, devices, shopping carts, and queues) maintain a mutable, authoritative state beyond the request and its response. Le attuali applicazioni su scala Internet sono costituite da una combinazione di microservizi con e senza stato.Today's Internet-scale applications consist of a combination of stateless and stateful microservices.

Un fattore essenziale per la differenziazione di Service Fabric è la creazione di servizi con stato, mediante i modelli di programmazione incorporati o mediante i servizi con stato in contenitori.A key differentation with Service Fabric is its strong focus on building stateful services, either with the built in programming models or with containerized stateful services. L'articolo Scenari di applicazione di Service Fabric descrive gli scenari in cui vengono usati i servizi con stato.The application scenarios describe the scenarios where stateful services are used.

Perché avere microservizi con stato insieme a quelli senza stato?Why have stateful microservices along with stateless ones? I due motivi principali sono:The two main reasons are:

  • È possibile compilare servizi OLTP (elaborazione delle transazioni online) ad alta velocità, a bassa latenza e tolleranti agli errori mantenendo il codice e i dati nello stesso computer.You can build high-throughput, low-latency, failure-tolerant online transaction processing (OLTP) services by keeping code and data close on the same machine. Alcuni esempi sono le vetrine interattive, le ricerche, i sistemi Internet delle cose (IoT), i sistemi di trading, l'elaborazione delle carte di credito, i sistemi di rilevamento di frodi e la gestione dei record personali.Some examples are interactive storefronts, search, Internet of Things (IoT) systems, trading systems, credit card processing and fraud detection systems, and personal record management.
  • È possibile semplificare la progettazione dell'applicazione.You can simplify application design. Per i microservizi con stato non è più necessario usare le code e le cache aggiuntive generalmente richieste per soddisfare i requisiti di disponibilità e latenza di un'applicazione interamente senza stato.Stateful microservices remove the need for additional queues and caches, which are traditionally required to address the availability and latency requirements of a purely stateless application. L'elevata disponibilità e la bassa latenza dei servizi con stato implicano un uso ridotto di componenti mobili da gestire in un'applicazione nel suo insieme.Stateful services are naturally high-availability and low-latency, which reduces the number of moving parts to manage in your application as a whole.

Modelli di programmazione supportatiSupported programming models

Service Fabric offre diversi modi per scrivere e gestire i servizi.Service Fabric offers multiple ways to write and manage your services. I servizi possono usare le API di Service Fabric per sfruttare appieno le funzionalità della piattaforma e i framework applicazione.Services can use the Service Fabric APIs to take full advantage of the platform's features and application frameworks. I servizi possono essere anche qualsiasi programma eseguibile compilato scritto in qualsiasi linguaggio e ospitato in un cluster di Service Fabric.Services can also be any compiled executable program written in any language and hosted on a Service Fabric cluster. Per altre informazioni, vedere l'articolo relativo ai modelli di programmazione supportati.For more information, see Supported programming models.

ContenitoriContainers

Per impostazione predefinita, Service Fabric distribuisce e attiva i servizi come processi.By default, Service Fabric deploys and activates services as processes. Service Fabric può anche distribuire servizi in contenitori.Service Fabric can also deploy services in containers. Un aspetto importante è che è possibile combinare servizi in processi e servizi in contenitori nella stessa applicazione.Importantly, you can mix services in processes and services in containers in the same application. Service Fabric supporta la distribuzione di contenitori di Linux e contenitori di Windows in Windows Server 2016.Service Fabric supports deployment of Linux containers Windows containers on Windows Server 2016. È possibile distribuire applicazioni esistenti, servizi senza stato o servizi con stato in contenitori.You can deploy existing applications, stateless services, or stateful services in containers.

Reliable ServicesReliable Services

Reliable Services è un framework leggero per la scrittura di servizi che si integrano con la piattaforma di Service Fabric sfruttandone il set completo di funzionalità.Reliable Services is a lightweight framework for writing services that integrate with the Service Fabric platform and benefit from the full set of platform features. Reliable Services può essere senza stato, come la maggior parte delle piattaforme di servizio, ad esempio server Web o ruoli di lavoro in Servizi cloud di Azure, in cui lo stato viene mantenuto in una soluzione esterna, ad esempio il database di Azure o archiviazione tabelle di Azure.Reliable Services can be stateless (similar to most service platforms, such as web servers or Worker Roles in Azure Cloud Services), where state is persisted in an external solution, such as Azure DB or Azure Table Storage. Reliable Services può essere anche con stato e lo stato viene mantenuto direttamente nel servizio stesso tramite Reliable Collections.Reliable Services can also be stateful, where state is persisted directly in the service itself using Reliable Collections. Lo stato viene reso altamente disponibile tramite la replica e distribuito tramite partizionamento, il tutto gestito automaticamente da Service Fabric.State is made highly available through replication and distributed through partitioning, all managed automatically by Service Fabric.

Reliable ActorsReliable Actors

Reliable Actor, basato su Reliable Services, è un framework applicazione che implementa il criterio Actor virtuale, basato a sua volta sul modello di progettazione dell'attore.Built on top of Reliable Services, the Reliable Actor framework is an application framework that implements the Virtual Actor pattern, based on the actor design pattern. Il framework Reliable Actor usa unità di calcolo e di stato indipendenti con esecuzione a thread singolo chiamate attori.The Reliable Actor framework uses independent units of compute and state with single-threaded execution called actors. Il framework Reliable Actors offre la comunicazione integrata per gli attori nonché configurazioni di mantenimento dello stato e scalabilità preimpostate.The Reliable Actor framework provides built in communication for actors and pre-set state persistence and scale-out configurations.

ASP.NET CoreASP.NET Core

Service Fabric è integrato con ASP.NET Core come modello di programmazione di prima classe per la creazione di applicazioni Web e API.Service Fabric integrates with ASP.NET Core as a first class programming model for building web and API applications. ASP.NET Core può essere usato in due modi diversi in Service Fabric:ASP.NET Core can be used in two different ways in Service Fabric:

  • Ospitato come eseguibile guest.Hosted as a guest executable. Questa modalità viene usata principalmente per eseguire applicazioni ASP.NET Core esistenti in Service Fabric senza apportare modifiche al codice.This is primarily used to run existing ASP.NET Core applications on Service Fabric with no code changes.
  • Eseguito in un servizio Reliable Services.Run inside a Reliable Service. Questa modalità offre una migliore integrazione con il runtime di Service Fabric e consente servizi ASP.NET Core con stato.This allows better integration with the Service Fabric runtime and allows stateful ASP.NET Core services.

Eseguibili guestGuest executables

Un eseguibile guest è un eseguibile arbitrario esistente, scritto in un qualsiasi linguaggio, ospitato in un cluster di Service Fabric insieme ad altri servizi.A guest executable is an existing, arbitrary executable (written in any language) hosted on a Service Fabric cluster alongside other services. Gli eseguibili guest non si integrano direttamente con le API di Service Fabric.Guest executables do not integrate directly with Service Fabric APIs. Tuttavia sfruttano le funzionalità offerte dalla piattaforma, quali report di integrità e caricamento personalizzati e individuabilità dei servizi mediante chiamate ad API REST.However they still benefit from features the platform offers, such as custom health and load reporting and service discoverability by calling REST APIs. Gli eseguibili guest dispongono anche di supporto completo del ciclo di vita dell'applicazione.They also have full application lifecycle support.

Ciclo di vita dell'applicazioneApplication lifecycle

Analogamente ad altre piattaforme, un'applicazione su Service Fabric in genere passa attraverso le fasi seguenti: progettazione, sviluppo, test, distribuzione, aggiornamento, manutenzione e rimozione.As with other platforms, an application on Service Fabric usually goes through the following phases: design, development, testing, deployment, upgrade, maintenance, and removal. Service Fabric di Azure offre un supporto di prima categoria per l'intero ciclo di vita delle applicazioni cloud, dallo sviluppo alla distribuzione, alla gestione giornaliera, alla manutenzione e infine alla rimozione delle autorizzazioni.Service Fabric provides first-class support for the full application lifecycle of cloud applications, from development through deployment, daily management, and maintenance to eventual decommissioning. Il modello di servizio abilita diversi ruoli per la partecipazione indipendente al ciclo di vita delle applicazioni.The service model enables several different roles to participate independently in the application lifecycle. Ciclo di vita dell'applicazione di Service Fabric offre una panoramica delle interfacce API e del modo in cui vengono usate dai diversi ruoli nelle fasi del ciclo di vita di un'applicazione di Service Fabric.Service Fabric application lifecycle provides an overview of the APIs and how they are used by the different roles throughout the phases of the Service Fabric application lifecycle.

Il ciclo di vita dell'intera applicazione può essere gestito tramite cmdlet di PowerShell, le API C#, le API Java e le API REST.The entire app lifecycle can be managed using PowerShell cmdlets, C# APIs, Java APIs, and REST APIs. È possibile anche configurare pipeline di distribuzione/integrazione continua con strumenti quali Visual Studio Team Services o Jenkins.You can also set up continuous integration/continuous deployment pipelines using tools such as Visual Studio Team Services or Jenkins.

Il video di Microsoft Virtual Academy seguente illustra come gestire il ciclo di vita dell'applicazione:

The following Microsoft Virtual Academy video describes how to manage your application lifecycle:

Testare applicazioni e serviziTest applications and services

Per creare servizi realmente estesi a livello di cloud, è fondamentale verificare che i servizi e le applicazioni siano in grado di resistere agli errori reali.To create truly cloud-scale services, it is critical to verify that your applications and services can withstand real-world failures. Il servizio di analisi degli errori è progettato per testare servizi basati su Service Fabric.The Fault Analysis Service is designed for testing services that are built on Service Fabric. Con il servizio di analisi degli errori è possibile causare errori significativi ed eseguire scenari di test completi delle applicazioni.With the Fault Analysis Service, you can induce meaningful faults and run complete test scenarios against your applications. Tali errori e scenari verificano e convalidano i numerosi stati e le transizioni sperimentate da un servizio per la relativa durata, il tutto in modo controllato, sicuro e coerente.These faults and scenarios exercise and validate the numerous states and transitions that a service will experience throughout its lifetime, all in a controlled, safe, and consistent manner.

Le azioni vengono usate su un servizio a scopo di test mediante singoli errori.Actions target a service for testing using individual faults. Uno sviluppatore di servizi può utilizzarle come blocchi predefiniti per scrivere scenari complicati.A service developer can use these as building blocks to write complicated scenarios. Esempi di errori simulati sono:Examples of simulated faults are:

  • Riavviare un nodo per simulare un qualsiasi numero di situazioni in cui un computer o una VM viene riavviata.Restart a node to simulate any number of situations where a machine or VM is rebooted.
  • Spostare una replica del servizio con stato per simulare il bilanciamento del carico, il failover o l'aggiornamento dell'applicazione.Move a replica of your stateful service to simulate load balancing, failover, or application upgrade.
  • Richiamare la perdita del quorum in un servizio con stato per creare una situazione in cui le operazioni di scrittura non possono continuare perché il numero delle repliche di "backup" o "secondarie" non è sufficiente per accettare nuovi dati.Invoke quorum loss on a stateful service to create a situation where write operations can't proceed because there aren't enough "back-up" or "secondary" replicas to accept new data.
  • Richiamare la perdita di dati in un servizio con stato per creare una situazione in cui tutto lo stato in memoria sia completamente cancellato.Invoke data loss on a stateful service to create a situation where all in-memory state is completely wiped out.

Gli scenari sono operazioni complesse costituite da una o più azioni.Scenarios are complex operations composed of one or more actions. Il servizio di analisi degli errori offre due scenari completi incorporati:The Fault Analysis Service provides two built-in complete scenarios:

  • Lo scenario Chaos simula in tutto il cluster continui errori interfoliati, normali e anomali, per lunghi periodi di tempo.Chaos scenario- simulates continuous, interleaved faults (both graceful and ungraceful) throughout the cluster over extended periods of time.
  • Lo scenario di failover è una versione dello scenario di test chaos destinata a una specifica partizione del servizio che non ha effetti sugli altri servizi.Failover scenario- a version of the chaos test scenario that targets a specific service partition while leaving other services unaffected.

ClusterClusters

Un cluster di Service Fabric è un set di computer fisici o macchine virtuali connesse tramite rete in cui vengono distribuiti e gestiti i microservizi.A Service Fabric cluster is a network-connected set of virtual or physical machines into which your microservices are deployed and managed. I cluster possono supportare migliaia di macchine.Clusters can scale to thousands of machines. Un computer o una VM che fa parte di un cluster è chiamato nodo cluster.A machine or VM that is part of a cluster is called a cluster node. A ogni nodo viene assegnato un nome (stringa).Each node is assigned a node name (a string). I nodi presentano delle caratteristiche, ad esempio le proprietà di posizionamento.Nodes have characteristics such as placement properties. In ogni computer o VM è disponibile un servizio di avvio automatico, FabricHost.exe, che viene eseguito all'avvio e che a sua volta avvia due eseguibili: Fabric.exe e FabricGateway.exe.Each machine or VM has an auto-start service, FabricHost.exe, which starts running upon boot and then starts two executables: Fabric.exe and FabricGateway.exe. Questi due eseguibili costituiscono il nodo.These two executables make up the node. Negli scenari di test è possibile ospitare più nodi in un singolo PC o una singola macchina virtuale eseguendo più istanze di Fabric.exe e FabricGateway.exe.For testing scenarios, you can host multiple nodes on a single machine or VM by running multiple instances of Fabric.exe and FabricGateway.exe.

È possibile creare cluster di Service Fabric su qualsiasi macchina virtuale o computer che esegue Windows Server o Linux.Service Fabric clusters can be created on virtual or physical machines running Windows Server or Linux. È quindi possibile distribuire ed eseguire applicazioni di Service Fabric in qualsiasi ambiente in cui è presente un set di computer Windows Server o Linux interconnessi, in locale, in Microsoft Azure o con qualsiasi provider di cloud.You are able to deploy and run Service Fabric applications in any environment where you have a set of Windows Server or Linux computers that are interconnected: on-premises, on Microsoft Azure, or on any cloud provider.

Il video seguente di Microsoft Virtual Academy descrive i cluster di Service Fabric:

The following Microsoft Virtual Academy video describes Service Fabric clusters:

Cluster in AzureClusters on Azure

L'esecuzione dei cluster di Service Fabric in Azure offre l'integrazione con altre funzionalità e servizi; rendendo più facili e affidabili le operazioni e la gestione del cluster.Running Service Fabric clusters on Azure provides integration with other Azure features and services, which makes operations and management of the cluster easier and more reliable. Un cluster è una risorsa di Azure Resource Manager, pertanto è possibile modellare i cluster come qualsiasi altra risorsa in Azure.A cluster is an Azure Resource Manager resource, so you can model clusters like any other resources in Azure. Resource Manager fornisce inoltre una gestione semplificata di tutte le risorse utilizzate dal cluster come una singola unità.Resource Manager also provides easy management of all resources used by the cluster as a single unit. I cluster in Azure sono integrati con la diagnostica di Azure e Log Analytics.Clusters on Azure are integrated with Azure diagnostics and Log Analytics. Poiché i tipi di nodo del cluster sono set di scalabilità di macchina virtuale, la funzionalità di scalabilità automatica è incorporata.Cluster node types are virtual machine scale sets, so autoscaling functionality is built in.

È possibile creare un cluster in Azure tramite il portale di Azure, da un modello o da Visual Studio.You can create a cluster on Azure through the Azure portal, from a template, or from Visual Studio.

Service Fabric su Linux consente di compilare, distribuire e gestire applicazioni a disponibilità e scalabilità elevata in tale ambiente proprio come in Windows.Service Fabric on Linux enables you to build, deploy, and manage highly available, highly scalable applications on Linux just as you would on Windows. I framework di Service Fabric (Reliable Services e Reliable Actors) sono disponibili in Java su Linux in aggiunta a C# (.NET Core).The Service Fabric frameworks (Reliable Services and Reliable Actors) are available in Java on Linux, in addition to C# (.NET Core). È anche possibile compilare servizi eseguibili guest con qualsiasi linguaggio o framework.You can also build guest executable services with any language or framework. È supportata anche l'orchestrazione di contenitori Docker.Orchestrating Docker containers is also supported. che possono eseguire eseguibili guest o servizi nativi di Service Fabric, che usano i framework di Service Fabric.Docker containers can run guest executables or native Service Fabric services, which use the Service Fabric frameworks. Per altre informazioni, vedere Service Fabric in Linux.For more information, read about Service Fabric on Linux.

Alcune funzionalità sono supportate in Windows, ma non in Linux.There are some features that are supported on Windows, but not on Linux. Per altre informazioni, vedere Differenze tra Service Fabric in Linux e in Windows.To learn more, read Differences between Service Fabric on Linux and Windows.

Cluster autonomiStandalone clusters

Service Fabric offre un pacchetto di installazione per creare cluster autonomi di Service Fabric in locale o con qualsiasi provider di cloud.Service Fabric provides an installation package for you to create standalone Service Fabric clusters on-premises or on any cloud provider. I cluster autonomi offrono la libertà di ospitare un cluster ovunque si voglia.Standalone clusters give you the freedom to host a cluster wherever you want. Se i dati sono soggetti a vincoli normativi o di conformità o si vuole mantenere i dati locali, è possibile ospitare il proprio cluster e le applicazioni.If your data is subject to compliance or regulatory constraints, or you want to keep your data local, you can host your own cluster and applications. Le applicazioni Service Fabric possono essere eseguite in più ambienti di hosting senza modifiche, pertanto le competenze di creazione di applicazioni sono trasferibili da un ambiente di hosting all'altro.Service Fabric applications can run in multiple hosting environments with no changes, so your knowledge of building applications carries over from one hosting environment to another.

Creare il primo cluster autonomo di Service FabricCreate your first Service Fabric standalone cluster

I cluster Linux autonomi non sono ancora supportati.Linux standalone clusters are not yet supported.

Sicurezza del clusterCluster security

Per impedire a utenti non autorizzati di connettersi ai cluster, è necessario proteggerli, in particolare quando sono in esecuzione carichi di lavoro di produzione.Clusters must be secured to prevent unauthorized users from connecting to your cluster, especially when it has production workloads running on it. La creazione di cluster non protetti, anche se possibile, consente a utenti anonimi di connettersi a un cluster che espone gli endpoint di gestione a Internet pubblico.Although it is possible to create an unsecured cluster, doing so allows anonymous users to connect to it if management endpoints are exposed to the public internet. Non è possibile abilitare la sicurezza in un cluster non protetto in un secondo momento: la protezione del cluster viene abilitata al momento della creazione del cluster stesso.It is not possible to later enable security on an unsecured cluster: cluster security is enabled at cluster creation time.

Gli scenari di sicurezza del cluster sono:The cluster security scenarios are:

  • Sicurezza da nodo a nodoNode-to-node security
  • Sicurezza da client a nodoClient-to-node security
  • Controllo degli accessi in base al ruoloRole-based access control (RBAC)

Per altre informazioni, vedere Proteggere un cluster.For more information, read Secure a cluster.

RidimensionamentoScaling

Se si aggiungono nuovi nodi al cluster, Service Fabric ribilancerà le repliche e istanze di partizione sul nuovo e maggiore numero di nodi.If you add new nodes to the cluster, Service Fabric rebalances the partition replicas and instances across the increased number of nodes. Le prestazioni complessive dell'applicazione migliorano e la concorrenza per l'accesso alla memoria si riduce.Overall application performance improves and contention for access to memory decreases. Se i nodi del cluster non vengono usati in modo efficiente, è possibile ridurre il numero di nodi del cluster.If the nodes in the cluster are not being used efficiently, you can decrease the number of nodes in the cluster. Service Fabric ribilancia nuovamente le repliche e le istanze di partizione sul nuovo e minore numero di nodi, per usare al meglio l'hardware in ogni nodo.Service Fabric again rebalances the partition replicas and instances across the decreased number of nodes to make better use of the hardware on each node. È possibile scalare i cluster in Azure manualmente o a livello di codice.You can scale clusters on Azure either manually or programmatically. I cluster autonomi possono essere scalati manualmente.Standalone clusters can be scaled manually.

Aggiornamenti dei clusterCluster upgrades

Periodicamente vengono rilasciate nuove versioni del runtime di Service Fabric.Periodically, new versions of the Service Fabric runtime are released. Eseguire gli aggiornamenti del runtime o dell'infrastruttura nel cluster in modo che sia sempre in esecuzione una versione supportata.Perform runtime, or fabric, upgrades on your cluster so that you are always running a supported version. Oltre agli aggiornamenti dell'infrastruttura, è possibile aggiornare anche la configurazione del cluster, ad esempio i certificati o le porte delle applicazioni.In addition to fabric upgrades, you can also update cluster configuration such as certificates or application ports.

Un cluster di Service Fabric è una risorsa di proprietà dell'utente parzialmente gestita da Microsoft.A Service Fabric cluster is a resource that you own, but is partly managed by Microsoft. Microsoft è responsabile dell'applicazione delle patch al sistema operativo sottostante e dell'implementazione degli aggiornamenti dell'infrastruttura sul cluster.Microsoft is responsible for patching the underlying OS and performing fabric upgrades on your cluster. È possibile configurare il cluster per ricevere gli aggiornamenti automatici dell'infrastruttura quando Microsoft rilascia una nuova versione oppure scegliere di selezionare la versione supportata dell'infrastruttura che si vuole.You can set your cluster to receive automatic fabric upgrades, when Microsoft releases a new version, or choose to select a supported fabric version that you want. Gli aggiornamenti di infrastruttura e configurazione possono essere configurati tramite il portale di Azure o Resource Manager.Fabric and configuration upgrades can be set through the Azure portal or through Resource Manager. Per altre informazioni, vedere Aggiornare un cluster di Service Fabric.For more information, read Upgrade a Service Fabric cluster.

Un cluster autonomo è una risorsa che si possiede interamente.A standalone cluster is a resource that you entirely own. Perciò si è responsabili dell'applicazione delle patch al sistema operativo sottostante e dell'avvio degli aggiornamenti dell'infrastruttura.You are responsible for patching the underlying OS and initiating fabric upgrades. Se il cluster può connettersi ad https://www.microsoft.com/download, è possibile configurare il cluster in modo che scarichi ed esegua automaticamente il provisioning del nuovo pacchetto di runtime di Service Fabric.If your cluster can connect to https://www.microsoft.com/download, you can set your cluster to automatically download and provision the new Service Fabric runtime package. Quindi si avvierà l'aggiornamento.You would then initiate the upgrade. Se il cluster non può accedere ad https://www.microsoft.com/download, è possibile scaricare manualmente il nuovo pacchetto di runtime da un computer connesso a Internet e quindi avviare l'aggiornamento.If your cluster can't access https://www.microsoft.com/download, you can manually download the new runtime package from an internet connected machine and then initiate the upgrade. Per altre informazioni, vedere Aggiornare il cluster autonomo di Azure Service Fabric in Windows Server.For more information, read Upgrade a standalone Service Fabric cluster.

Monitoraggio dell’integritàHealth monitoring

In Service Fabric è disponibile un modello di integrità progettato per contrassegnare condizioni di non integrità di cluster e applicazioni in entità specifiche, come i nodi cluster e le repliche dei servizi.Service Fabric introduces a health model designed to flag unhealthy cluster and application conditions on specific entities (such as cluster nodes and service replicas). Il modello di integrità usa i reporter di integrità, costituiti da watchdog e componenti di sistema.The health model uses health reporters (system components and watchdogs). Lo scopo è semplificare e velocizzare la diagnosi e la risoluzione dei problemi.The goal is easy and fast diagnosis and repair. Gli autori del servizio devono pensare in anticipo all'integrità e a come progettare i report sull'integrità.Service writers need to think upfront about health and how to design health reporting. È necessario segnalare tutte le condizioni che possono influire sull'integrità, soprattutto se aiutano a risalire alla causa dei problemi.Any condition that can impact health should be reported on, especially if it can help flag problems close to the root. Le informazioni sull'integrità consentono di risparmiare tempo ed energie per il debug e l'analisi quando il servizio sarà in esecuzione su vasta scala in produzione.The health information can save time and effort on debugging and investigation once the service is up and running at scale in production.

I generatori di report di Service Fabric eseguono il monitoraggio di condizioni di particolare interesse.The Service Fabric reporters monitor identified conditions of interest. Generano report su tali condizioni in base alla visualizzazione locale.They report on those conditions based on their local view. L'archivio integrità aggrega i dati sull'integrità inviati da tutti i reporter per determinare se le entità sono complessivamente integre.The health store aggregates health data sent by all reporters to determine whether entities are globally healthy. Il modello è concepito per essere completo, flessibile e facile da usare.The model is intended to be rich, flexible, and easy to use. La qualità dei report sull'integrità determina il livello di accuratezza della visualizzazione dell'integrità del cluster.The quality of the health reports determines the accuracy of the health view of the cluster. I falsi positivi che visualizzano erroneamente problemi di non integrità possono influire negativamente sugli aggiornamenti o su altri servizi che usano i dati di integrità,False positives that wrongly show unhealthy issues can negatively impact upgrades or other services that use health data. come ad esempio i servizi di ripristino e i meccanismi di avviso.Examples of such services are repair services and alerting mechanisms. Pertanto, è necessario creare report che segnalino le condizioni a cui si è interessati nel miglior modo possibile.Therefore, some thought is needed to provide reports that capture conditions of interest in the best possible way.

I report possono essere creati da:Reporting can be done from:

  • La replica o istanza del servizio di Service Fabric monitorato.The monitored Service Fabric service replica or instance.
  • Watchdog interni distribuiti come servizio di Service Fabric, ad esempio un servizio senza stato di Service Fabric che monitora le condizioni e genera i report.Internal watchdogs deployed as a Service Fabric service (for example, a Service Fabric stateless service that monitors conditions and issues reports). Il watchdog può essere distribuito su tutti i nodi o è possibile creare un'affinità con il servizio monitorato.The watchdogs can be deployed on all nodes or can be affinitized to the monitored service.
  • Watchdog interni eseguiti sui nodi di Service Fabric ma non implementati come servizi di Service Fabric.Internal watchdogs that run on the Service Fabric nodes but are not implemented as Service Fabric services.
  • Watchdog esterni che interrogano la risorsa dall'esterno del cluster di Service Fabric, ad esempio un servizio di monitoraggio come Gomez.External watchdogs that probe the resource from outside the Service Fabric cluster (for example, monitoring service like Gomez).

I componenti di Azure Service Fabric forniscono report sull'integrità predefiniti su tutte le entità del cluster.Out of the box, Service Fabric components report health on all entities in the cluster. I report sull'integrità del sistema forniscono la visibilità delle funzionalità del cluster e dell'applicazione e contrassegnano i problemi riscontrati a livello di integrità.System health reports provide visibility into cluster and application functionality and flag issues through health. Per le applicazioni e i servizi, i report sull'integrità del sistema verificano che le entità siano implementate e si comportino correttamente dal punto di vista del runtime di Service Fabric.For applications and services, system health reports verify that entities are implemented and are behaving correctly from the perspective of the Service Fabric runtime. I report non forniscono il monitoraggio dell'integrità della logica di business del servizio o il rilevamento dei processi bloccati.The reports do not provide any health monitoring of the business logic of the service or detect hung processes. Per aggiungere informazioni di integrità specifiche della logica del servizio, implementare report sull'integrità personalizzati nei servizi.To add health information specific to your service's logic, implement custom health reporting in your services.

Service Fabric offre diversi modi per visualizzare i report sull'integrità aggregati nell'archivio di integrità:Service Fabric provides multiple ways to view health reports aggregated in the health store:

Il video seguente di Microsoft Virtual Academy descrive i concetti del modello di integrità di Service Fabric e il suo uso:

The following Microsoft Virtual Academy video describes the Service Fabric health model and how it's used:

Passaggi successiviNext steps