Processamento de encomendas dimensionável no AzureScalable order processing on Azure

Neste cenário de exemplo é relevante para organizações que precisam de uma arquitetura altamente dimensionável e resiliente para processamento de pedidos online.This example scenario is relevant to organizations that need a highly scalable and resilient architecture for online order processing. Aplicativos potenciais incluem comércio eletrônico e ponto de venda, preenchimento de pedidos e reserva de inventário e controlo de revenda.Potential applications include e-commerce and retail point-of-sale, order fulfillment, and inventory reservation and tracking.

Este cenário assume um abordagem, usando um modelo de programação funcional implementado por meio de microsserviços de origem do evento.This scenario takes an event sourcing approach, using a functional programming model implemented via microservices. Cada microsserviço é tratado como um processador de fluxo, e toda a lógica comercial é implementada por meio de microsserviços.Each microservice is treated as a stream processor, and all business logic is implemented via microservices. Esta abordagem permite elevada disponibilidade e resiliência, georreplicação e um desempenho rápido.This approach enables high availability and resiliency, geo-replication, and fast performance.

Usar os serviços geridos do Azure como o Cosmos DB e o HDInsight pode ajudar a reduzir os custos ao tirar partido de conhecimentos da Microsoft no armazenamento de dados de escala da cloud distribuída globalmente e a obtenção.Using managed Azure services such as Cosmos DB and HDInsight can help reduce costs by leveraging Microsoft's expertise in globally distributed cloud-scale data storage and retrieval. Este cenário aborda especificamente um cenário de comércio eletrónico ou de varejo; Se tiver outras necessidades para serviços de dados, deve rever a lista de disponíveis serviços de base de dados inteligente no Azure e totalmente gerido.This scenario specifically addresses an e-commerce or retail scenario; if you have other needs for data services, you should review the list of available fully managed intelligent database services in Azure.

Casos de utilização relevantesRelevant use cases

Outros casos de utilização relevantes incluem:Other relevant use cases include:

  • E-commerce ou revenda ponto de venda sistemas back-end.E-commerce or retail point-of-sale back-end systems.
  • Sistemas de gestão de inventário.Inventory management systems.
  • Sistemas de preenchimento da ordem.Order fulfillment systems.
  • Outros cenários de integração relevantes para um pipeline de processamento de ordem.Other integration scenarios relevant to an order processing pipeline.

ArquiteturaArchitecture

Arquitetura de exemplo para um pipeline de processamento de pedidos dimensionável

Esta arquitetura fornece detalhes sobre os principais componentes de um pipeline de processamento de ordem.This architecture details key components of an order processing pipeline. Os dados fluem do cenário da seguinte forma:The data flows through the scenario as follows:

  1. Mensagens de eventos introduza o sistema por meio de aplicativos do lado do cliente (sincronicamente sobre HTTP) e de vários sistemas de back-end (modo assíncrono através de Apache Kafka).Event messages enter the system via customer-facing applications (synchronously over HTTP) and various back-end systems (asynchronously via Apache Kafka). Estas mensagens são transmitidas num pipeline de processamento do comando.These messages are passed into a command processing pipeline.
  2. Cada mensagem de evento é ingerida e mapeada para um de um conjunto definido de comandos por um microsserviço do processador de comandos.Each event message is ingested and mapped to one of a defined set of commands by a command processor microservice. O processador de comando obtém qualquer estado atual relevante para executar o comando a partir de uma base de dados do instantâneo de fluxo do evento.The command processor retrieves any current state relevant to executing the command from an event stream snapshot database. O comando for executado, em seguida, e a saída do comando é emitida como um novo evento.The command is then executed, and the output of the command is emitted as a new event.
  3. Cada evento emitido como a saída de um comando tem o compromisso de uma base de dados de fluxo do evento com o Cosmos DB.Each event emitted as the output of a command is committed to an event stream database using Cosmos DB.
  4. Para cada base de dados insert ou atualização consolidadas na base de dados de fluxo de eventos, um evento é gerado pelo Feed de alterações de Cosmos DB.For each database insert or update committed to the event stream database, an event is raised by the Cosmos DB Change Feed. Sistemas de Downstream podem subscrever qualquer tópico de eventos que são relevante para esse sistema.Downstream systems can subscribe to any event topics that are relevant to that system.
  5. Todos os eventos a partir do Feed de alterações de Cosmos DB também são enviados para um microsserviço de fluxo de eventos do instantâneo, que calcula a quaisquer alterações de estado provocadas por eventos que ocorreram.All events from the Cosmos DB Change Feed are also sent to a snapshot event stream microservice, which calculates any state changes caused by events that have occurred. O novo Estado, em seguida, está comprometido com o evento stream instantâneo da base de dados armazenado no Cosmos DB.The new state is then committed to the event stream snapshot database stored in Cosmos DB. A base de dados do instantâneo fornece uma origem de dados distribuídos globalmente de baixa latência para o estado atual de todos os elementos de dados.The snapshot database provides a globally distributed, low latency data source for the current state of all data elements. A base de dados de fluxo de eventos fornece um registo completo de todas as mensagens de eventos que tenham passado por meio da arquitetura, o que permite cenários de recuperação de teste, resolução de problemas e após desastre robustos.The event stream database provides a complete record of all event messages that have passed through the architecture, which enables robust testing, troubleshooting, and disaster recovery scenarios.

ComponentesComponents

  • O cosmos DB é com múltiplos modelo distribuída globalmente, base de dados da Microsoft que permite a suas soluções de forma elástica e independente dimensionar o débito e armazenamento em qualquer número de regiões geográficas.Cosmos DB is Microsoft's globally distributed, multi-model database that enables your solutions to elastically and independently scale throughput and storage across any number of geographic regions. Oferece débito, latência, disponibilidade e garante a consistência com os contratos de nível de serviço abrangente (SLAs).It offers throughput, latency, availability, and consistency guarantees with comprehensive service level agreements (SLAs). Este cenário utiliza o Cosmos DB para armazenamento de fluxo de eventos e o armazenamento de instantâneos e tira partido [de Feed de alterações do Cosmos DB] docs-cosmos-db-change-feed recursos para fornecer a recuperação de consistência e falhas de dados.This scenario uses Cosmos DB for event stream storage and snapshot storage, and leverages Cosmos DB's Change Feed features to provide data consistency and fault recovery.
  • Apache Kafka no HDInsight é uma implementação de serviço gerido do Apache Kafka, uma código-fonte aberto de plataforma de transmissão em fluxo distribuída para a criação de aplicações e pipelines de dados de transmissão em fluxo em tempo real.Apache Kafka on HDInsight is a managed service implementation of Apache Kafka, an open-source distributed streaming platform for building real-time streaming data pipelines and applications. O Kafka também fornece funcionalidade de Mediador de mensagem semelhante a uma fila de mensagens, para publicar e subscrever fluxos de dados nomeados.Kafka also provides message broker functionality similar to a message queue, for publishing and subscribing to named data streams. Este cenário utiliza o Kafka para processar a entrada, bem como a jusante eventos na ordem de pipeline de processamento.This scenario uses Kafka to process incoming as well as downstream events in the order processing pipeline.

ConsideraçõesConsiderations

Existem muitas opções de tecnologia para ingestão de mensagens em tempo real, o armazenamento de dados, o fluxo de processamento, armazenamento de dados analíticos e de análises e relatórios.Many technology options are available for real-time message ingestion, data storage, stream processing, storage of analytical data, and analytics and reporting. Para uma descrição geral destas opções, seus recursos e os principais critérios de seleção, consulte arquiteturas de macrodados: Processamento em tempo real no guia de arquitetura de dados do Azure.For an overview of these options, their capabilities, and key selection criteria, see Big data architectures: Real-time processing in the Azure Data Architecture Guide.

Os microsserviços tornaram-se um estilo de arquitetura popular para criar aplicações na cloud resilientes, de elevada dimensionabilidade, implementáveis independentemente e capazes de evoluir rapidamente.Microservices have become a popular architectural style for building cloud applications that are resilient, highly scalable, independently deployable, and able to evolve quickly. Microsserviços requerem uma abordagem diferente para estruturação e criação de aplicativos.Microservices require a different approach to designing and building applications. Ferramentas como o Docker, Kubernetes, Azure Service Fabric e Nomad permitem o desenvolvimento de arquiteturas baseadas em microsserviços.Tools such as Docker, Kubernetes, Azure Service Fabric, and Nomad enable the development of microservices-based architectures. Para obter orientações sobre a criação e execução de uma arquitetura baseada em microsserviços, veja estruturar microsserviços no Azure no Centro de arquitetura do Azure.For guidance on building and running a microservices-based architecture, see Designing microservices on Azure in the Azure Architecture Center.

DisponibilidadeAvailability

Abordagem de fornecimento de eventos deste cenário permite que os componentes de sistema, ser livremente acoplado e implantados independentemente um do outro.This scenario's event sourcing approach allows system components to be loosely coupled and deployed independently of one another. O cosmos DB oferece [elevada disponibilidade] docs-cosmos-db-regional-failover e ajuda a organização a gerir as compensações associadas com consistência, disponibilidade e desempenho, tudo com garantias correspondentes .Cosmos DB offers high availability and helps organization manage the tradeoffs associated with consistency, availability, and performance, all with corresponding guarantees. Apache Kafka no HDInsight também foi concebido para elevada disponibilidade.Apache Kafka on HDInsight is also designed for high availability.

O Azure Monitor fornece interfaces do usuário unificada para monitoramento em vários serviços do Azure.Azure Monitor provides unified user interfaces for monitoring across various Azure services. Para obter mais informações, consulte monitorização no Microsoft Azure.For more information, see Monitoring in Microsoft Azure. Os Hubs de eventos e Stream Analytics estão integradas com o Azure Monitor.Event Hubs and Stream Analytics are both integrated with Azure Monitor.

Para outras considerações de disponibilidade, consulte a lista de verificação de disponibilidade.For other availability considerations, see the availability checklist.

EscalabilidadeScalability

O Kafka no HDInsight permite configuração do armazenamento e a escalabilidade para clusters do Kafka.Kafka on HDInsight allows configuration of storage and scalability for Kafka clusters. O cosmos DB fornece um desempenho previsível e rápido e dimensiona de forma totalmente integrada à medida que aumenta a sua aplicação.Cosmos DB provides fast, predictable performance and scales seamlessly as your application grows. O evento de aprovisionamento de arquitetura baseada em microsserviços deste cenário também torna mais fácil dimensionar o seu sistema e expandir a sua funcionalidade.The event sourcing microservices-based architecture of this scenario also makes it easier to scale your system and expand its functionality.

Para outras considerações de escalabilidade, consulte a [lista de verificação de escalabilidade] scalability disponível no Centro de arquitetura do Azure.For other scalability considerations, see the scalability checklist available in the Azure Architecture Center.

SegurançaSecurity

O modelo de segurança do Cosmos DB autentica os utilizadores e fornece acesso aos seus dados e recursos.The Cosmos DB security model authenticates users and provides access to its data and resources. Para obter mais informações, consulte segurança de base de dados do Cosmos DB.For more information, see Cosmos DB database security.

Para obter orientações gerais sobre como criar soluções seguras, consulte a documentação de segurança do Azure.For general guidance on designing secure solutions, see the Azure Security Documentation.

ResiliênciaResiliency

O origem de arquitetura e as tecnologias associadas neste cenário de exemplo do evento tornar este cenário altamente resiliente quando ocorrem falhas.The event sourcing architecture and associated technologies in this example scenario make this scenario highly resilient when failures occur. Para obter orientações gerais sobre como conceber soluções resilientes, consulte estruturar aplicações resilientes para o Azure.For general guidance on designing resilient solutions, see Designing resilient applications for Azure.

PreçosPricing

Para examinar o custo de executar este cenário, todos os serviços são previamente configurados na Calculadora de custos.To examine the cost of running this scenario, all of the services are pre-configured in the cost calculator. Para ver como a preços alteraria para o seu cenário específico, altere as variáveis apropriadas de acordo com o volume de dados esperado.To see how pricing would change for your particular scenario, change the appropriate variables to match your expected data volume. Para este cenário, o preço de exemplo inclui apenas o Cosmos DB e um cluster de Kafka para o processamento de eventos gerados a partir do Feed de alterações de Cosmos DB.For this scenario, the example pricing includes only Cosmos DB and a Kafka cluster for processing events raised from the Cosmos DB Change Feed. Processadores de eventos e microsserviços para sistemas e outros sistemas a jusante de origem não estão incluídos, e o custo é altamente dependente a quantidade e o dimensionamento destes serviços, bem como as tecnologias escolhidas para implementá-las.Event processors and microservices for originating systems and other downstream systems are not included, and their cost is highly dependent on the quantity and scale of these services as well as the technologies chosen for implementing them.

A moeda do Azure Cosmos DB é a unidade de pedido (RU).The currency of Azure Cosmos DB is the request unit (RU). Com unidades de pedido, não terá de reservar as capacidades de leitura/gravação ou aprovisionar da CPU, memória e IOPS.With request units, you don't need to reserve read/write capacities or provision CPU, memory, and IOPS. Azure Cosmos DB suporta várias APIs que possuem operações diferentes, desde simples lê e escreve consultas de gráficos complexos.Azure Cosmos DB supports various APIs that have different operations, ranging from simple reads and writes to complex graph queries. Uma vez que nem todos os pedidos são iguais, pedidos recebem uma quantidade normalizada de unidades de pedido com base na quantidade de computação necessária para atender à solicitação.Because not all requests are equal, requests are assigned a normalized quantity of request units based on the amount of computation required to serve the request. O número de unidades de pedido necessário para a sua solução está dependente de tamanho do elemento de dados e o número de base de dados de leitura e operações de escrita por segundo.The number of request units required by your solution is dependent on data element size and the number of database read and write operations per second. Para obter mais informações, consulte unidades de pedido no Azure Cosmos DB.For more information, see Request units in Azure Cosmos DB. Estes estimado os preços baseiam-se no Cosmos DB em execução em duas regiões do Azure.These estimated prices are based on Cosmos DB running in two Azure regions.

Nós fornecemos três perfis de exemplo de custos com base na quantidade de atividade esperado:We have provided three sample cost profiles based on amount of activity you expect:

  • Pequenas: Este exemplo de preços está correlacionada com 5 RUs reservadas com um arquivo de dados de 1 TB no Cosmos DB e um pequeno (D3 v2) de cluster do Kafka.Small: this pricing example correlates to 5 RUs reserved with a 1 TB data store in Cosmos DB and a small (D3 v2) Kafka cluster.
  • Médio: Este exemplo de preços está correlacionada com 50 RUs reservadas com um arquivo de dados de 10 TB no Cosmos DB e uma média de dimensão (D4 v2) de cluster do Kafka.Medium: this pricing example correlates to 50 RUs reserved with a 10 TB data store in Cosmos DB and a midsized (D4 v2) Kafka cluster.
  • Grande: Este exemplo de preços está correlacionada com 500 RUs reservadas com um arquivo de dados de 30 TB no Cosmos DB e uma grande D5 v2 () cluster do Kafka.Large: this pricing example correlates to 500 RUs reserved with a 30 TB data store in Cosmos DB and a large (D5 v2) Kafka cluster.

Neste cenário de exemplo se baseia numa versão mais extensiva desta arquitetura criada pela Jet.com para o seu pipeline de processamento de ordem de ponto-a-ponto.This example scenario is based on a more extensive version of this architecture built by Jet.com for its end-to-end order processing pipeline. Para obter mais informações, consulte a [perfil do cliente de técnicas de jet.com] source-document e apresentação do jet.com na compilação 2018.For more information, see the jet.com technical customer profile and jet.com's presentation at Build 2018.

Outros recursos relacionados incluem:Other related resources include: