SlideShare a Scribd company logo
1 of 155
Download to read offline
RabbitMQ & Kafka
October 7–10, 2019
Austin Convention Center
Madhav Sathe & Zoe Vance
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Introduction
2

Madhav Sathe
Platform Architect
@madhav_sathe
Zoe Vance
Product Lead
zvance@pivotal.io
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Benefits
When to Use Each
Challenges
RabbitMQ Building Blocks
Developer Experiences
Live Coding
Kafka Building Blocks
Tips
Agenda
3

Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Benefits
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
What is Rabbit
General purpose message broker, based around message queues,
designed with a smart broker / passive consumer model
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Why RabbitMQ
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Plugins
Tier 1 (19)
Community
- Routing
- Auth
- Mgmt
- Clustering
- Logging
- Queues
- Protocols
Why RabbitMQ
Client Libraries
Java (4)
Spring (3)
.Net (6)
Ruby (7)
Python (4)
PHP (7)
JavaScript & Node (4)
Rust (2)
Objective-C & Scala (1)
Other JVM (11)
C & C++ (4)
Go (3)… find more at rmq docs
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Why RabbitMQ
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
9

Why RabbitMQ
RabbitMQ Broker
Exchange(s)
Bindings
Queues
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Easy to scale by adding/removing competing consumers on a single queue
Can be configured for consistency, high availability, low latency, high throughput
Cluster rolling upgrades via feature flags
Easy to get started
Supports strict ordering
Wider use cases e.g., event driven microservices, RPC, ETL (with SCDF), enterprise message bus, pub-sub
messaging, real-time analytics (with Reactor and RabbitMQ Reactive API)
Why RabbitMQ
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Distributed & partitioned commit log with messaging semantics
Distributed real-time streaming platform
What is Kafka?
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Why Kafka
Very high throughput with data guarantees
Massive scale
Ability to replay events
De-facto standard for streaming platform
Ability to plug-n-play consumer groups on a topic
Supports strict ordering
Replace complex data architectures
Broad ecosystem
Wider use cases - pub-sub messaging, events driven microservices, logs store, streaming, event
sourcing, CDC, enterprise data pipelines
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Why Kafka
Messaging API
Apps
Streaming API
Apps
Connect Sink
Connect Source
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
When to use each
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
If you don’t have specific Kafka requirements, then RabbitMQ gives you greater flexibility, can meet
high throughput and real-time event-processing needs and has lower cost of operations
Evolving application requirements
Decoupled producer and consumers (using exchanges)
Consumers independently bring their own queue that binds to exchanges
Consuming applications don’t need to process messages that aren’t relevant
When to use RabbitMQ Over Kafka
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
When to use Kafka Over RabbitMQ
Streaming platform
Extremely high throughput
Joining multiple streams or streams and tables to enrich the data
Scale (typically beyond 5 brokers)
Replay
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Challenges
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
RabbitMQ
Operational complexity in resolving network partitions
Queues are single-threaded
Scaling brokers >3 becomes complicated and can have negative performance impacts
No events replay
Does not natively support stateful streaming use cases (but can do so with Reactor +
RabbitMQ Reactive API with external store such as Redis)
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Challenges in Kafka
No free lunch - operational complexity
Requires a separate Zookeeper cluster
Requires meticulous planning to select partition count
Storage management overheads
Careful coordination needed between teams writing consumer groups and producers
No out of box management & monitoring console
Streaming API support restricted mainly to Java
No out of box solution for upgrade*
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Let us a play a little game
Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20
consumers. So we define topic “Bar” with 20 partitions.
And YOU are a Kafka architect 😍
https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Let us a play a little game
Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20
consumers. So we define topic “Bar” with 20 partitions.
At some later point “appB” too has a requirement to stream events from “Bar”. But “appB”
already streams events from topic “Foo”. “appB” actually needs to join the events from “Foo”
and “Bar”. However, “Foo” has only 10 partitions.
And YOU are a Kafka architect 😕
https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Let us a play a little game
Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20
consumers. So we define topic “Bar” with 20 partitions.
At some later point “appB” too has a requirement to stream events from “Bar”. But “appB”
already streams events from topic “Foo”. “appB” actually needs to join the events from “Foo”
and “Bar”. However, “Foo” has only 10 partitions.
Now “appC” is interested in events from “Bar”. However, “appC” wants ordering across the
topic, so “appC” really needs “Bar” to have only one partition.
And YOU are a Kafka architect 😢
https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Let us a play a little game
Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20
consumers. So we define topic “Bar” with 20 partitions.
At some later point “appB” too has a requirement to stream events from “Bar”. But “appB”
already streams events from topic “Foo”. “appB” actually needs to join the events from “Foo”
and “Bar”. However, “Foo” has only 10 partitions.
Now “appC” is interested in events from “Bar”. However, “appC” wants ordering across the
topic, so “appC” really needs “Bar” to have only one partition.
Both “Foo” and “Bar” events are becoming popular, so “appD” doesn’t want to be left
behind and wants both events. However, “appD” needs ordering guarantee across the all
events.
And YOU are a Kafka architect ……….. 😼 🤟
https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Credit: Jack Vanlightly @vanlightly
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Credit: Jack Vanlightly @vanlightly
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Building Blocks of
RabbitMQ
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
2
7

Messaging in RabbitMQ
BrokerProducers
Message
Exchange(s)
Bindings
Queues Consumers
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Direct Exchange
Direct exchange delivers
messages to queues when the
message routing key exactly
matches the queue’s binding key.
images.crop cropper
Routing key
resizer
images.resize
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Topic Exchange
Topic exchange delivers
messages to queues when the
wildcard matches between the
routing key and the queue’s
binding key.
*.*.error errors
Routing key
geos
eu.de.*
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Fanout Exchange
Fanout exchange delivers
messages to all queues
regardless of routing keys or
pattern matching.
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Clustering with RabbitMQ
Autoheal partition handling strategy optimizes for AP
Pause Minority partition handling strategy optimizes for CP
Publisher Confirms
Broker
Producer
Exchange
Bindings
Queues
Ack
Consumers
Broker
Exchange
Bindings
Queues
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
RabbitMQ Roadmap
RabbitMQ
OSS
RMQ for Pivotal
Platform
RMQ on
Kubernetes
RabbitMQ 3.8 just out!
- Quorum queues using RAFT to
provide persistent and fault tolerant
messaging systems
- Mixed-version rolling upgrades
- Enhanced observability (new
metrics and built in plugin with
visualizations in grafana)
- OAuth 2.0 Support
In Closed Beta
Goal is to provide great developer and
day-2 operational experience (automated
reliable upgrades, problem resolution and
actionable observability)
RabbitMQ for PCF 1.18 just out!
- Support for off-platform
applications instances to
on-platform RabbitMQ instances
PAS PKSDIY
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
RabbitMQ Developer Experience
Spring Cloud
Stream
● Abstraction over
protocol
● Abstraction over
messaging vendor
● Same code
regardless of
messaging broker
Spring AMQP
● Provides a
"template" as a
high-level
abstraction for
sending and
receiving messages.
● Support for
Message-driven
POJOs with a
"listener container".
● Similar to the JMS
support in the Spring
Framework.
RabbitMQ AMQP
Client
● Low level API to
RabbitMQ
Options for Java developers
Reactor RabbitMQ
● Reactive API for
RabbitMQ based on
Reactor and RMQ
Java Client
● Functional APIs
enables messages to
be
published/consumed
with non-blocking
back-pressure and
very low overheads
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Kafka Developer Experience
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Integration
Spring for Apache Kafka
Spring Cloud Stream Binder for
Kafka
Spring Cloud Stream Kafka Streams Binder
KStream, KTable & GlobalKTable
Spring Cloud Stream
Input & Output Message Channels Spring Cloud Kafka Stream
Spring Cloud Stream Microservice
Spring Cloud Stream Kafka Streams
Microservice
Binder
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Demo
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
JustRide: Driver Behavior Driven Car Insurance
Car Events
Violations
Score Processor
Customer Score
Caches
Customer Info
Customer
Scores API
vSphere
Azure &
Azure Stack
Google CloudAWS
Dashboard
Pivotal Platform
Speed Check
Processor
Customer Score
Customer
Score Sink
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Speed Check Processor
(SCSt + Kstream)
For the demo
Car Events
Violations
Car Events Load
Generator
(SCSt)
Score Processor
(SCSt + Kstream)
Main business logic
application.yaml to define input and output bindings with
topics as destinations
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Model for the demo
CarEvent:
- uuid
- latitude
- longitude
- speed
Simple JSON friendly Pojo
Message Key: uuid
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Model for the demo
CarEvent:
- uuid
- latitude
- longitude
- speed
Simple JSON friendly Pojo
Message Key: uuid
ViolationEvent:
- uuid
- List<CarEvent>
- violationCount
- start
- end
State Management:
- new() - ‘start’ timestamp, new ArrayList<CarEvent>
- addCarEvent() - check speed, add to list, increase
violationCount
- closeWindow() - ‘end’ timestamp
JSON friendly “self aware” data model
Message Key: uuid
Speed Check Processor
(SCSt + Kstream)
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Building Blocks
Kafka
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Sequential I/O as opposed to random → huge benefits for disk
performance
Kafka is Log & Real-time*, How’s That Possible?
Extremely smart utilization of OS page cache → achieve read and writes
without disk IOPS in call path
Zero copy send files → kernel copies the data directly from the disk file to
the socket, without going through the application
* When evil scenarios are avoided :)
In-memory
performance
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Broker A
File System
In-memory Cache
Producer
1 - Send message
2
3
4
5 - Receive ACK
ACK = 1
https://www.confluent.io/kafka-summit-sf18/kafka-on-zfs
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Broker A
File System
In-memory Cache
Consumer
2
4
1
Socket
Buffer
NIC Buffer
3
5
https://medium.com/@sunny_81705/what-makes-apache-kafka-so-fast-71b477dcbf0
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Broker and Cluster
Broker A
Controller
- Monitoring other
brokers
- Broker shutdown
- Election of
partition leaders
- Tell brokers
about partition leaders
Broker B Broker C
Zookeeper Cluster
/controller → Broker A
/topic/A/0 → Broker A
/topic/A/1 → Broker B
/topic/A/2 → Broker C
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Topic and Partitions Basics
Partition 0
Partition 1
Topic is divided in partitions, each partition is
essentially a log file
Partitions can have replicas for HA
One of replicas is chosen as a Leader
All reads and writes happen only on Leader
Publisher can only append to the partition
Ordering guarantees only in a partition
Topic
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Broker B
Partition: 0
Leader
Partition: 1
Follower
Partition: 0
Follower
Partition: 1
Leader
Broker A
Producers
Producers
Producer API
Cluster: 2 brokers,
Topic: trades,
Partitions: 2,
Replicas: 2
Messages without a key
are shared across
partitions in round robin
fashion
Hash based partition
selection
Messages with same key
go to same partition
Batch Batch
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Partition and Consumer Offset
0 1 2 3 4 5 6 7
Producers/Publishers
Alana’s Offset
Cody’s Offset Zoe’s Offset
P0
P0 P0 P0
1 3 6
Partition offset map topic
Just reset your offset to
re-play the messages
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Kafka Streams
Cluster
Topic: trades
Kstream
Topic: company
profiles
Ktable
Topic:
recommendations
Kstream
Kafka managed topic
Kafka Streaming
Microservice
Fault tolerant state
store
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cluster
Partitions and Consumer Groups
Topic: trades,
Partition: 0
Topic: trades,
Partition: 1
Consumer Group
Consumer 1
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cluster
Partitions and Consumer Groups
Topic: trades,
Partition: 0
Topic: trades,
Partition: 1
Consumer Group
Consumer 1
Consumer 2
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cluster
Partitions and Consumer Groups
Topic: trades,
Partition: 0
Topic: trades,
Partition: 1
Consumer Group
Consumer 1
Consumer 2
Consumer 3
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cluster
Partitions and Consumer Groups
Topic: trades,
Partition: 0
Topic: trades,
Partition: 1
Consumer Group
Consumer 1
🔥Consumer 2
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cluster
Partitions and Consumer Groups
Topic: trades,
Partition: 0
Topic: trades,
Partition: 1
Consumer Group
Consumer 1
🔥Consumer 2
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Tips for RabbitMQ
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Tips to efficiently use RabbitMQ
● Overall
○ Clarify requirements of your application
○ Monitor RabbitMQ
○ Use wide range of RabbitMQ Resources
● Queues
○ Happy Rabbit is an Empty Rabbit - keep queues short
○ For performance, use in-memory, non-mirrored queues
○ For HA & data safety, use Quorum Queues
● Producer/Consumers
○ Use multiple consumers if consumers are slow or there are too many producers
○ If messages can’t be lost, use acknowledgments
○ For performance, use autoack
● Resources
○ Every connection, channel, queue costs memory & CPU; more there are and harder they work, more resources
are required
○ For throughput, have as many queues as cores on the underlying nodes of a multi-core system
● Messages
○ For performance, keep messages in memory
○ If messages can’t be lost, ensure you use pre-fetch values with publisher confirms/consumer acks
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Tips for Kafka
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Tips to efficiently using Kafka
● Use ACK = All if you love your data, ACK = 1 for balance between reliability & latency
● Route “hot keys” to a different topic to avoid “hot partitions”
● Producer efficiency
○ Pick optimal batch size that fills up fast so that you good mix of throughput and latency
○ Linger of 5ms is a usually a good thumb rule
○ Increase batch size for higher throughput
○ Lower linger for lower latency
● If you have large files to send consider following options
○ Put files on shared location and send location of the files on kafka
○ Break down file to right size and use keys to ensure ordered processing
● Tips on using keys
○ Setting Key=Null gives best performance and balanced partitions across cluster
○ Explore possibility of leveraging downstream stores to establish ordering
○ Use keys only if you need ordered messaging in real-time or joins across different topics
● A lot of Kafka’s performance depends availability of page cache and GC overhead so monitor these two
parameters with extra care
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
● Extremely large messages may block consumers if the consumer is not configured with adequate buffer size. If there
are some large messages, consider using a separate topic
● Ad-hoc offset reset/replays while writes and other reads are going on
● ACK=All will have some impact on latency so plan the partitions accordingly
○ In-Sync replicas lagging behind, always watch your ISR list
● Watch out for disk IOPS during reads and writes
○ Less available memory for page caching forcing more disk IOPS
○ Vastly lagging consumers working at different speeds forcing disk IOPS
● Brokers running different versions within a cluster can performance issue
○ Few brokers running much faster or much slower than rest of the cluster
● Watch out for Zombie brokers in older Kafka versions
● Old Kafka client libraries (producer/consumer) may have adverse impact on throughput and latency
● Check rebalance of partitions if broker goes down, if you don’t throttle it then it can use up all your n/w bandwidth
● Restarting cluster with large number of partitions, leader election takes time
● If consumer crashes or unable to send heartbeats, the partition reassignment will take place, and during this time no
consumer in the group can process any message
Watch out! Things causing adverse impact in Kafka
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Thanks to
Jack Vanlightly
Marcial Rosales
Soby Chacko
Sina Sajoodi
Wayne Lund
Timothy Dalsing
Dan Carwin
Gerhard Lazu
Karl Nilsson
Arnaud Cogoluegnes
James Williams
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Resources
3.8 Blog
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Thank You!
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Appendix
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cluster
Partitions and Consumer Groups
Topic: trades,
Partition: 0
Topic: trades,
Partition: 1
Sink
Consumer Groups
Streaming, Joins, Aggregations,
Windowing
AI
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
● Running out of date software
● Opening/closing channels repeatedly
● Using lots of connections/channels (causes lots of overhead and is not performant)
● Long queues
● Large messages
● Configuring RabbitMQ for scenarios you don’t need e.g. using ‘ha-all’ when mirroring to a
quorum is sufficient or using durable queues when non-durable queues work
Watch out! Things causing adverse impact in RabbitMQ
Cluster - Architecture
Exchange
routing_key1
routing_key2
routing_key3
…
Queue1 Metadata
Queue1 Contents
Exchange
routing_key1
routing_key2
routing_key3
…
Queue1 Metadata
Exchange
routing_key1
routing_key2
routing_key3
…
Queue1 Metadata
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Broker B
Partition: 0
Leader
Partition: 1
Follower
Partition: 0
Follower
Partition: 1
Leader
Broker A
Partition Replicas and Brokers
Cluster: 2 brokers,
Topic: trades,
Partitions: 2,
Replicas: 2
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Consistent Hashing
Routing key
½ hash
space
Routes messages to specific
queue based on the hash of the
routing key or header. Enables
order guarantees with multiple
consumers
½ hash
space
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Connected Cars & Insurance
Car Events
Violations
Score Processor
Customer Score
Caches
Customer Info
Customer
Scores API
vSphere
Azure &
Azure Stack
Google CloudAWS
Dashboard
Pivotal Platform
Speed Check
Processor
Customer Score
Customer
Score Sink
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Speed Check Processor
(SCSt + Kstream)
For the demo
Car Events
Violations
Car Events Load
Generator
(SCSt)
Score Processor
(SCSt + Kstream)
Main business logic
application.yaml to define SCSt input and output bindings for
each of the components - 1. load generator, 2. speed check
processor & 3. score processor
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Model for the demo
CarEvent:
- uuid
- latitude
- longitude
- speed
Simple JSON friendly Pojo
Message Key: uuid
ViolationEvent:
- uuid
- List<CarEvent>
- violationCount
- start
- end
State Management:
- new() - ‘start’ timestamp, new ArrayList<CarEvent>
- addCarEvent() - check speed, add to list, increase
violationCount
- closeWindow() - ‘end’ timestamp
JSON friendly “self aware” data model
Message Key: uuid
Speed Check Processor
(SCSt + Kstream)
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Live code SCSt + KStream - stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Double click on KStream stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
1. Group By Key (car UUID)
2. Create tumbling window for 30 sec
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Double click on KStream stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
1. Group By Key (car UUID)
2. Create tumbling window for 30 sec
3. Perform stateful transformation using Aggregator (this is where we use self
aware model) that creates a KTable for each Windowed<UUID>
a. Initialize ViolationEvent (model decides what is required on
initialization)
b. Call aggregator in ViolationEvent for each CarEvent (model decides
how to implement aggregation, this is where CarEvent is checked for
overspeeding)
c. Materialize the state (KTable) in a Kafka managed state store using
SerDe
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Double click on KStream stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
1. Group By Key (car UUID)
2. Create tumbling window for 30 sec
3. Perform stateful transformation using Aggregator (this is where we use self aware
model) that creates a KTable for each Windowed<UUID>
a. Initialize ViolationEvent (model decides what is required on initialization)
b. Call aggregator in ViolationEvent for each CarEvent (model decides how to
implement aggregation, this is where CarEvent is checked for overspeeding)
c. Materialize the state (KTable) in a Kafka managed state store using SerDe
4. Update the value, let ViolationEvent close the window (again, let the model
decide how to manage itself)
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Double click on KStream stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
1. Group By Key (car UUID)
2. Create tumbling window for 30 sec
3. Perform stateful transformation using Aggregator (this is where we use self aware
model) that creates a KTable for each Windowed<UUID>
a. Initialize ViolationEvent (model decides what is required on initialization)
b. Call aggregator in ViolationEvent for each CarEvent (model decides how to
implement aggregation, this is where CarEvent is checked for overspeeding)
c. Materialize the state (KTable) in a Kafka managed state store using SerDe
4. Update the value, let ViolationEvent close the window (again, let the model decide how
to manage itself)
5. Convert the KTable to KStream
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Double click on KStream stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
1. Group By Key (car UUID)
2. Create tumbling window for 30 sec
3. Perform stateful transformation using Aggregator (this is where we use self aware
model) that creates a KTable for each Windowed<UUID>
a. Initialize ViolationEvent (model decides what is required on initialization)
b. Call aggregator in ViolationEvent for each CarEvent (model decides how to
implement aggregation, this is where CarEvent is checked for overspeeding)
c. Materialize the state (KTable) in a Kafka managed state store using SerDe
4. Update the value, let ViolationEvent close the window (again, let the model decide how
to manage itself)
5. Convert the KTable to KStream
6. Filter out the ViolationEvents that have less than “Threshold” violation
occurrences in a window
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Double click on KStream stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
1. Group By Key (car UUID)
2. Create tumbling window for 30 sec
3. Perform stateful transformation using Aggregator (this is where we use self aware
model) that creates a KTable for each Windowed<UUID>
a. Initialize ViolationEvent (model decides what is required on initialization)
b. Call aggregator in ViolationEvent for each CarEvent (model decides how to
implement aggregation, this is where CarEvent is checked for overspeeding)
c. Materialize the state (KTable) in a Kafka managed state store using SerDe
4. Update the value, let ViolationEvent close the window (again, let the model decide how
to manage itself)
5. Convert the KTable to KStream
6. Filter out the ViolationEvents that have less than “Threshold” violation occurrences in a
window
7. Map Windowed<Key> to Key for downstream apps
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Double click on KStream stateful transformation logic
Speed Check Processor
(SCSt + Kstream)
Main business logic
Consume KStream of events from “car-events” topic, apply business logic using stateful
transformations & send KStream of events to “violations” topic for cars that meet the criteria
1. Group By Key (car UUID)
2. Create tumbling window for 30 sec
3. Perform stateful transformation using Aggregator (this is where we use self aware
model) that creates a KTable for each Windowed<UUID>
a. Initialize ViolationEvent (model decides what is required on initialization)
b. Call aggregator in ViolationEvent for each CarEvent (model decides how to
implement aggregation, this is where CarEvent is checked for overspeeding)
c. Materialize the state (KTable) in a Kafka managed state store using SerDe
4. Update the value, let ViolationEvent close the window (again, let the model decide how
to manage itself)
5. Convert the KTable to KStream
6. Filter out the ViolationEvents that have less than “Threshold” violation occurrences in a
window
7. Map Windowed<Key> to Key for downstream apps
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
OLD SLIDES
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Abstract
When should I use RabbitMQ and when should I use Kafka? This is a question we're
asked all the time on our team.
In this talk, we'll walk through the different architecture and design of these two
popular messaging tools. We'll also explain what those design decisions mean for
performance, scaling, and different use cases.
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Provide guidance on how to think about how these two
powerful tools in your architectures.
Goal
8
7

Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
“Events First” as a core design principle
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
AppA AppB❌
Dont tell what to do
AppA
AppB
Events
Share what happened via an event
Let others figure out what to do with it
AppC
Later, more apps may be interested in these events,
still nothing changes for app that generated events
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Events driven systems are not new
However
The recent hyper growth is fueled by a shift from batch processing
to real-time stream processing and the rise of digital economy
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
ETL
EAI
Events Driven,
(near) real-time
Streaming
Platform
+
Scale
+
Events Driven,
Real-time
Diversity
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
RabbitMQ
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Events first as a core principle
RabbitMQ building blocks
Apache Kafka building blocks
Differences and Architectures
Design Considerations
Spring Boot 🧡 Kafka (live coding)
Spring Boot 🧡 RMQ (live coding)
Agenda
9
3

Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
CG1
Topic Exchange A
App - CG1 with SCSt,
Binding = TopicA
App - CG2 with SCSt,
Binding = TopicACG2
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
9
5

What is RabbitMQ
● Open-source project written in Erlang backed by Pivotal
● A general purpose message broker designed with a smart broker / passive
consumer model
● Enables cross-language messaging with Advanced Message Queueing Protocol
specification and support for range of additional protocols (STOMP, MQTT, HTTP,
AMQP 1.0)
● A tool with wide and extendable support (many client libraries, many plugins)
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
9
6

How does RabbitMQ work
BrokerProducers
Message
Exchange(s)
Bindings
Queues Consumers
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Exchanges and
bindings are the routing
instructions for message
distribution.
Bindings are the rules
about which queues are
relevant for the
message.
Exchanges and bindings
Exchange
Bindings
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Direct Exchange
Direct exchange delivers
messages to queues when the
message routing key exactly
matches the queue’s binding key.
images.crop cropper
Routing key
resizer
images.resize
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Topic Exchange
Topic exchange delivers
messages to queues when the
wildcard matches between the
routing key and the queue’s
binding key.
*.*.error errors
Routing pattern
geos
eu.de.*
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Fanout Exchange
Fanout exchange delivers
messages to all queues
regardless of routing keys or
pattern matching.
Publisher Confirms
Mechanism for producers to confirm successful handling by RabbitMQ. Publisher
confirms will inform if a message is dropped (e.g., not routed to a queue) or if a
message has been appended to the relevant queues or written to disk.
Increasing levels of message reliability
make a performance trade-off
Broker
Producer
Message
Exchange
Bindings
Queues
Ack
Consumer Acknowledgement
Mechanism for consumers to confirm successful delivery and processing
of messages
Consume
No-Ack Consume without acknowledge
Ack Acknowledge message
Multi-Ack Acknowledge multiple messages at once
Reject
Reject Reject individual, delivered message
Nack Reject messages in bulk
Increasing levels of message reliability
make a performance trade-off
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Clustering with RabbitMQ
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Apps and RabbitMQ on Pivotal Platform
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Apache Kafka
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Distributed & partitioned commit log with messaging semantics
Distributed real-time streaming platform
What is Kafka?
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Topic and Partitions Basics
Partition 0
Partition 1
Topic is divided in partitions, each partition is essentially a log file
Messages are immutable
Publisher can only append to the partition
All reads are sequential
Ordering guarantees only in a partition
Partitions can have replicas for HA
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Log & Real-time*, How’s That Possible?
Extremely smart utilization of OS page cache →
broker writes to file system
OS actually writes to memory, which is flushed to disk later
disk IOPS used primarily (async & bulk) writes
broker effectively reads from memory
Zero copy send files → kernel copies the data directly from the disk file to
the socket, without going through the application
* When evil scenarios are avoided :)
In-memory
performance,
minus overheads
of Java Heap
Sequential I/O as opposed to random → huge benefits for disk
performance
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Broker A
File System
In-memory Cache
Producer
1 - Send message
2
3
4
Replicas: 2
File System
In-memory Cache
Broker B
a
b
c
5 - Receive ACK
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Broker A
File System
In-memory Cache
Consumer
2
File System
In-memory Cache
Broker B4
1
Socket
Buffer
NIC
Buffer
3
5
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Log & Real-time*, How’s That Possible?
Extremely smart utilization of OS page cache →
broker writes to file system
OS actually writes to memory, which is flushed to disk later
disk IOPS used primarily (async & bulk) writes
broker effectively reads from memory
Zero copy send files → kernel copies the data directly from the disk file to
the socket, without going through the application
* When evil scenarios are avoided :)
In-memory
performance,
minus overheads
of Java Heap
Sequential I/O as opposed to random → huge benefits for disk
performance
Partitions, horizontally scalable brokers → parallelism
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Tips to efficiently use Kafka
● Use ACK = All if you love your data
● Separate topics based on need of parallelism
● Producer efficiency
○ Optimal batch size that fills up fast so that you good mix of throughput and latency
○ Linger of 5ms is a usually a good thumb rule
○ Increase batch size for higher throughput
○ Lower linger for lower latency
● If you have large files to send consider following options
○ Put files on shared location and send location of the files on kafka
○ Break down file to right size and use keys to ensure ordered processing
● Tips on using keys
○ Setting Key=Null gives best performance and balanced partitions across cluster
○ Explore possibility of leveraging downstream stores to establish ordering
○ Use keys only if you need ordered messaging in real-time or joins across different
● A lot of Kafka’s performance depends availability of page cache and GC overhead so monitor these
two parameters with extra care
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
What can cause adverse impact on Kafka
●
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Apps and Kafka on Pivotal Platform
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Design Considerations
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Define Service Goals
Throughput
Latency
Durability
Availability
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Throughput is important
However
It is meaningless in isolation
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Throughput Considerations
What are the requirements/constraints of your application and infrastructure?
- What delivery guarantees do you need for your data from producer/consumer?
- Do you need replay?
- Will your messages have keys?
- Will your partitions stay balanced or become unbalanced?
- How can you optimize batch size by thinking about bytes/sec, messages/sec and
payload size?
- How will your requirements evolve over time?
- What will be the effect of serialization/deserialization? Hint 💡: Throughput will be much
lower than plain Byte[]
Source: https://www.infoq.com/presentations/spring-xd-stream-processing/
by S Maldini, G Renfro and D Turanski
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Design Considerations
● Assume infrastructure failure will happen
○ What happens when a node goes down, a rack or AZ goes down? What happens
when there is a network split across racks or AZs?
● Can you afford to lose a few messages? How many?
● Is ordered processing important?
● What will the state of system be if app processes duplicate messages?
● Despite broker guarantees always plan for idempotency in your consumer code.
○ What happens when a message is processed and saved in DB but ACK fails? What
happens when deserialization fails?
● Payload schema, will it evolve over time?
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Understand Tradeoffs, No Free Lunch!
Smart Broker vs Dumb Broker
Throughput vs Ordering
Throughput vs Durability
Throughput vs Exactly Once ⚠
Broker Features vs Your Actual Business Needs
And
Cost of License & Operations vs Your Actual Business Needs
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
● Kafka Broker optimises for:
■ Very high throughput needs
■ Decoupled producer and
consumer applications to evolve
their data format independently
■ Native stateful stream processing
■ Multiple consumer groups per
topic
■ Replay
1
2
1

Where each shines
● RabbitMQ Broker optimises for:
■ Smart broker with advanced
content based routing
■ Competing consumers
■ Cross-protocol and language
support
■ Self service experience for
developers on PCF
■ Easy to manage
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
TEMPLATE THEME SLIDES
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Comparison
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Throughput Considerations
● Verify the throughput based your app requirements & infrastructure.
● Have you tested throughput with Serialization/Deserialization?
○ Hint 💡: It will be much lower than plain Byte[]
● Are partitions well balanced or largely unbalanced? Do messages have keys?
● Are there lagging consumers? Is replay a business need?
● What are the delivery guarantee requirements on producer/consumer?
● Measure throughput in bytes/sec vs messages/sec
● Consider bytes/sec, messages/sec and payload size to optimize batch size
● Will throughput requirement increase over time, what does it look like 2 years, 4 years
from now?
Source: https://www.infoq.com/presentations/spring-xd-stream-processing/
by S Maldini, G Renfro and D Turanski
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
1
2
5

Use cases
- Point to point microservice based architectures
- Pub-Sub microservices
- Real time analytics
- SQL table changes as events
- ETL
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Binder Abstraction
● Provides a programing API that removes all
dependencies from messaging vendors
● Same code regardless of messaging broker
Available binders
● RabbitMQ
● Kafka
● Gemfire
● IBM MQ
● JMS
● Custom binders with the Binder SPI
Spring Cloud Stream
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Stream
● Abstraction over protocol
● Abstraction over messaging
vendor
● Same code regardless of
messaging broker
Spring Cloud Abstractions for RabbitMQ & Kafka
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
1. Create a Sink interface
2. Declare an a method
returning a MessageChannel
3. Annotate the method with
@Input and give a name to
the queue to be notified with
Spring Cloud Stream Programming Model - Consumer
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
1. Declare a Service Bean
2. Annotate a handler method
with @StreamListener
3. Provide the queue name to
the StreamListener
Spring Cloud Stream Programming Model - Consumer
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Stream Programming Model - Consumer
1. Activate the binding of Sink
with @EnableBinding
2. Bootstrap the application like
a regular Spring Boot
Application
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Stream Programming Model - Consumer
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Stream Programming Model - Producer
1. Create a Source interface
2. Declare an a method
returning a MessageChannel
3. Annotate the method with
@Output and give a name to
the queue notify
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
1. Declare a Service Bean
2. Inject the Source that Spring
Cloud Stream will Auto
Configure
3. Use the source to produce
messages
Spring Cloud Stream Programming Model - Producer
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Cloud Stream Programming Model - Producer
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Learn More: RabbitMQ Patterns Simulator
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
1
3
6

How does Kafka work: Topics and Partitions
Producers
Message
Consumers
Partitions
Topic
0 1 2 3 4 5 ... n
0 1 ... z
0 1 2 3 ... x
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
1
3
7

Clusters in Kafka
Broker
Partitions
0 1 2 3
.
.
.
x
Broker
Partitions
0 1 2 3 4 5
.
.
.
n
0 1
.
.
.
z
0 1 2 3
.
.
.
x
Broker
Partitions
0 1 2 3 4 5
.
.
.
n
0 1
.
.
.
z
0 1 2 3
.
.
.
x
Broker
Partitions
0 1 2 3 4 5
.
.
.
n
0 1 2 3
.
.
.
x
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
STOP! Download Fonts Now
PLEASE INSTALL PROXIMA NOVA FONTS BEFORE CREATING YOUR PRESENTATION
Download: https://brandfolder.com/pivotal/springone-platform
Guest Password: keepitsimple
Instructions on how to install fonts:
http://www.fontspring.com/support/installing/how-do-i-install-fonts-on-my-mac
http://www.fontspring.com/support/installing/how-do-i-install-fonts-on-my-windows-pc
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Safe Harbor Statement
The following is intended to outline the general direction of Pivotal's offerings. It is intended for information
purposes only and may not be incorporated into any contract. Any information regarding pre-release of
Pivotal offerings, future updates or other planned modifications is subject to ongoing evaluation by Pivotal
and is subject to change. This information is provided without warranty or any kind, express or implied, and
is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making
purchasing decisions regarding Pivotal's offerings. These purchasing decisions should only be based on
features currently available. The development, release, and timing of any features or functionality described
for Pivotal's offerings in this presentation remain at the sole discretion of Pivotal. Pivotal has no obligation to
update forward looking information in this presentation.
If you are a Pivotal employee and your talk contains forward facing information,
please include this slide at the beginning or conclusion of the presentation.
Remove this text box before presenting.
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Slide Templates
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Body Slide — Light Background
All body text is Proxima Nova Regular
• Subhead
• Level Two
• Level Three
• Level Four
1
4
1

Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Body Slide — Dark Background
All body text is Proxima Nova Regular
• Subhead
• Level Two
• Level Three
• Level Four
1
4
2
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
14
3

// This is Roboto Mono: 42pt or higher please
public class TransferServiceImpl implements TransferService {
public TransferServiceImpl(AccountRepository ar) {
this.accountRepository = ar;
}
…
}
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
14
4
// This is Roboto Mono: 42pt or higher please
public class TransferServiceImpl implements TransferService {
public TransferServiceImpl(AccountRepository ar) {
this.accountRepository = ar;
}
…
}
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Design Assets
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Pivotal Product Logo Library
One-color versions
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Logo and Project Icons
Spring
Framework
Spring
Security
Spring
Data
Spring
Batch
Spring
Integration
Project
Reactor
Spring
AMQP
Spring
Hateoas
Spring
Mobile
Spring
Android
Spring
Social
Spring
Web Services
Spring
Web Flow
Spring
XD
Spring
Boot
Spring
LDAP
Spring Tool
Suite
Spring Cloud
Data Flow
Spring
Kafka
Spring
Cloud
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Icon Library
Router Team Metrics Service Broker Server Permissions Database
Cloud Mobile Workstation Browser Laptop IoT Security
CLI User 1 User 2 User 3 Alert
Star Deploy/Ship
Agile Container Microservice Monolith Application
File / Log
Checklist
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Icon Library
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Event Logos
On dark
Horizontal Vertical
On light
On mint
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Looking for other logos?
Visit our BrandFolder >
(pw: keepitsimple)
There you’ll find all our:
• Product Logos
• OSS Logos
• PCF Service Icons
• Brand Fonts & Colors
• And more!
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Brand Colors
SpringOne Platform 2019
Primary Colors
Spring
Brand Color
Pivotal
Brand Color
#1ab9a5ff
#13377dff
#ffffffff
#6db33fff #1ab9a5ff
#00253eff
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Sample Table
15
3
2007 2008 2009 2010
Category 1 2.4 6.4 4.1 6.6
Category 2 8.2 4.5 3.2 3.8
Category 3 4.6 3.2 1.9 9.6
Category 4 6.7 3.3 3.4 2.2
Category 5 4.3 5.6 7.1 3.4
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Sample Table
15
4
2007 2008 2009 2010
Category 1 2.4 6.4 4.1 6.6
Category 2 8.2 4.5 3.2 3.8
Category 3 4.6 3.2 1.9 9.6
Category 4 6.7 3.3 3.4 2.2
Category 5 4.3 5.6 7.1 3.4
Stay Connected.
<Your CTA>
<Related Session>
<Related Session>
#springone@s1p

More Related Content

What's hot

apidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ngapidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ngapidays
 
Implementing API Facade using WSO2 API Management Platform
Implementing API Facade using WSO2 API Management PlatformImplementing API Facade using WSO2 API Management Platform
Implementing API Facade using WSO2 API Management PlatformWSO2
 
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...apidays
 
AWS Serverless Webinar- Unleash Innovation & Build Modern Application
AWS Serverless Webinar- Unleash Innovation & Build Modern ApplicationAWS Serverless Webinar- Unleash Innovation & Build Modern Application
AWS Serverless Webinar- Unleash Innovation & Build Modern ApplicationAmazon Web Services
 
Node summit workshop
Node summit workshopNode summit workshop
Node summit workshopShubhra Kar
 
[CPT DevOps Meetup] Developing Modern Applications in the Cloud
[CPT DevOps Meetup] Developing Modern Applications in the Cloud[CPT DevOps Meetup] Developing Modern Applications in the Cloud
[CPT DevOps Meetup] Developing Modern Applications in the CloudCobus Bernard
 
What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...Kim Clark
 
Webcast: API-Centric Architecture for Building Context-Aware Apps
Webcast: API-Centric Architecture for Building Context-Aware AppsWebcast: API-Centric Architecture for Building Context-Aware Apps
Webcast: API-Centric Architecture for Building Context-Aware AppsApigee | Google Cloud
 
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用Amazon Web Services
 
Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...
Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...
Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...confluent
 
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-PrometheusDeep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-PrometheusAmazon Web Services
 
Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...
Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...
Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...confluent
 
AWS Accra Meetup - Developing Modern Applications in the Cloud
AWS Accra Meetup - Developing Modern Applications in the CloudAWS Accra Meetup - Developing Modern Applications in the Cloud
AWS Accra Meetup - Developing Modern Applications in the CloudCobus Bernard
 
API as a Product - SXSW 2012
API as a Product - SXSW 2012API as a Product - SXSW 2012
API as a Product - SXSW 2012Delyn Simons
 
Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...
Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...
Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...Amazon Web Services
 
Building-Modern-Distributed-Applications
Building-Modern-Distributed-ApplicationsBuilding-Modern-Distributed-Applications
Building-Modern-Distributed-ApplicationsAmazon Web Services
 
Takeaways from API Security Breaches Webinar
Takeaways from API Security Breaches WebinarTakeaways from API Security Breaches Webinar
Takeaways from API Security Breaches WebinarCA API Management
 
CICDforModernApplications-Oslo.pdf
CICDforModernApplications-Oslo.pdfCICDforModernApplications-Oslo.pdf
CICDforModernApplications-Oslo.pdfAmazon Web Services
 
Essential capabilities behind Microservices
Essential capabilities behind MicroservicesEssential capabilities behind Microservices
Essential capabilities behind MicroservicesAmazon Web Services
 

What's hot (20)

apidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ngapidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ng
 
Implementing API Facade using WSO2 API Management Platform
Implementing API Facade using WSO2 API Management PlatformImplementing API Facade using WSO2 API Management Platform
Implementing API Facade using WSO2 API Management Platform
 
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...
APIdays Barcelona 2019 - How a Cloud native Architecture helps to drive Busin...
 
AWS Serverless Webinar- Unleash Innovation & Build Modern Application
AWS Serverless Webinar- Unleash Innovation & Build Modern ApplicationAWS Serverless Webinar- Unleash Innovation & Build Modern Application
AWS Serverless Webinar- Unleash Innovation & Build Modern Application
 
Node summit workshop
Node summit workshopNode summit workshop
Node summit workshop
 
[CPT DevOps Meetup] Developing Modern Applications in the Cloud
[CPT DevOps Meetup] Developing Modern Applications in the Cloud[CPT DevOps Meetup] Developing Modern Applications in the Cloud
[CPT DevOps Meetup] Developing Modern Applications in the Cloud
 
What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...
 
Webcast: API-Centric Architecture for Building Context-Aware Apps
Webcast: API-Centric Architecture for Building Context-Aware AppsWebcast: API-Centric Architecture for Building Context-Aware Apps
Webcast: API-Centric Architecture for Building Context-Aware Apps
 
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
 
Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...
Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...
Not so FaaS, Streaming ML with Kafka! (Praveen Hirsave, VRBO) Kafka Summit Lo...
 
Zuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne PlatformZuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne Platform
 
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-PrometheusDeep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
 
Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...
Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...
Fast Kafka Apps! (Edoardo Comar and Mickael Maison, IBM) Kafka Summit London ...
 
AWS Accra Meetup - Developing Modern Applications in the Cloud
AWS Accra Meetup - Developing Modern Applications in the CloudAWS Accra Meetup - Developing Modern Applications in the Cloud
AWS Accra Meetup - Developing Modern Applications in the Cloud
 
API as a Product - SXSW 2012
API as a Product - SXSW 2012API as a Product - SXSW 2012
API as a Product - SXSW 2012
 
Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...
Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...
Operating Your Serverless API in Production at Scale - SRV217 - Chicago AWS S...
 
Building-Modern-Distributed-Applications
Building-Modern-Distributed-ApplicationsBuilding-Modern-Distributed-Applications
Building-Modern-Distributed-Applications
 
Takeaways from API Security Breaches Webinar
Takeaways from API Security Breaches WebinarTakeaways from API Security Breaches Webinar
Takeaways from API Security Breaches Webinar
 
CICDforModernApplications-Oslo.pdf
CICDforModernApplications-Oslo.pdfCICDforModernApplications-Oslo.pdf
CICDforModernApplications-Oslo.pdf
 
Essential capabilities behind Microservices
Essential capabilities behind MicroservicesEssential capabilities behind Microservices
Essential capabilities behind Microservices
 

Similar to Building the Pivotal RabbitMQ for Kubernetes Beta

Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...
Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...
Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...VMware Tanzu
 
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...VMware Tanzu
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaJoe Stein
 
How to Build More Secure Service Brokers
How to Build More Secure Service BrokersHow to Build More Secure Service Brokers
How to Build More Secure Service BrokersVMware Tanzu
 
Connecting All Abstractions with Istio
Connecting All Abstractions with IstioConnecting All Abstractions with Istio
Connecting All Abstractions with IstioVMware Tanzu
 
SDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and ConcourseSDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and ConcourseVMware Tanzu
 
riffing on Knative - Scott Andrews
riffing on Knative - Scott Andrewsriffing on Knative - Scott Andrews
riffing on Knative - Scott AndrewsVMware Tanzu
 
Cassandra and DataStax Enterprise on PCF
Cassandra and DataStax Enterprise on PCFCassandra and DataStax Enterprise on PCF
Cassandra and DataStax Enterprise on PCFVMware Tanzu
 
Containers Were Never Your End State
Containers Were Never Your End StateContainers Were Never Your End State
Containers Were Never Your End StateVMware Tanzu
 
Policy Enforcement on Kubernetes with Open Policy Agent
Policy Enforcement on Kubernetes with Open Policy AgentPolicy Enforcement on Kubernetes with Open Policy Agent
Policy Enforcement on Kubernetes with Open Policy AgentVMware Tanzu
 
.NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ...
.NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ....NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ...
.NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ...VMware Tanzu
 
It’s a Multi-Cloud World, But What About The Data?
It’s a Multi-Cloud World, But What About The Data?It’s a Multi-Cloud World, But What About The Data?
It’s a Multi-Cloud World, But What About The Data?VMware Tanzu
 
Virtual Meetup Sweden - Reacting to an event driven world
Virtual Meetup Sweden - Reacting to an event driven worldVirtual Meetup Sweden - Reacting to an event driven world
Virtual Meetup Sweden - Reacting to an event driven worldGrace Jansen
 
Extending the Platform
Extending the PlatformExtending the Platform
Extending the PlatformVMware Tanzu
 
Extending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryExtending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryKenny Bastani
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsMatt Stine
 
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...VMware Tanzu
 
Square Pegs, Square Holes: CI/CD That Fits
Square Pegs, Square Holes: CI/CD That FitsSquare Pegs, Square Holes: CI/CD That Fits
Square Pegs, Square Holes: CI/CD That FitsVMware Tanzu
 
Debugging Serverless for Cloud
Debugging Serverless for CloudDebugging Serverless for Cloud
Debugging Serverless for CloudVMware Tanzu
 

Similar to Building the Pivotal RabbitMQ for Kubernetes Beta (20)

Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...
Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...
Cloud Foundry Services on PKS with No Extra Code, "We Bosh So You Don’t Have ...
 
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
 
Developing Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache KafkaDeveloping Real-Time Data Pipelines with Apache Kafka
Developing Real-Time Data Pipelines with Apache Kafka
 
How to Build More Secure Service Brokers
How to Build More Secure Service BrokersHow to Build More Secure Service Brokers
How to Build More Secure Service Brokers
 
Serverless Spring 오충현
Serverless Spring 오충현Serverless Spring 오충현
Serverless Spring 오충현
 
Connecting All Abstractions with Istio
Connecting All Abstractions with IstioConnecting All Abstractions with Istio
Connecting All Abstractions with Istio
 
SDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and ConcourseSDLC for Pivotal Platform powered by Spring Initializr and Concourse
SDLC for Pivotal Platform powered by Spring Initializr and Concourse
 
riffing on Knative - Scott Andrews
riffing on Knative - Scott Andrewsriffing on Knative - Scott Andrews
riffing on Knative - Scott Andrews
 
Cassandra and DataStax Enterprise on PCF
Cassandra and DataStax Enterprise on PCFCassandra and DataStax Enterprise on PCF
Cassandra and DataStax Enterprise on PCF
 
Containers Were Never Your End State
Containers Were Never Your End StateContainers Were Never Your End State
Containers Were Never Your End State
 
Policy Enforcement on Kubernetes with Open Policy Agent
Policy Enforcement on Kubernetes with Open Policy AgentPolicy Enforcement on Kubernetes with Open Policy Agent
Policy Enforcement on Kubernetes with Open Policy Agent
 
.NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ...
.NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ....NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ...
.NET and Kubernetes: Bringing Legacy .NET Into the Modern World with Pivotal ...
 
It’s a Multi-Cloud World, But What About The Data?
It’s a Multi-Cloud World, But What About The Data?It’s a Multi-Cloud World, But What About The Data?
It’s a Multi-Cloud World, But What About The Data?
 
Virtual Meetup Sweden - Reacting to an event driven world
Virtual Meetup Sweden - Reacting to an event driven worldVirtual Meetup Sweden - Reacting to an event driven world
Virtual Meetup Sweden - Reacting to an event driven world
 
Extending the Platform
Extending the PlatformExtending the Platform
Extending the Platform
 
Extending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryExtending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud Foundry
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
 
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
 
Square Pegs, Square Holes: CI/CD That Fits
Square Pegs, Square Holes: CI/CD That FitsSquare Pegs, Square Holes: CI/CD That Fits
Square Pegs, Square Holes: CI/CD That Fits
 
Debugging Serverless for Cloud
Debugging Serverless for CloudDebugging Serverless for Cloud
Debugging Serverless for Cloud
 

More from VMware Tanzu

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItVMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleVMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductVMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And BeyondVMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptxVMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchVMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishVMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - FrenchVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootVMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerVMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeVMware Tanzu
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsVMware Tanzu
 

More from VMware Tanzu (20)

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Recently uploaded (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Building the Pivotal RabbitMQ for Kubernetes Beta

  • 1. RabbitMQ & Kafka October 7–10, 2019 Austin Convention Center Madhav Sathe & Zoe Vance
  • 2. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Introduction 2  Madhav Sathe Platform Architect @madhav_sathe Zoe Vance Product Lead zvance@pivotal.io
  • 3. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Benefits When to Use Each Challenges RabbitMQ Building Blocks Developer Experiences Live Coding Kafka Building Blocks Tips Agenda 3 
  • 4. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Benefits
  • 5. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ What is Rabbit General purpose message broker, based around message queues, designed with a smart broker / passive consumer model
  • 6. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Why RabbitMQ
  • 7. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Plugins Tier 1 (19) Community - Routing - Auth - Mgmt - Clustering - Logging - Queues - Protocols Why RabbitMQ Client Libraries Java (4) Spring (3) .Net (6) Ruby (7) Python (4) PHP (7) JavaScript & Node (4) Rust (2) Objective-C & Scala (1) Other JVM (11) C & C++ (4) Go (3)… find more at rmq docs
  • 8. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Why RabbitMQ
  • 9. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 9  Why RabbitMQ RabbitMQ Broker Exchange(s) Bindings Queues
  • 10. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Easy to scale by adding/removing competing consumers on a single queue Can be configured for consistency, high availability, low latency, high throughput Cluster rolling upgrades via feature flags Easy to get started Supports strict ordering Wider use cases e.g., event driven microservices, RPC, ETL (with SCDF), enterprise message bus, pub-sub messaging, real-time analytics (with Reactor and RabbitMQ Reactive API) Why RabbitMQ
  • 11. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Distributed & partitioned commit log with messaging semantics Distributed real-time streaming platform What is Kafka?
  • 12. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Why Kafka Very high throughput with data guarantees Massive scale Ability to replay events De-facto standard for streaming platform Ability to plug-n-play consumer groups on a topic Supports strict ordering Replace complex data architectures Broad ecosystem Wider use cases - pub-sub messaging, events driven microservices, logs store, streaming, event sourcing, CDC, enterprise data pipelines
  • 13. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Why Kafka Messaging API Apps Streaming API Apps Connect Sink Connect Source
  • 14. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ When to use each
  • 15. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ If you don’t have specific Kafka requirements, then RabbitMQ gives you greater flexibility, can meet high throughput and real-time event-processing needs and has lower cost of operations Evolving application requirements Decoupled producer and consumers (using exchanges) Consumers independently bring their own queue that binds to exchanges Consuming applications don’t need to process messages that aren’t relevant When to use RabbitMQ Over Kafka
  • 16. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ When to use Kafka Over RabbitMQ Streaming platform Extremely high throughput Joining multiple streams or streams and tables to enrich the data Scale (typically beyond 5 brokers) Replay
  • 17. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Challenges
  • 18. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ RabbitMQ Operational complexity in resolving network partitions Queues are single-threaded Scaling brokers >3 becomes complicated and can have negative performance impacts No events replay Does not natively support stateful streaming use cases (but can do so with Reactor + RabbitMQ Reactive API with external store such as Redis)
  • 19. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Challenges in Kafka No free lunch - operational complexity Requires a separate Zookeeper cluster Requires meticulous planning to select partition count Storage management overheads Careful coordination needed between teams writing consumer groups and producers No out of box management & monitoring console Streaming API support restricted mainly to Java No out of box solution for upgrade*
  • 20. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Let us a play a little game Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20 consumers. So we define topic “Bar” with 20 partitions. And YOU are a Kafka architect 😍 https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
  • 21. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Let us a play a little game Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20 consumers. So we define topic “Bar” with 20 partitions. At some later point “appB” too has a requirement to stream events from “Bar”. But “appB” already streams events from topic “Foo”. “appB” actually needs to join the events from “Foo” and “Bar”. However, “Foo” has only 10 partitions. And YOU are a Kafka architect 😕 https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
  • 22. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Let us a play a little game Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20 consumers. So we define topic “Bar” with 20 partitions. At some later point “appB” too has a requirement to stream events from “Bar”. But “appB” already streams events from topic “Foo”. “appB” actually needs to join the events from “Foo” and “Bar”. However, “Foo” has only 10 partitions. Now “appC” is interested in events from “Bar”. However, “appC” wants ordering across the topic, so “appC” really needs “Bar” to have only one partition. And YOU are a Kafka architect 😢 https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
  • 23. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Let us a play a little game Let us say, we are introducing topic “Bar” for “appA” that requires parallelism of 20 consumers. So we define topic “Bar” with 20 partitions. At some later point “appB” too has a requirement to stream events from “Bar”. But “appB” already streams events from topic “Foo”. “appB” actually needs to join the events from “Foo” and “Bar”. However, “Foo” has only 10 partitions. Now “appC” is interested in events from “Bar”. However, “appC” wants ordering across the topic, so “appC” really needs “Bar” to have only one partition. Both “Foo” and “Bar” events are becoming popular, so “appD” doesn’t want to be left behind and wants both events. However, “appD” needs ordering guarantee across the all events. And YOU are a Kafka architect ……….. 😼 🤟 https://kafka.apache.org/20/documentation/streams/developer-guide/dsl-api.html#join-co-partitioning-requirements
  • 24. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Credit: Jack Vanlightly @vanlightly
  • 25. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Credit: Jack Vanlightly @vanlightly
  • 26. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Building Blocks of RabbitMQ
  • 27. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 2 7  Messaging in RabbitMQ BrokerProducers Message Exchange(s) Bindings Queues Consumers
  • 28. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Direct Exchange Direct exchange delivers messages to queues when the message routing key exactly matches the queue’s binding key. images.crop cropper Routing key resizer images.resize
  • 29. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Topic Exchange Topic exchange delivers messages to queues when the wildcard matches between the routing key and the queue’s binding key. *.*.error errors Routing key geos eu.de.*
  • 30. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Fanout Exchange Fanout exchange delivers messages to all queues regardless of routing keys or pattern matching.
  • 31. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Clustering with RabbitMQ
  • 32. Autoheal partition handling strategy optimizes for AP
  • 33. Pause Minority partition handling strategy optimizes for CP
  • 36. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ RabbitMQ Roadmap RabbitMQ OSS RMQ for Pivotal Platform RMQ on Kubernetes RabbitMQ 3.8 just out! - Quorum queues using RAFT to provide persistent and fault tolerant messaging systems - Mixed-version rolling upgrades - Enhanced observability (new metrics and built in plugin with visualizations in grafana) - OAuth 2.0 Support In Closed Beta Goal is to provide great developer and day-2 operational experience (automated reliable upgrades, problem resolution and actionable observability) RabbitMQ for PCF 1.18 just out! - Support for off-platform applications instances to on-platform RabbitMQ instances PAS PKSDIY
  • 37. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ RabbitMQ Developer Experience
  • 38. Spring Cloud Stream ● Abstraction over protocol ● Abstraction over messaging vendor ● Same code regardless of messaging broker Spring AMQP ● Provides a "template" as a high-level abstraction for sending and receiving messages. ● Support for Message-driven POJOs with a "listener container". ● Similar to the JMS support in the Spring Framework. RabbitMQ AMQP Client ● Low level API to RabbitMQ Options for Java developers Reactor RabbitMQ ● Reactive API for RabbitMQ based on Reactor and RMQ Java Client ● Functional APIs enables messages to be published/consumed with non-blocking back-pressure and very low overheads
  • 39. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Kafka Developer Experience
  • 40. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Integration Spring for Apache Kafka Spring Cloud Stream Binder for Kafka Spring Cloud Stream Kafka Streams Binder KStream, KTable & GlobalKTable Spring Cloud Stream Input & Output Message Channels Spring Cloud Kafka Stream Spring Cloud Stream Microservice Spring Cloud Stream Kafka Streams Microservice Binder
  • 41. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Demo
  • 42. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ JustRide: Driver Behavior Driven Car Insurance Car Events Violations Score Processor Customer Score Caches Customer Info Customer Scores API vSphere Azure & Azure Stack Google CloudAWS Dashboard Pivotal Platform Speed Check Processor Customer Score Customer Score Sink
  • 43. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Speed Check Processor (SCSt + Kstream) For the demo Car Events Violations Car Events Load Generator (SCSt) Score Processor (SCSt + Kstream) Main business logic application.yaml to define input and output bindings with topics as destinations
  • 44. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Model for the demo CarEvent: - uuid - latitude - longitude - speed Simple JSON friendly Pojo Message Key: uuid
  • 45. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Model for the demo CarEvent: - uuid - latitude - longitude - speed Simple JSON friendly Pojo Message Key: uuid ViolationEvent: - uuid - List<CarEvent> - violationCount - start - end State Management: - new() - ‘start’ timestamp, new ArrayList<CarEvent> - addCarEvent() - check speed, add to list, increase violationCount - closeWindow() - ‘end’ timestamp JSON friendly “self aware” data model Message Key: uuid Speed Check Processor (SCSt + Kstream)
  • 46. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Building Blocks Kafka
  • 47. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Sequential I/O as opposed to random → huge benefits for disk performance Kafka is Log & Real-time*, How’s That Possible? Extremely smart utilization of OS page cache → achieve read and writes without disk IOPS in call path Zero copy send files → kernel copies the data directly from the disk file to the socket, without going through the application * When evil scenarios are avoided :) In-memory performance
  • 48. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Broker A File System In-memory Cache Producer 1 - Send message 2 3 4 5 - Receive ACK ACK = 1 https://www.confluent.io/kafka-summit-sf18/kafka-on-zfs
  • 49. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Broker A File System In-memory Cache Consumer 2 4 1 Socket Buffer NIC Buffer 3 5 https://medium.com/@sunny_81705/what-makes-apache-kafka-so-fast-71b477dcbf0
  • 50. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Broker and Cluster Broker A Controller - Monitoring other brokers - Broker shutdown - Election of partition leaders - Tell brokers about partition leaders Broker B Broker C Zookeeper Cluster /controller → Broker A /topic/A/0 → Broker A /topic/A/1 → Broker B /topic/A/2 → Broker C
  • 51. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Topic and Partitions Basics Partition 0 Partition 1 Topic is divided in partitions, each partition is essentially a log file Partitions can have replicas for HA One of replicas is chosen as a Leader All reads and writes happen only on Leader Publisher can only append to the partition Ordering guarantees only in a partition Topic
  • 52. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Broker B Partition: 0 Leader Partition: 1 Follower Partition: 0 Follower Partition: 1 Leader Broker A Producers Producers Producer API Cluster: 2 brokers, Topic: trades, Partitions: 2, Replicas: 2 Messages without a key are shared across partitions in round robin fashion Hash based partition selection Messages with same key go to same partition Batch Batch
  • 53. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Partition and Consumer Offset 0 1 2 3 4 5 6 7 Producers/Publishers Alana’s Offset Cody’s Offset Zoe’s Offset P0 P0 P0 P0 1 3 6 Partition offset map topic Just reset your offset to re-play the messages
  • 54. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Kafka Streams Cluster Topic: trades Kstream Topic: company profiles Ktable Topic: recommendations Kstream Kafka managed topic Kafka Streaming Microservice Fault tolerant state store
  • 55. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cluster Partitions and Consumer Groups Topic: trades, Partition: 0 Topic: trades, Partition: 1 Consumer Group Consumer 1
  • 56. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cluster Partitions and Consumer Groups Topic: trades, Partition: 0 Topic: trades, Partition: 1 Consumer Group Consumer 1 Consumer 2
  • 57. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cluster Partitions and Consumer Groups Topic: trades, Partition: 0 Topic: trades, Partition: 1 Consumer Group Consumer 1 Consumer 2 Consumer 3
  • 58. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cluster Partitions and Consumer Groups Topic: trades, Partition: 0 Topic: trades, Partition: 1 Consumer Group Consumer 1 🔥Consumer 2
  • 59. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cluster Partitions and Consumer Groups Topic: trades, Partition: 0 Topic: trades, Partition: 1 Consumer Group Consumer 1 🔥Consumer 2
  • 60. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Tips for RabbitMQ
  • 61. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Tips to efficiently use RabbitMQ ● Overall ○ Clarify requirements of your application ○ Monitor RabbitMQ ○ Use wide range of RabbitMQ Resources ● Queues ○ Happy Rabbit is an Empty Rabbit - keep queues short ○ For performance, use in-memory, non-mirrored queues ○ For HA & data safety, use Quorum Queues ● Producer/Consumers ○ Use multiple consumers if consumers are slow or there are too many producers ○ If messages can’t be lost, use acknowledgments ○ For performance, use autoack ● Resources ○ Every connection, channel, queue costs memory & CPU; more there are and harder they work, more resources are required ○ For throughput, have as many queues as cores on the underlying nodes of a multi-core system ● Messages ○ For performance, keep messages in memory ○ If messages can’t be lost, ensure you use pre-fetch values with publisher confirms/consumer acks
  • 62. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Tips for Kafka
  • 63. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Tips to efficiently using Kafka ● Use ACK = All if you love your data, ACK = 1 for balance between reliability & latency ● Route “hot keys” to a different topic to avoid “hot partitions” ● Producer efficiency ○ Pick optimal batch size that fills up fast so that you good mix of throughput and latency ○ Linger of 5ms is a usually a good thumb rule ○ Increase batch size for higher throughput ○ Lower linger for lower latency ● If you have large files to send consider following options ○ Put files on shared location and send location of the files on kafka ○ Break down file to right size and use keys to ensure ordered processing ● Tips on using keys ○ Setting Key=Null gives best performance and balanced partitions across cluster ○ Explore possibility of leveraging downstream stores to establish ordering ○ Use keys only if you need ordered messaging in real-time or joins across different topics ● A lot of Kafka’s performance depends availability of page cache and GC overhead so monitor these two parameters with extra care
  • 64. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ ● Extremely large messages may block consumers if the consumer is not configured with adequate buffer size. If there are some large messages, consider using a separate topic ● Ad-hoc offset reset/replays while writes and other reads are going on ● ACK=All will have some impact on latency so plan the partitions accordingly ○ In-Sync replicas lagging behind, always watch your ISR list ● Watch out for disk IOPS during reads and writes ○ Less available memory for page caching forcing more disk IOPS ○ Vastly lagging consumers working at different speeds forcing disk IOPS ● Brokers running different versions within a cluster can performance issue ○ Few brokers running much faster or much slower than rest of the cluster ● Watch out for Zombie brokers in older Kafka versions ● Old Kafka client libraries (producer/consumer) may have adverse impact on throughput and latency ● Check rebalance of partitions if broker goes down, if you don’t throttle it then it can use up all your n/w bandwidth ● Restarting cluster with large number of partitions, leader election takes time ● If consumer crashes or unable to send heartbeats, the partition reassignment will take place, and during this time no consumer in the group can process any message Watch out! Things causing adverse impact in Kafka
  • 65. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Thanks to Jack Vanlightly Marcial Rosales Soby Chacko Sina Sajoodi Wayne Lund Timothy Dalsing Dan Carwin Gerhard Lazu Karl Nilsson Arnaud Cogoluegnes James Williams
  • 66. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Resources 3.8 Blog
  • 67. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Thank You!
  • 68. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Appendix
  • 69. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cluster Partitions and Consumer Groups Topic: trades, Partition: 0 Topic: trades, Partition: 1 Sink Consumer Groups Streaming, Joins, Aggregations, Windowing AI
  • 70. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ ● Running out of date software ● Opening/closing channels repeatedly ● Using lots of connections/channels (causes lots of overhead and is not performant) ● Long queues ● Large messages ● Configuring RabbitMQ for scenarios you don’t need e.g. using ‘ha-all’ when mirroring to a quorum is sufficient or using durable queues when non-durable queues work Watch out! Things causing adverse impact in RabbitMQ
  • 71. Cluster - Architecture Exchange routing_key1 routing_key2 routing_key3 … Queue1 Metadata Queue1 Contents Exchange routing_key1 routing_key2 routing_key3 … Queue1 Metadata Exchange routing_key1 routing_key2 routing_key3 … Queue1 Metadata
  • 72. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Broker B Partition: 0 Leader Partition: 1 Follower Partition: 0 Follower Partition: 1 Leader Broker A Partition Replicas and Brokers Cluster: 2 brokers, Topic: trades, Partitions: 2, Replicas: 2
  • 73. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Consistent Hashing Routing key ½ hash space Routes messages to specific queue based on the hash of the routing key or header. Enables order guarantees with multiple consumers ½ hash space
  • 74. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Connected Cars & Insurance Car Events Violations Score Processor Customer Score Caches Customer Info Customer Scores API vSphere Azure & Azure Stack Google CloudAWS Dashboard Pivotal Platform Speed Check Processor Customer Score Customer Score Sink
  • 75. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Speed Check Processor (SCSt + Kstream) For the demo Car Events Violations Car Events Load Generator (SCSt) Score Processor (SCSt + Kstream) Main business logic application.yaml to define SCSt input and output bindings for each of the components - 1. load generator, 2. speed check processor & 3. score processor
  • 76. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Model for the demo CarEvent: - uuid - latitude - longitude - speed Simple JSON friendly Pojo Message Key: uuid ViolationEvent: - uuid - List<CarEvent> - violationCount - start - end State Management: - new() - ‘start’ timestamp, new ArrayList<CarEvent> - addCarEvent() - check speed, add to list, increase violationCount - closeWindow() - ‘end’ timestamp JSON friendly “self aware” data model Message Key: uuid Speed Check Processor (SCSt + Kstream)
  • 77. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Live code SCSt + KStream - stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria
  • 78. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Double click on KStream stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria 1. Group By Key (car UUID) 2. Create tumbling window for 30 sec
  • 79. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Double click on KStream stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria 1. Group By Key (car UUID) 2. Create tumbling window for 30 sec 3. Perform stateful transformation using Aggregator (this is where we use self aware model) that creates a KTable for each Windowed<UUID> a. Initialize ViolationEvent (model decides what is required on initialization) b. Call aggregator in ViolationEvent for each CarEvent (model decides how to implement aggregation, this is where CarEvent is checked for overspeeding) c. Materialize the state (KTable) in a Kafka managed state store using SerDe
  • 80. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Double click on KStream stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria 1. Group By Key (car UUID) 2. Create tumbling window for 30 sec 3. Perform stateful transformation using Aggregator (this is where we use self aware model) that creates a KTable for each Windowed<UUID> a. Initialize ViolationEvent (model decides what is required on initialization) b. Call aggregator in ViolationEvent for each CarEvent (model decides how to implement aggregation, this is where CarEvent is checked for overspeeding) c. Materialize the state (KTable) in a Kafka managed state store using SerDe 4. Update the value, let ViolationEvent close the window (again, let the model decide how to manage itself)
  • 81. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Double click on KStream stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria 1. Group By Key (car UUID) 2. Create tumbling window for 30 sec 3. Perform stateful transformation using Aggregator (this is where we use self aware model) that creates a KTable for each Windowed<UUID> a. Initialize ViolationEvent (model decides what is required on initialization) b. Call aggregator in ViolationEvent for each CarEvent (model decides how to implement aggregation, this is where CarEvent is checked for overspeeding) c. Materialize the state (KTable) in a Kafka managed state store using SerDe 4. Update the value, let ViolationEvent close the window (again, let the model decide how to manage itself) 5. Convert the KTable to KStream
  • 82. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Double click on KStream stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria 1. Group By Key (car UUID) 2. Create tumbling window for 30 sec 3. Perform stateful transformation using Aggregator (this is where we use self aware model) that creates a KTable for each Windowed<UUID> a. Initialize ViolationEvent (model decides what is required on initialization) b. Call aggregator in ViolationEvent for each CarEvent (model decides how to implement aggregation, this is where CarEvent is checked for overspeeding) c. Materialize the state (KTable) in a Kafka managed state store using SerDe 4. Update the value, let ViolationEvent close the window (again, let the model decide how to manage itself) 5. Convert the KTable to KStream 6. Filter out the ViolationEvents that have less than “Threshold” violation occurrences in a window
  • 83. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Double click on KStream stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria 1. Group By Key (car UUID) 2. Create tumbling window for 30 sec 3. Perform stateful transformation using Aggregator (this is where we use self aware model) that creates a KTable for each Windowed<UUID> a. Initialize ViolationEvent (model decides what is required on initialization) b. Call aggregator in ViolationEvent for each CarEvent (model decides how to implement aggregation, this is where CarEvent is checked for overspeeding) c. Materialize the state (KTable) in a Kafka managed state store using SerDe 4. Update the value, let ViolationEvent close the window (again, let the model decide how to manage itself) 5. Convert the KTable to KStream 6. Filter out the ViolationEvents that have less than “Threshold” violation occurrences in a window 7. Map Windowed<Key> to Key for downstream apps
  • 84. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Double click on KStream stateful transformation logic Speed Check Processor (SCSt + Kstream) Main business logic Consume KStream of events from “car-events” topic, apply business logic using stateful transformations & send KStream of events to “violations” topic for cars that meet the criteria 1. Group By Key (car UUID) 2. Create tumbling window for 30 sec 3. Perform stateful transformation using Aggregator (this is where we use self aware model) that creates a KTable for each Windowed<UUID> a. Initialize ViolationEvent (model decides what is required on initialization) b. Call aggregator in ViolationEvent for each CarEvent (model decides how to implement aggregation, this is where CarEvent is checked for overspeeding) c. Materialize the state (KTable) in a Kafka managed state store using SerDe 4. Update the value, let ViolationEvent close the window (again, let the model decide how to manage itself) 5. Convert the KTable to KStream 6. Filter out the ViolationEvents that have less than “Threshold” violation occurrences in a window 7. Map Windowed<Key> to Key for downstream apps
  • 85. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ OLD SLIDES
  • 86. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Abstract When should I use RabbitMQ and when should I use Kafka? This is a question we're asked all the time on our team. In this talk, we'll walk through the different architecture and design of these two popular messaging tools. We'll also explain what those design decisions mean for performance, scaling, and different use cases.
  • 87. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Provide guidance on how to think about how these two powerful tools in your architectures. Goal 8 7 
  • 88. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ “Events First” as a core design principle
  • 89. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ AppA AppB❌ Dont tell what to do AppA AppB Events Share what happened via an event Let others figure out what to do with it AppC Later, more apps may be interested in these events, still nothing changes for app that generated events
  • 90. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Events driven systems are not new However The recent hyper growth is fueled by a shift from batch processing to real-time stream processing and the rise of digital economy
  • 91. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ ETL EAI Events Driven, (near) real-time Streaming Platform + Scale + Events Driven, Real-time Diversity
  • 92. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ RabbitMQ
  • 93. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Events first as a core principle RabbitMQ building blocks Apache Kafka building blocks Differences and Architectures Design Considerations Spring Boot 🧡 Kafka (live coding) Spring Boot 🧡 RMQ (live coding) Agenda 9 3 
  • 94. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ CG1 Topic Exchange A App - CG1 with SCSt, Binding = TopicA App - CG2 with SCSt, Binding = TopicACG2
  • 95. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 9 5  What is RabbitMQ ● Open-source project written in Erlang backed by Pivotal ● A general purpose message broker designed with a smart broker / passive consumer model ● Enables cross-language messaging with Advanced Message Queueing Protocol specification and support for range of additional protocols (STOMP, MQTT, HTTP, AMQP 1.0) ● A tool with wide and extendable support (many client libraries, many plugins)
  • 96. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 9 6  How does RabbitMQ work BrokerProducers Message Exchange(s) Bindings Queues Consumers
  • 97. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Exchanges and bindings are the routing instructions for message distribution. Bindings are the rules about which queues are relevant for the message. Exchanges and bindings Exchange Bindings
  • 98. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Direct Exchange Direct exchange delivers messages to queues when the message routing key exactly matches the queue’s binding key. images.crop cropper Routing key resizer images.resize
  • 99. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Topic Exchange Topic exchange delivers messages to queues when the wildcard matches between the routing key and the queue’s binding key. *.*.error errors Routing pattern geos eu.de.*
  • 100. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Fanout Exchange Fanout exchange delivers messages to all queues regardless of routing keys or pattern matching.
  • 101. Publisher Confirms Mechanism for producers to confirm successful handling by RabbitMQ. Publisher confirms will inform if a message is dropped (e.g., not routed to a queue) or if a message has been appended to the relevant queues or written to disk. Increasing levels of message reliability make a performance trade-off Broker Producer Message Exchange Bindings Queues Ack
  • 102. Consumer Acknowledgement Mechanism for consumers to confirm successful delivery and processing of messages Consume No-Ack Consume without acknowledge Ack Acknowledge message Multi-Ack Acknowledge multiple messages at once Reject Reject Reject individual, delivered message Nack Reject messages in bulk Increasing levels of message reliability make a performance trade-off
  • 103. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Clustering with RabbitMQ
  • 104. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Apps and RabbitMQ on Pivotal Platform
  • 105. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Apache Kafka
  • 106. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Distributed & partitioned commit log with messaging semantics Distributed real-time streaming platform What is Kafka?
  • 107. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Topic and Partitions Basics Partition 0 Partition 1 Topic is divided in partitions, each partition is essentially a log file Messages are immutable Publisher can only append to the partition All reads are sequential Ordering guarantees only in a partition Partitions can have replicas for HA
  • 108. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Log & Real-time*, How’s That Possible? Extremely smart utilization of OS page cache → broker writes to file system OS actually writes to memory, which is flushed to disk later disk IOPS used primarily (async & bulk) writes broker effectively reads from memory Zero copy send files → kernel copies the data directly from the disk file to the socket, without going through the application * When evil scenarios are avoided :) In-memory performance, minus overheads of Java Heap Sequential I/O as opposed to random → huge benefits for disk performance
  • 109. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Broker A File System In-memory Cache Producer 1 - Send message 2 3 4 Replicas: 2 File System In-memory Cache Broker B a b c 5 - Receive ACK
  • 110. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Broker A File System In-memory Cache Consumer 2 File System In-memory Cache Broker B4 1 Socket Buffer NIC Buffer 3 5
  • 111. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Log & Real-time*, How’s That Possible? Extremely smart utilization of OS page cache → broker writes to file system OS actually writes to memory, which is flushed to disk later disk IOPS used primarily (async & bulk) writes broker effectively reads from memory Zero copy send files → kernel copies the data directly from the disk file to the socket, without going through the application * When evil scenarios are avoided :) In-memory performance, minus overheads of Java Heap Sequential I/O as opposed to random → huge benefits for disk performance Partitions, horizontally scalable brokers → parallelism
  • 112. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Tips to efficiently use Kafka ● Use ACK = All if you love your data ● Separate topics based on need of parallelism ● Producer efficiency ○ Optimal batch size that fills up fast so that you good mix of throughput and latency ○ Linger of 5ms is a usually a good thumb rule ○ Increase batch size for higher throughput ○ Lower linger for lower latency ● If you have large files to send consider following options ○ Put files on shared location and send location of the files on kafka ○ Break down file to right size and use keys to ensure ordered processing ● Tips on using keys ○ Setting Key=Null gives best performance and balanced partitions across cluster ○ Explore possibility of leveraging downstream stores to establish ordering ○ Use keys only if you need ordered messaging in real-time or joins across different ● A lot of Kafka’s performance depends availability of page cache and GC overhead so monitor these two parameters with extra care
  • 113. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ What can cause adverse impact on Kafka ●
  • 114. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Apps and Kafka on Pivotal Platform
  • 115. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Design Considerations
  • 116. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Define Service Goals Throughput Latency Durability Availability
  • 117. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Throughput is important However It is meaningless in isolation
  • 118. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Throughput Considerations What are the requirements/constraints of your application and infrastructure? - What delivery guarantees do you need for your data from producer/consumer? - Do you need replay? - Will your messages have keys? - Will your partitions stay balanced or become unbalanced? - How can you optimize batch size by thinking about bytes/sec, messages/sec and payload size? - How will your requirements evolve over time? - What will be the effect of serialization/deserialization? Hint 💡: Throughput will be much lower than plain Byte[] Source: https://www.infoq.com/presentations/spring-xd-stream-processing/ by S Maldini, G Renfro and D Turanski
  • 119. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Design Considerations ● Assume infrastructure failure will happen ○ What happens when a node goes down, a rack or AZ goes down? What happens when there is a network split across racks or AZs? ● Can you afford to lose a few messages? How many? ● Is ordered processing important? ● What will the state of system be if app processes duplicate messages? ● Despite broker guarantees always plan for idempotency in your consumer code. ○ What happens when a message is processed and saved in DB but ACK fails? What happens when deserialization fails? ● Payload schema, will it evolve over time?
  • 120. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Understand Tradeoffs, No Free Lunch! Smart Broker vs Dumb Broker Throughput vs Ordering Throughput vs Durability Throughput vs Exactly Once ⚠ Broker Features vs Your Actual Business Needs And Cost of License & Operations vs Your Actual Business Needs
  • 121. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ ● Kafka Broker optimises for: ■ Very high throughput needs ■ Decoupled producer and consumer applications to evolve their data format independently ■ Native stateful stream processing ■ Multiple consumer groups per topic ■ Replay 1 2 1  Where each shines ● RabbitMQ Broker optimises for: ■ Smart broker with advanced content based routing ■ Competing consumers ■ Cross-protocol and language support ■ Self service experience for developers on PCF ■ Easy to manage
  • 122. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ TEMPLATE THEME SLIDES
  • 123. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Comparison
  • 124. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Throughput Considerations ● Verify the throughput based your app requirements & infrastructure. ● Have you tested throughput with Serialization/Deserialization? ○ Hint 💡: It will be much lower than plain Byte[] ● Are partitions well balanced or largely unbalanced? Do messages have keys? ● Are there lagging consumers? Is replay a business need? ● What are the delivery guarantee requirements on producer/consumer? ● Measure throughput in bytes/sec vs messages/sec ● Consider bytes/sec, messages/sec and payload size to optimize batch size ● Will throughput requirement increase over time, what does it look like 2 years, 4 years from now? Source: https://www.infoq.com/presentations/spring-xd-stream-processing/ by S Maldini, G Renfro and D Turanski
  • 125. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 1 2 5  Use cases - Point to point microservice based architectures - Pub-Sub microservices - Real time analytics - SQL table changes as events - ETL
  • 126. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ The Binder Abstraction ● Provides a programing API that removes all dependencies from messaging vendors ● Same code regardless of messaging broker Available binders ● RabbitMQ ● Kafka ● Gemfire ● IBM MQ ● JMS ● Custom binders with the Binder SPI Spring Cloud Stream
  • 127. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Stream ● Abstraction over protocol ● Abstraction over messaging vendor ● Same code regardless of messaging broker Spring Cloud Abstractions for RabbitMQ & Kafka
  • 128. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 1. Create a Sink interface 2. Declare an a method returning a MessageChannel 3. Annotate the method with @Input and give a name to the queue to be notified with Spring Cloud Stream Programming Model - Consumer
  • 129. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 1. Declare a Service Bean 2. Annotate a handler method with @StreamListener 3. Provide the queue name to the StreamListener Spring Cloud Stream Programming Model - Consumer
  • 130. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Stream Programming Model - Consumer 1. Activate the binding of Sink with @EnableBinding 2. Bootstrap the application like a regular Spring Boot Application
  • 131. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Stream Programming Model - Consumer
  • 132. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Stream Programming Model - Producer 1. Create a Source interface 2. Declare an a method returning a MessageChannel 3. Annotate the method with @Output and give a name to the queue notify
  • 133. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 1. Declare a Service Bean 2. Inject the Source that Spring Cloud Stream will Auto Configure 3. Use the source to produce messages Spring Cloud Stream Programming Model - Producer
  • 134. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Cloud Stream Programming Model - Producer
  • 135. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Learn More: RabbitMQ Patterns Simulator
  • 136. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 1 3 6  How does Kafka work: Topics and Partitions Producers Message Consumers Partitions Topic 0 1 2 3 4 5 ... n 0 1 ... z 0 1 2 3 ... x
  • 137. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 1 3 7  Clusters in Kafka Broker Partitions 0 1 2 3 . . . x Broker Partitions 0 1 2 3 4 5 . . . n 0 1 . . . z 0 1 2 3 . . . x Broker Partitions 0 1 2 3 4 5 . . . n 0 1 . . . z 0 1 2 3 . . . x Broker Partitions 0 1 2 3 4 5 . . . n 0 1 2 3 . . . x
  • 138. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ STOP! Download Fonts Now PLEASE INSTALL PROXIMA NOVA FONTS BEFORE CREATING YOUR PRESENTATION Download: https://brandfolder.com/pivotal/springone-platform Guest Password: keepitsimple Instructions on how to install fonts: http://www.fontspring.com/support/installing/how-do-i-install-fonts-on-my-mac http://www.fontspring.com/support/installing/how-do-i-install-fonts-on-my-windows-pc
  • 139. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Safe Harbor Statement The following is intended to outline the general direction of Pivotal's offerings. It is intended for information purposes only and may not be incorporated into any contract. Any information regarding pre-release of Pivotal offerings, future updates or other planned modifications is subject to ongoing evaluation by Pivotal and is subject to change. This information is provided without warranty or any kind, express or implied, and is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions regarding Pivotal's offerings. These purchasing decisions should only be based on features currently available. The development, release, and timing of any features or functionality described for Pivotal's offerings in this presentation remain at the sole discretion of Pivotal. Pivotal has no obligation to update forward looking information in this presentation. If you are a Pivotal employee and your talk contains forward facing information, please include this slide at the beginning or conclusion of the presentation. Remove this text box before presenting.
  • 140. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Slide Templates
  • 141. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Body Slide — Light Background All body text is Proxima Nova Regular • Subhead • Level Two • Level Three • Level Four 1 4 1 
  • 142. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Body Slide — Dark Background All body text is Proxima Nova Regular • Subhead • Level Two • Level Three • Level Four 1 4 2
  • 143. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 14 3  // This is Roboto Mono: 42pt or higher please public class TransferServiceImpl implements TransferService { public TransferServiceImpl(AccountRepository ar) { this.accountRepository = ar; } … }
  • 144. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 14 4 // This is Roboto Mono: 42pt or higher please public class TransferServiceImpl implements TransferService { public TransferServiceImpl(AccountRepository ar) { this.accountRepository = ar; } … }
  • 145. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Design Assets
  • 146. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Pivotal Product Logo Library One-color versions
  • 147. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Logo and Project Icons Spring Framework Spring Security Spring Data Spring Batch Spring Integration Project Reactor Spring AMQP Spring Hateoas Spring Mobile Spring Android Spring Social Spring Web Services Spring Web Flow Spring XD Spring Boot Spring LDAP Spring Tool Suite Spring Cloud Data Flow Spring Kafka Spring Cloud
  • 148. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Icon Library Router Team Metrics Service Broker Server Permissions Database Cloud Mobile Workstation Browser Laptop IoT Security CLI User 1 User 2 User 3 Alert Star Deploy/Ship Agile Container Microservice Monolith Application File / Log Checklist
  • 149. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Icon Library
  • 150. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Event Logos On dark Horizontal Vertical On light On mint
  • 151. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Looking for other logos? Visit our BrandFolder > (pw: keepitsimple) There you’ll find all our: • Product Logos • OSS Logos • PCF Service Icons • Brand Fonts & Colors • And more!
  • 152. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Brand Colors SpringOne Platform 2019 Primary Colors Spring Brand Color Pivotal Brand Color #1ab9a5ff #13377dff #ffffffff #6db33fff #1ab9a5ff #00253eff
  • 153. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Sample Table 15 3 2007 2008 2009 2010 Category 1 2.4 6.4 4.1 6.6 Category 2 8.2 4.5 3.2 3.8 Category 3 4.6 3.2 1.9 9.6 Category 4 6.7 3.3 3.4 2.2 Category 5 4.3 5.6 7.1 3.4
  • 154. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Sample Table 15 4 2007 2008 2009 2010 Category 1 2.4 6.4 4.1 6.6 Category 2 8.2 4.5 3.2 3.8 Category 3 4.6 3.2 1.9 9.6 Category 4 6.7 3.3 3.4 2.2 Category 5 4.3 5.6 7.1 3.4
  • 155. Stay Connected. <Your CTA> <Related Session> <Related Session> #springone@s1p