Formação
Módulo
Introdução a Orleães - Training
Saiba o que é a arquitetura orleans, os benefícios que pode proporcionar e como integrá-la com as suas aplicações.
Este browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Orleans:
Orleans baseia-se no "modelo de ator". O modelo de ator teve origem no início da década de 1970 e é hoje um componente central do Orleans. O modelo de ator é um modelo de programação em que cada ator é um objeto leve, simultâneo e imutável que encapsula um pedaço de estado e comportamento correspondente. Os atores se comunicam exclusivamente entre si usando mensagens assíncronas. Orleans inventou notavelmente a abstração do Ator Virtual , em que os atores existem perpetuamente.
Nota
Os atores são entidades puramente lógicas que sempre existem, virtualmente. Um ator não pode ser explicitamente criado nem destruído, e sua existência virtual não é afetada pela falha de um servidor que o executa. Como os atores sempre existem, eles são sempre endereçáveis.
Esta é uma nova abordagem para criar uma nova geração de aplicativos distribuídos para a era da nuvem. O Orleans modelo de programação doma a complexidade inerente a aplicativos distribuídos altamente paralelos sem restringir recursos ou impor restrições ao desenvolvedor.
Para obter mais informações, consulte Orleans: Atores virtuais via Microsoft Research. Um ator virtual é representado como um Orleans grão.
O grão é um dos vários Orleans primitivos. Em termos de modelo de ator, um grão é um ator virtual. O bloco de construção fundamental em qualquer Orleans aplicação é um grão. Grãos são entidades que compreendem identidade, comportamento e estado definidos pelo usuário. Considere a seguinte representação visual de um grão:
As identidades de grãos são chaves definidas pelo usuário que tornam os grãos sempre disponíveis para invocação. Os grãos podem ser invocados por outros grãos ou por qualquer número de clientes externos. Cada grão é uma instância de uma classe que implementa uma ou mais das seguintes interfaces:
Guid
chaves.Int64
chaves.string
chaves.Os grãos podem ter dados de estado voláteis ou persistentes que podem ser armazenados em qualquer sistema de armazenamento. Como tal, os grãos particionam implicitamente os estados do aplicativo, permitindo escalabilidade automática e simplificando a recuperação de falhas. O estado de grão é mantido na memória enquanto o grão está ativo, levando a menor latência e menos carga nos armazenamentos de dados.
A instanciação de grãos é executada automaticamente sob demanda pelo Orleans tempo de execução. Os grãos que não são usados por um tempo são automaticamente removidos da memória para liberar recursos. Isso é possível devido à sua identidade estável, que permite invocar grãos independentemente de já estarem carregados na memória ou não. Isso também permite uma recuperação transparente de falhas, porque o chamador não precisa saber em qual servidor um grão é instanciado em nenhum momento. Os grãos têm um ciclo de vida gerenciado, com o Orleans tempo de execução responsável por ativar/desativar e colocar/localizar grãos conforme necessário. Isso permite que o desenvolvedor escreva código como se todos os grãos estivessem sempre na memória.
Um silo é outro exemplo de um Orleans primitivo. Um silo abriga um ou mais grãos. O Orleans tempo de execução é o que implementa o modelo de programação para aplicativos.
Normalmente, um grupo de silos é executado como um cluster para escalabilidade e tolerância a falhas. Quando executados como um cluster, os silos coordenam-se entre si para distribuir o trabalho e detetar e recuperar de falhas. O tempo de execução permite que os grãos hospedados no cluster se comuniquem entre si como se estivessem em um único processo. Para ajudar a visualizar a relação entre clusters, silos e grãos, considere o seguinte diagrama:
O diagrama anterior mostra a relação entre aglomerados, silos e grãos. Você pode ter qualquer número de clusters, cada cluster tem um ou mais silos e cada silo tem um ou mais grãos.
Além do modelo de programação principal, os silos fornecem grãos com um conjunto de serviços de tempo de execução, como temporizadores, lembretes (temporizadores persistentes), persistência, transações, fluxos e muito mais. Para obter mais informações, consulte O que posso fazer com Orleans?
Aplicativos Web e outros clientes externos chamam grãos no cluster usando a biblioteca de cliente, que gerencia automaticamente a comunicação de rede. Os clientes também podem ser co-hospedados no mesmo processo com silos para simplificar.
Orleans é uma estrutura para criar aplicativos nativos da nuvem e deve ser considerada sempre que você estiver criando aplicativos .NET que eventualmente precisariam ser dimensionados. Existem aparentemente infinitas maneiras de usar Orleans, mas as seguintes são algumas das maneiras mais comuns; Jogos, bancos, aplicativos de bate-papo, rastreamento GPS, negociação de ações, carrinhos de compras, aplicativos de votação e muito mais. Orleans é usado pela Microsoft no Azure, Xbox, Skype, Halo, PlayFab, Gears of War e muitos outros serviços internos. Orleans tem muitos recursos que o tornam fácil de usar para uma variedade de aplicações.
Orleans Fornece um modelo de persistência simples que garante que o estado esteja disponível antes de processar uma solicitação e que sua consistência seja mantida. Os grãos podem ter vários objetos de dados persistentes nomeados. Por exemplo, pode haver um chamado "perfil" para o perfil de um usuário e outro chamado "inventário" para seu inventário. Esse estado pode ser armazenado em qualquer sistema de armazenamento.
Enquanto um grão está em execução, o estado é mantido na memória para que as solicitações de leitura possam ser atendidas sem acessar o armazenamento. Quando o grão atualiza seu estado, a chamada IStorage.WriteStateAsync garante que o armazenamento de suporte seja atualizado para durabilidade e consistência.
Para obter mais informações, consulte Persistência de grãos.
Os lembretes são um mecanismo de agendamento durável para grãos. Eles podem ser usados para garantir que alguma ação seja concluída em um ponto futuro, mesmo que o grão não esteja ativado naquele momento. Os temporizadores são a contrapartida não durável dos lembretes e podem ser usados para eventos de alta frequência, que não exigem confiabilidade.
Para obter mais informações, consulte Temporizadores e lembretes.
Quando um grão é ativado no Orleans, o tempo de execução decide em qual servidor (silo) ativar esse grão. Isso é chamado de colocação de grãos.
O processo de colocação é Orleans totalmente configurável. Os desenvolvedores podem escolher entre um conjunto de políticas de posicionamento prontas para uso, como lógica aleatória, preferencial local e baseada em carga, ou lógica personalizada pode ser configurada. Isso permite total flexibilidade na decisão de onde os grãos são criados. Por exemplo, os grãos podem ser colocados em um servidor próximo aos recursos contra os quais precisam operar ou outros grãos com os quais se comunicam.
Para obter mais informações, consulte Colocação de grãos.
Atualizar os sistemas de produção de uma maneira que leve em conta as mudanças com segurança pode ser um desafio, especialmente em sistemas com monitoração de estado. Para dar conta disso, as interfaces de grão podem Orleans ser versionadas.
O cluster mantém um mapeamento de quais implementações de grãos estão disponíveis em quais silos no cluster e as versões dessas implementações. Esta versão das informações é usada pelo tempo de execução em conjunto com estratégias de posicionamento para tomar decisões de posicionamento ao rotear chamadas para grãos. Além disso, para atualizar com segurança um grão versionado, isso também permite clusters heterogêneos, onde silos diferentes têm diferentes conjuntos de implementações de grãos disponíveis.
Para obter mais informações, consulte Controle de versão de grãos.
Os trabalhadores apátridas são grãos especialmente marcados que não têm nenhum estado associado e podem ser ativados em vários silos simultaneamente. Isso permite um maior paralelismo para funções sem monitoração de estado.
Para obter mais informações, consulte grãos de trabalhador apátrida.
Um filtro de chamada de grão é uma lógica comum a muitos grãos. Orleans suporta filtros para chamadas recebidas e efetuadas. Filtros para autorização, registro em log e telemetria e tratamento de erros são considerados comuns.
Metadados e outras informações podem ser passados com uma série de solicitações usando o contexto da solicitação. O contexto da solicitação pode ser usado para armazenar informações de rastreamento distribuídas ou quaisquer outros valores definidos pelo usuário.
Além do modelo de persistência simples descrito acima, os grãos podem ter um estado transacional. Vários grãos podem participar de transações ACID juntos, independentemente de onde seu estado é armazenado. As transações são Orleans distribuídas e descentralizadas (não há um gerenciador de transações central ou coordenador de transações) e têm isolamento serializável.
Para obter mais informações sobre transações, consulte Transações.
Os fluxos ajudam os desenvolvedores a processar uma série de itens de dados quase em tempo real. Orleans Os fluxos são gerenciados, os fluxos não precisam ser criados ou registrados antes que um grão ou cliente publique ou assine um fluxo. Tal permite uma maior dissociação entre produtores e consumidores de fluxos e das infraestruturas.
O processamento de fluxo é confiável: os grãos podem armazenar pontos de verificação (cursores) e redefinir para um ponto de verificação armazenado durante a ativação ou em qualquer momento subsequente. Os fluxos suportam a entrega em lote de mensagens aos consumidores para melhorar a eficiência e o desempenho da recuperação.
Os fluxos são apoiados por serviços de enfileiramento, como Hubs de Eventos do Azure, Amazon Kinesis e outros.
Um número arbitrário de fluxos pode ser multiplexado em um número menor de filas e a responsabilidade pelo processamento dessas filas é equilibrada uniformemente em todo o cluster.
Se você estiver interessado em um vídeo de introdução ao Orleans, confira o seguinte vídeo:
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Formação
Módulo
Introdução a Orleães - Training
Saiba o que é a arquitetura orleans, os benefícios que pode proporcionar e como integrá-la com as suas aplicações.