SlideShare a Scribd company logo
Seamless Guest Experience with Kafka Streams
Ram IndukuriHimani Arora Suresh Mulukaladu
About Knoldus
Technology consulting firm with focus on digital transformation
Functional. Reactive. Cloud Native
We are global cruise vacation company that controls and operates four global
brands. Royal Caribbean International, Azamara club, Celebrity cruises and
Silversea Cruises.We are also 50% joint venture owner of German brand TUI
Cruises and 49% owner of the spanish brand Pullmantur Cruceros.
About Royal Caribbean International
Royal Caribbean International - Facts
● World’s second largest global cruise line
● Represents more than 20% of global cruisers
● 9.5 billion in revenues (2018)
● Serving more than 5 Million guests every year around the globe
● 60 ships in service and another 14 ships on the way
● Oasis class(World’s largest) ships carry close to 6000 guests and 2000
crew
Guest Journey - touchpoints
Discover Book
Cruise
Excursions Check In Board Ship Cruise Take
Excursions
Debark Create
Memories
● Research vacation options
● Book the cruise & air reservations
● Plan and Book activities on the cruise
● Complete online check-in and get boarding pass
● Pre cruise activities
● Get to the embarkation port
● Check-in to the cruise and board
● Get to your state room
● Book dinner reservations and activities
● Enjoy the cruise and activities
● Excursions at ports of call
● Debarkation
● Post cruise activities
● Fly back
● Get home
Excalibur
Digital Vision
Discover Book Cruise Pre Cruise
Planning
Check In Board Ship Cruise Take
Excursions
Debark Create
Memories
Sensor
Wearable
TV
API Layer
Device Layer
One App
Architectural Challenges
1
How to Standardize Footprints
on all ships and shore ?
3
How do guests have seamless
experience on ship(s) and
shore if we rely on batch
process ?
2
How do we build on what we
have today ?
Same infrastructure on
ship/shore
API and Microservices Event driven Architecture with real time
synchronization
Ship-Shore Highway - Event enabling Fleet
System of
Record
System of
Record
Ship Shore Highway
Event enablement, transmission, processing & Analytics across fleet
SoR Ship-Shore Pattern
API Gateway
Micro Service
Data Store
System of
Record
Data Store
System of
Record
Micro Service
Change data Capture - Using Kafka Connect
Web
Call Center
Travel Agent
SQL
Mirror
Kafka
Connect
Kafka
Shore
Reservation
SOR
AWS
Data Transformer
Kafka Ship
Broadcasting events - Using Streams
Web
Call Center
Travel Agent
IIDR
Business Events &
Change Data
Reservation
SOR
AWS
Kafka
Streams
Kafka
Generating Business Events by Combining Topics
Booking ID(pk)
Guest ID
Guest ID(pk)
Name
Address
State Store
State Store
JOIN
Guest ID
Booking ID
Name
Address
Generating Business Events by Combining Topics
StreamsBuilder builder = new StreamsBuilder();
KStream<String, BookingDetails> guestBookings = builder.stream(guestBookingTopic)
.selectKey((key, value) -> value.getGuestId());
KStream<String, GuestDetails> guestDetails = builder.stream(guestDetailsTopic);
KStream<String, GuestBookingDetails> guestBookingAndDetails = guestBookings
.join(guestDetails,
(guestBooking, guestDetail) -> /* business event message */,
JoinWindows.of(Duration.ofHours(10));
Guest Bookings Stream
Guest Details Stream
Transparent Handling of Late Arrival Records
SLIDING
WINDOW
JoinWindows.of(Duration.ofHours(10))
Late
Arriving
Record
Event 1Event 2
Event 1Event 2
Event 12
Event 13
Event 13
Event 14
Event 14
Event 15
Transparent Handling of Late Arrival Records
Guest Bookings Stream
Guest Details Stream
SLIDING
WINDOW
Grace Period set to:
JoinWindows.of(Duration.ofHours(10)).grace(Duration.ofHours(24)))
Event 1Event 2
Event 1Event 2
Event 12
Event 13
Event 13
Event 14
Event 14
Event 15
Transparent Handling of Late Arrival Records
StreamsBuilder builder = new StreamsBuilder();
KStream<String, BookingDetails> guestBookings = builder.stream(guestBookingTopic)
.selectKey((key, value) -> value.getGuestId());
KStream<String, GuestDetails> guestDetails = builder.stream(guestDetailsTopic);
KStream<String, GuestBookingDetails> guestBookingAndDetails = guestBookings
.join(guestDetails,
(guestBooking, guestDetail) -> /* business event message */,
JoinWindows.of(Duration.ofHours(10)
.grace(Duration.ofHours(24))
);
Consecutive Joins on Multiple Topics
Booking ID
Guest ID
Guest ID
Name
Address
State Store
State Store
JOIN
Guest ID
Purchase ID
Intermediate
State Store
Consecutive Joins on Multiple Topics
Booking ID
Guest ID
Guest ID
Name
Address
State Store
State Store
JOIN
Guest ID
Purchase ID
Intermedia
te Store
State Store
JOIN
Guest ID
Booking ID
Purchase ID
Name
Address
Transparent Handling of Late Arrival Records
StreamsBuilder builder = new StreamsBuilder();
KStream<String, BookingDetails> guestBookings = builder.stream(guestBookingTopic)
.selectKey((key, value) -> value.getGuestId());
KStream<String, PurchaseDetails> guestPurchases = builder.stream(guestPurchasesTopic);
.selectKey((key, value) -> value.getGuestId());
KStream<String, GuestDetails> guestDetails = builder.stream(guestDetailsTopic);
KStream<String, GuestBookingDetails> guestBookingAndDetails = guestBookings
.join(guestDetails,
(guestBooking, guestDetail) -> /* business event message with booking id and
guest details */,
JoinWindows.of(Duration.ofHours(10)
.join(guestPurchases,
(guestBookingDetail,guestPurchase) -> /* business event message with guest
details, booking and purchase details*/,
JoinWindows.of(Duration.ofHours(10)));
Ensuring Streaming reliability - Graphite/Grafana
Kafka
Stream
App
JMX
Graphite Grafana
● Consumer Lag to detect surges
● Idle time threshold to predict Thread health
● Bytes Received in last window indicating Kafka broker issues
Lack of activity indicate either
broker failure or app failure
Ensuring Data Quality - Apache Spark
Apache Spark Apache Spark
Minio incremental
Mirroring
1
2
3
4 5
Next Steps - Interactive Queries
Instance 1
Instance 2
Instance 3
GUEST API
Local Kafka
State Store
Local Kafka
State Store
Local Kafka
State Store
host1:4047
host2:5047
host3:4460
Exposing RPC endpoint and
information about its local
state store
Kafka Cluster
Summary
● Real time guest information synchronization across ship and
shore was possible with kafka, connect and replicators
● Kafka streams and IIDR helped to reduce the latency in
processing the CDC
● Isolate critical connectors into their own connect cluster to
reduce risk
● Order guarantee is easier to achieve with streams than
connectors.
● Invest in domain driven design
● Include legacy dependencies in critical path for planning
feature delivery.
More Information
Ram Indukuri ram@knoldus.com
Himani Arora himani@knoldus.com
Suresh Mulukuladu smulukuladu@rccl.com
For more information
Blog: https://blog.knoldus.com/join-semantics-kafka-streams/
Git Samples: https://github.com/knoldus/

More Related Content

PDF
Battle Tested Event-Driven Patterns for your Microservices Architecture - Dev...
PDF
Battle Tested Event-Driven Patterns for your Microservices Architecture
PDF
Security Information and Event Management with Kafka, Kafka Connect, KSQL and...
PPTX
Financial Event Sourcing at Enterprise Scale
PPTX
Hybrid & Global Kafka Architecture
PDF
Top use cases for 2022 with Data in Motion and Apache Kafka
PPTX
CCT Check and Calculate Transfer
PDF
Kafka Streams State Stores Being Persistent
Battle Tested Event-Driven Patterns for your Microservices Architecture - Dev...
Battle Tested Event-Driven Patterns for your Microservices Architecture
Security Information and Event Management with Kafka, Kafka Connect, KSQL and...
Financial Event Sourcing at Enterprise Scale
Hybrid & Global Kafka Architecture
Top use cases for 2022 with Data in Motion and Apache Kafka
CCT Check and Calculate Transfer
Kafka Streams State Stores Being Persistent

What's hot (20)

PDF
Lead confluent HQ Dec 2019
PDF
Real time data processing and model inferncing platform with Kafka streams (N...
PDF
Leveraging Data in Motion | Jun Rao, Co-Founder, Confluent | Kafka Summit APA...
PDF
Apache Kafka for Cybersecurity and SIEM / SOAR Modernization
PDF
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019
PDF
Battle-tested event-driven patterns for your microservices architecture - Sca...
PDF
Event-Driven Microservices with Apache Kafka, Kafka Streams and KSQL
PPTX
Kafka and event driven architecture -apacoug20
PDF
Event-Streaming verstehen in unter 10 Min
PDF
Battle-tested event-driven patterns for your microservices architecture - Sca...
PPTX
Check Out our Rich Python Portfolio: Leaders in Python & Django‎
PDF
Core Banking System on Apache Kafka
PDF
Confluent Cloud for Apache Kafka® | Google Cloud Next ’19
PPTX
Real time analytics in Azure IoT
PDF
Kai Waehner [Confluent] | Real-Time Streaming Analytics with 100,000 Cars Usi...
PDF
Serving the Real-Time Data Needs of an Airport with Kafka Streams and KSQL
PDF
Building event-driven Microservices with Kafka Ecosystem
PDF
Apache Kafka and Blockchain - Comparison and a Kafka-native Implementation
PDF
Event-Driven Architectures Done Right | Tim Berglund, Confluent
PDF
Architecture Patterns for Event Streaming (Nick Dearden, Confluent) London 20...
Lead confluent HQ Dec 2019
Real time data processing and model inferncing platform with Kafka streams (N...
Leveraging Data in Motion | Jun Rao, Co-Founder, Confluent | Kafka Summit APA...
Apache Kafka for Cybersecurity and SIEM / SOAR Modernization
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019
Battle-tested event-driven patterns for your microservices architecture - Sca...
Event-Driven Microservices with Apache Kafka, Kafka Streams and KSQL
Kafka and event driven architecture -apacoug20
Event-Streaming verstehen in unter 10 Min
Battle-tested event-driven patterns for your microservices architecture - Sca...
Check Out our Rich Python Portfolio: Leaders in Python & Django‎
Core Banking System on Apache Kafka
Confluent Cloud for Apache Kafka® | Google Cloud Next ’19
Real time analytics in Azure IoT
Kai Waehner [Confluent] | Real-Time Streaming Analytics with 100,000 Cars Usi...
Serving the Real-Time Data Needs of an Airport with Kafka Streams and KSQL
Building event-driven Microservices with Kafka Ecosystem
Apache Kafka and Blockchain - Comparison and a Kafka-native Implementation
Event-Driven Architectures Done Right | Tim Berglund, Confluent
Architecture Patterns for Event Streaming (Nick Dearden, Confluent) London 20...
Ad

Similar to Seamless Guest Experience with Kafka Streams (20)

PDF
Seamless Guest Experience with Kafka Streams (Ramaraju Indukurir and Himani A...
PDF
Kafka as an Event Store - is it Good Enough?
PDF
SVCC Developing Asynchronous, Message-Driven Microservices
PDF
Kafka as an event store - is it good enough?
PDF
Microservices in Java and Scala (sfscala)
PDF
NDC London 2017 - The Data Dichotomy- Rethinking Data and Services with Streams
PDF
Building a Real-time Streaming ETL Framework Using ksqlDB and NoSQL
PPTX
Advanced RingCentral API Use Cases
PDF
Building microservices with Scala, functional domain models and Spring Boot (...
PDF
Gyula Fóra - RBEA- Scalable Real-Time Analytics at King
PDF
RBea: Scalable Real-Time Analytics at King
PDF
Powering Consistent, High-throughput, Real-time Distributed Calculation Engin...
PPTX
Event streaming webinar feb 2020
PDF
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
PDF
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
PPTX
Introduction to WSO2 Data Analytics Platform
PDF
LJC Conference 2014 Cassandra for Java Developers
PPTX
PayPal Real Time Analytics
PDF
Mucon: Not Just Events: Developing Asynchronous Microservices
PDF
YOW2018 - Events and Commands: Developing Asynchronous Microservices
Seamless Guest Experience with Kafka Streams (Ramaraju Indukurir and Himani A...
Kafka as an Event Store - is it Good Enough?
SVCC Developing Asynchronous, Message-Driven Microservices
Kafka as an event store - is it good enough?
Microservices in Java and Scala (sfscala)
NDC London 2017 - The Data Dichotomy- Rethinking Data and Services with Streams
Building a Real-time Streaming ETL Framework Using ksqlDB and NoSQL
Advanced RingCentral API Use Cases
Building microservices with Scala, functional domain models and Spring Boot (...
Gyula Fóra - RBEA- Scalable Real-Time Analytics at King
RBea: Scalable Real-Time Analytics at King
Powering Consistent, High-throughput, Real-time Distributed Calculation Engin...
Event streaming webinar feb 2020
Building and deploying microservices with event sourcing, CQRS and Docker (Me...
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Introduction to WSO2 Data Analytics Platform
LJC Conference 2014 Cassandra for Java Developers
PayPal Real Time Analytics
Mucon: Not Just Events: Developing Asynchronous Microservices
YOW2018 - Events and Commands: Developing Asynchronous Microservices
Ad

More from Knoldus Inc. (20)

PPTX
Angular Hydration Presentation (FrontEnd)
PPTX
Optimizing Test Execution: Heuristic Algorithm for Self-Healing
PPTX
Self-Healing Test Automation Framework - Healenium
PPTX
Kanban Metrics Presentation (Project Management)
PPTX
Java 17 features and implementation.pptx
PPTX
Chaos Mesh Introducing Chaos in Kubernetes
PPTX
GraalVM - A Step Ahead of JVM Presentation
PPTX
Nomad by HashiCorp Presentation (DevOps)
PPTX
Nomad by HashiCorp Presentation (DevOps)
PPTX
DAPR - Distributed Application Runtime Presentation
PPTX
Introduction to Azure Virtual WAN Presentation
PPTX
Introduction to Argo Rollouts Presentation
PPTX
Intro to Azure Container App Presentation
PPTX
Insights Unveiled Test Reporting and Observability Excellence
PPTX
Introduction to Splunk Presentation (DevOps)
PPTX
Code Camp - Data Profiling and Quality Analysis Framework
PPTX
AWS: Messaging Services in AWS Presentation
PPTX
Amazon Cognito: A Primer on Authentication and Authorization
PPTX
ZIO Http A Functional Approach to Scalable and Type-Safe Web Development
PPTX
Managing State & HTTP Requests In Ionic.
Angular Hydration Presentation (FrontEnd)
Optimizing Test Execution: Heuristic Algorithm for Self-Healing
Self-Healing Test Automation Framework - Healenium
Kanban Metrics Presentation (Project Management)
Java 17 features and implementation.pptx
Chaos Mesh Introducing Chaos in Kubernetes
GraalVM - A Step Ahead of JVM Presentation
Nomad by HashiCorp Presentation (DevOps)
Nomad by HashiCorp Presentation (DevOps)
DAPR - Distributed Application Runtime Presentation
Introduction to Azure Virtual WAN Presentation
Introduction to Argo Rollouts Presentation
Intro to Azure Container App Presentation
Insights Unveiled Test Reporting and Observability Excellence
Introduction to Splunk Presentation (DevOps)
Code Camp - Data Profiling and Quality Analysis Framework
AWS: Messaging Services in AWS Presentation
Amazon Cognito: A Primer on Authentication and Authorization
ZIO Http A Functional Approach to Scalable and Type-Safe Web Development
Managing State & HTTP Requests In Ionic.

Recently uploaded (20)

PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Approach and Philosophy of On baking technology
PDF
Empathic Computing: Creating Shared Understanding
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Machine Learning_overview_presentation.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Spectroscopy.pptx food analysis technology
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Programs and apps: productivity, graphics, security and other tools
Reach Out and Touch Someone: Haptics and Empathic Computing
Approach and Philosophy of On baking technology
Empathic Computing: Creating Shared Understanding
Mobile App Security Testing_ A Comprehensive Guide.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Machine Learning_overview_presentation.pptx
The AUB Centre for AI in Media Proposal.docx
Network Security Unit 5.pdf for BCA BBA.
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
20250228 LYD VKU AI Blended-Learning.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Spectroscopy.pptx food analysis technology
A comparative analysis of optical character recognition models for extracting...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Unlocking AI with Model Context Protocol (MCP)
MYSQL Presentation for SQL database connectivity
sap open course for s4hana steps from ECC to s4
Machine learning based COVID-19 study performance prediction
Programs and apps: productivity, graphics, security and other tools

Seamless Guest Experience with Kafka Streams

  • 1. Seamless Guest Experience with Kafka Streams Ram IndukuriHimani Arora Suresh Mulukaladu
  • 2. About Knoldus Technology consulting firm with focus on digital transformation Functional. Reactive. Cloud Native
  • 3. We are global cruise vacation company that controls and operates four global brands. Royal Caribbean International, Azamara club, Celebrity cruises and Silversea Cruises.We are also 50% joint venture owner of German brand TUI Cruises and 49% owner of the spanish brand Pullmantur Cruceros. About Royal Caribbean International
  • 4. Royal Caribbean International - Facts ● World’s second largest global cruise line ● Represents more than 20% of global cruisers ● 9.5 billion in revenues (2018) ● Serving more than 5 Million guests every year around the globe ● 60 ships in service and another 14 ships on the way ● Oasis class(World’s largest) ships carry close to 6000 guests and 2000 crew
  • 5. Guest Journey - touchpoints Discover Book Cruise Excursions Check In Board Ship Cruise Take Excursions Debark Create Memories ● Research vacation options ● Book the cruise & air reservations ● Plan and Book activities on the cruise ● Complete online check-in and get boarding pass ● Pre cruise activities ● Get to the embarkation port ● Check-in to the cruise and board ● Get to your state room ● Book dinner reservations and activities ● Enjoy the cruise and activities ● Excursions at ports of call ● Debarkation ● Post cruise activities ● Fly back ● Get home
  • 7. Digital Vision Discover Book Cruise Pre Cruise Planning Check In Board Ship Cruise Take Excursions Debark Create Memories Sensor Wearable TV API Layer Device Layer One App
  • 8. Architectural Challenges 1 How to Standardize Footprints on all ships and shore ? 3 How do guests have seamless experience on ship(s) and shore if we rely on batch process ? 2 How do we build on what we have today ? Same infrastructure on ship/shore API and Microservices Event driven Architecture with real time synchronization
  • 9. Ship-Shore Highway - Event enabling Fleet System of Record System of Record Ship Shore Highway Event enablement, transmission, processing & Analytics across fleet
  • 10. SoR Ship-Shore Pattern API Gateway Micro Service Data Store System of Record Data Store System of Record Micro Service
  • 11. Change data Capture - Using Kafka Connect Web Call Center Travel Agent SQL Mirror Kafka Connect Kafka Shore Reservation SOR AWS Data Transformer Kafka Ship
  • 12. Broadcasting events - Using Streams Web Call Center Travel Agent IIDR Business Events & Change Data Reservation SOR AWS Kafka Streams Kafka
  • 13. Generating Business Events by Combining Topics Booking ID(pk) Guest ID Guest ID(pk) Name Address State Store State Store JOIN Guest ID Booking ID Name Address
  • 14. Generating Business Events by Combining Topics StreamsBuilder builder = new StreamsBuilder(); KStream<String, BookingDetails> guestBookings = builder.stream(guestBookingTopic) .selectKey((key, value) -> value.getGuestId()); KStream<String, GuestDetails> guestDetails = builder.stream(guestDetailsTopic); KStream<String, GuestBookingDetails> guestBookingAndDetails = guestBookings .join(guestDetails, (guestBooking, guestDetail) -> /* business event message */, JoinWindows.of(Duration.ofHours(10));
  • 15. Guest Bookings Stream Guest Details Stream Transparent Handling of Late Arrival Records SLIDING WINDOW JoinWindows.of(Duration.ofHours(10)) Late Arriving Record Event 1Event 2 Event 1Event 2 Event 12 Event 13 Event 13 Event 14 Event 14 Event 15
  • 16. Transparent Handling of Late Arrival Records Guest Bookings Stream Guest Details Stream SLIDING WINDOW Grace Period set to: JoinWindows.of(Duration.ofHours(10)).grace(Duration.ofHours(24))) Event 1Event 2 Event 1Event 2 Event 12 Event 13 Event 13 Event 14 Event 14 Event 15
  • 17. Transparent Handling of Late Arrival Records StreamsBuilder builder = new StreamsBuilder(); KStream<String, BookingDetails> guestBookings = builder.stream(guestBookingTopic) .selectKey((key, value) -> value.getGuestId()); KStream<String, GuestDetails> guestDetails = builder.stream(guestDetailsTopic); KStream<String, GuestBookingDetails> guestBookingAndDetails = guestBookings .join(guestDetails, (guestBooking, guestDetail) -> /* business event message */, JoinWindows.of(Duration.ofHours(10) .grace(Duration.ofHours(24)) );
  • 18. Consecutive Joins on Multiple Topics Booking ID Guest ID Guest ID Name Address State Store State Store JOIN Guest ID Purchase ID Intermediate State Store
  • 19. Consecutive Joins on Multiple Topics Booking ID Guest ID Guest ID Name Address State Store State Store JOIN Guest ID Purchase ID Intermedia te Store State Store JOIN Guest ID Booking ID Purchase ID Name Address
  • 20. Transparent Handling of Late Arrival Records StreamsBuilder builder = new StreamsBuilder(); KStream<String, BookingDetails> guestBookings = builder.stream(guestBookingTopic) .selectKey((key, value) -> value.getGuestId()); KStream<String, PurchaseDetails> guestPurchases = builder.stream(guestPurchasesTopic); .selectKey((key, value) -> value.getGuestId()); KStream<String, GuestDetails> guestDetails = builder.stream(guestDetailsTopic); KStream<String, GuestBookingDetails> guestBookingAndDetails = guestBookings .join(guestDetails, (guestBooking, guestDetail) -> /* business event message with booking id and guest details */, JoinWindows.of(Duration.ofHours(10) .join(guestPurchases, (guestBookingDetail,guestPurchase) -> /* business event message with guest details, booking and purchase details*/, JoinWindows.of(Duration.ofHours(10)));
  • 21. Ensuring Streaming reliability - Graphite/Grafana Kafka Stream App JMX Graphite Grafana ● Consumer Lag to detect surges ● Idle time threshold to predict Thread health ● Bytes Received in last window indicating Kafka broker issues Lack of activity indicate either broker failure or app failure
  • 22. Ensuring Data Quality - Apache Spark Apache Spark Apache Spark Minio incremental Mirroring 1 2 3 4 5
  • 23. Next Steps - Interactive Queries Instance 1 Instance 2 Instance 3 GUEST API Local Kafka State Store Local Kafka State Store Local Kafka State Store host1:4047 host2:5047 host3:4460 Exposing RPC endpoint and information about its local state store Kafka Cluster
  • 24. Summary ● Real time guest information synchronization across ship and shore was possible with kafka, connect and replicators ● Kafka streams and IIDR helped to reduce the latency in processing the CDC ● Isolate critical connectors into their own connect cluster to reduce risk ● Order guarantee is easier to achieve with streams than connectors. ● Invest in domain driven design ● Include legacy dependencies in critical path for planning feature delivery.
  • 25. More Information Ram Indukuri ram@knoldus.com Himani Arora himani@knoldus.com Suresh Mulukuladu smulukuladu@rccl.com For more information Blog: https://blog.knoldus.com/join-semantics-kafka-streams/ Git Samples: https://github.com/knoldus/