The second part of this book takes you deep into theory with some framework-agnostic implementations of how streaming systems handle more complex topics. Chapter 7 shows you how to slice never-ending streams of data into meaningful chunks, and chapter 8 lays out the process of joining data in real time. In chapter 9, you find out how streaming systems can help you recover from processing failures, and in chapter 10, you dive into the complexities of managing state in real-time streaming jobs. Finally, chapter 11 quickly recaps the book’s content and gives you some guidance on what to do after reading this book.