Book Image

Architecting Data-Intensive Applications

By : Anuj Kumar
Book Image

Architecting Data-Intensive Applications

By: Anuj Kumar

Overview of this book

<p>Are you an architect or a developer who looks at your own applications gingerly while browsing through Facebook and applauding it silently for its data-intensive, yet ?uent and efficient, behaviour? This book is your gateway to build smart data-intensive systems by incorporating the core data-intensive architectural principles, patterns, and techniques directly into your application architecture.</p> <p>This book starts by taking you through the primary design challenges involved with architecting data-intensive applications. You will learn how to implement data curation and data dissemination, depending on the volume of your data. You will then implement your application architecture one step at a time. You will get to grips with implementing the correct message delivery protocols and creating a data layer that doesn’t fail when running high traffic. This book will show you how you can divide your application into layers, each of which adheres to the single responsibility principle. By the end of this book, you will learn to streamline your thoughts and make the right choice in terms of technologies and architectural principles based on the problem at hand.</p>
Table of Contents (18 chapters)
Title Page
Packt Upsell
Contributors
Preface
Index

Micro-batch stream processing


There are typically two ways that the incoming messages can be processed. The most common way is to process each message one by one. And this is the way we have discussed throughout in this chapter. One-message-at-a-time stream processing is very low latency and obviously simple to handle, because you deal with a single message at a time. The downside with one-at-a-time processing is that a lot of time may be wasted by the underlying processors and stream systems to perform non-business-related tasks, such as fetching the individual message from the kernels page-cache, loading it in memory, transferring it across the network, and passing it down the underlying system. All this can significantly increase the load on the overall system, in terms of resources and time. Thus, it may be beneficial to consider a micro-batching strategy where the idea is to group small messages of the same type together and send them to the underlying processing framework as one large...