An elaborate 3D rendering showcasing the Queue-Based Load Leveling pattern in a futuristic setting. The image, in a 100:42 aspect ratio, features a colossal, radiant tube at its center, symbolizing the queue. This tube is vibrant with colorful, digitized requests. Scattered throughout the scene are various computers and digital envelopes, representing data processing and message handling. These computers appear integrated into the high-tech landscape, some floating around the queue, highlighting their role in data analysis and management. The envelopes, depicted as digital holograms, seamlessly merge into the data streams, illustrating the tasks being processed. On the right, a grand, fortress-like structure represents the service, with gates meticulously processing each request. The background is a dramatic skyline, illuminated by neon lights and holographic displays, enhancing the scene's grandeur. The overall atmosphere is intense and awe-inspiring, emphasizing the system's efficiency in managing high demand with added layers of technology and communication.

The Queue-Based Load Leveling Pattern

Applications in the cloud can be subjected to heavy peaks of traffic in intermittent phases. If our applications can’t handle these peaks, this can lead to performance, availability and reliability issues. For example, imagine we have an application that stores state temporarily in a cache. We could have a single task within our application that performs this for us, and we could have a good idea of how many times a single instance of our application would perform this task....

January 22, 2024 · 5 min · Will Velida
A dynamic 3D illustration of a Priority Queue system in computing. At the bottom, a vast array of futuristic computers forms a grid, with a central towering structure that represents the sending application. From this, digital envelopes adorned with glowing edges, indicative of their priority status, burst forth in an array. High-priority envelopes emit brighter light and are surrounded by visible energy fields, while lower-priority ones have a softer glow. They ascend towards an elaborate, radiant queue structure above, which sorts them before they continue towards their destinations. The background resembles a star-filled night sky, signifying the vastness and complexity of the data processing universe. The overall image conveys a sense of grandeur and high-stakes data management.

The Priority Queue Pattern

The Priority Queue pattern is a pattern that allows us to prioritize requests sent to services so that higher priority requests are received and processed faster than lower priority requests. This is useful for when we are building applications where we need to prioritize some clients over others, or if some requests need to be processed faster than usual for business/compliance reasons. In this article, I’ll talk about what the Priority Queue pattern is, what advantages priority queues can provide, what we need to consider when implementing the Priority Queue pattern and how can implement it priority queues in Azure (Spoiler alert, it’s a little hacky!...

January 17, 2024 · 4 min · Will Velida
A conceptual 3D rendering depicting the 'Competing Consumers' model in message processing. Multiple futuristic robotic arms, representing consumers, extend towards a central, glowing digital messaging channel. This channel is overflowing with luminous data messages, illustrating a high volume of information. The robotic arms are engaged in grabbing and processing these messages, symbolizing the concepts of optimizing throughput, enhancing scalability, and distributing workload. The scene is set against a sleek, high-tech backdrop, emphasizing advanced technology and digital processing.

The Competing Consumers Pattern

Applications running in the cloud should expect to handle a large number of requests. One method of dealing with large amounts of requests is to pass them through a message broker to a consumer service that handles these requests asynchronously. This helps ensure that requests are being processed without throttling or degrading the performance of our applications. The volume of these requests can vary over a period of time. Imagine that you’re a developer for an e-commerce website....

January 15, 2024 · 5 min · Will Velida
A 3D digital illustration in wide format depicting a data management concept. In the center, a large envelope labeled 'CLAIM CHECK' radiates with a blue glow and hovers above a futuristic messaging platform, symbolizing its delivery. To the right, a cube marked 'PAYLOAD' is connected to the platform via a glowing orange data stream, representing its storage in an external service. On the left, an abstract device represents the splitting of the message into the claim check and payload. The background features a network of lines and nodes, suggestive of a high-tech data transfer system.

The Claim-Check Pattern (reference-based messaging)

The Claim-Check pattern, or Reference-Based Messaging, is a pattern where we split a large message into a claim check and a payload. The claim check is sent to our message broker and the payload will be stored in an external data store. This pattern enables us to process large messages, while preventing our message bus from being overloaded and prevent our client applications slowing down. We can also reduce costs with this pattern, but utilizing cheap storage alternatives rather than increasing the resource units used by our message broker....

January 13, 2024 · 4 min · Will Velida
Implementing Dapr Pub/Sub in ASP.NET Core Web APIs

Implementing Dapr Pub/Sub functionality to ASP.NET Core Web APIs

In event-driven architectures, communicating between different microservices via messages can be enabled using Publish and Subscribe functionality (Pub/Sub for short). The publisher (or producer) writes messages to a message topic (or queue), while a subscriber will subscribe to that particular topic and receives the message. Both the publisher and subscriber are unaware of which application either produced or subscribed to the topic. This pattern is useful when we want to send messages to different services, while ensuring that they are decoupled from each other....

August 15, 2023 · 9 min · Will Velida