SlideShare a Scribd company logo
MONDAY
12TH NOV
CodeNode
•London•
ORGANISERS
© Copyright 2018
Pivotal Software, Inc. All rights Reserved. Version 1.0
November 2018
An update from the RabbitMQ
team
Who am I?
Michael Klishin
! Senior Engineer at Pivotal
! RabbitMQ contributor since 2010
! @michaelklishin on GitHub and most other
places
Cover w/ Image
Agenda
■ The state of RabbitMQ 3.7.x
■ Future directions
■ What’s coming in 3.8 and beyond
The state of 3.7.x
An update from the RabbitMQ team
RabbitMQ 3.7.0
3.7.0 release themes
! Deployment automation friendliness
! Operator friendliness
! Stability
! Setting up stage for larger changes
RabbitMQ 3.7.0
Operator friendliness
! Distributed stats storage
! Per-vhost limits
! Operator policies
! New logging subsystem
! Proxy protocol
Deployment automation friendliness
! Peer discovery subsystem
! New, easy to generate configuration format
! Extensible command line tools
RabbitMQ 3.7.x
What have we been up to in 3.7.x?
! Best practices
! Documentation
! Non-breaking refinements
! Ecosystem improvements
RabbitMQ 3.7.x
Documentation
! Upgrades guide
! Monitoring guide
! Production checklist updates
! Runtime tuning guide
Guidance & best practices
! Blue/green deployment upgrades
! Workload-specific runtime tuning
RabbitMQ 3.7.x
Non-breaking refinements
! Erlang 21 support
! OAuth 2 support
! New metrics
! New CLI commands
! Greater adoption of the new config format in
plugins
! Usability improvements
! Kubernetes deployment example
! Improved default runtime flags*
! LDAP
Ecosystem Improvements
! Client libraries (primarily Java, .NET, Python)
! Erlang packaging
Future directions
An update from the RabbitMQ team
Future directions
General directions
! Improved reliability and operator friendliness
! Improved scalability
! Simplify upgrades
! Continue improving and expanding the ecosystem
! Move away from home grown distsys algorithms 🤦 "
! Improved correctness
! Repay technical debt
What problems are we addressing?
Scalability
! Mirroring uses a ring topology which is linear
! Excessive bandwidth usage
! No DC awareness
! The core is not protocol-agnostic which leads
to overhead
Reliability
! Recovery from failures is not always
predictable (or easy to reason about)
! Fails to pass certain resiliency tests in some
scenarios
! Queue sync after failure can take too long and
cause a thundering herd
! Schema data store (Mnesia) is overly
opinionated and isn’t a great fit
! Lack of unified WAL/oplog makes backups
hard
Future directions
Currently in progress
! Quorum queues (mirrored queues 2.0) based
on Raft
! OAuth 2.0 support
! Mixed version clusters
! Mnevis: a new schema data store
! Protocol-agnostic core
Quorum queues
An update from the RabbitMQ team
How does Raft-based replication compare?
Improved scalability
! No ring topology, parallel replication
! More reasonable bandwidth usage*
! Opens the door to cross-DC replication
Improved reliability
! Recovery from failures is predictable and well
defined
! Queue sync after failure transfers as little data
as possible
! Passes more resiliency tests
! Opens the door to a unified WAL/oplog to
simplify backups
What is Raft?
An update from the RabbitMQ team
What is Raft?
! A group of algorithms for reaching consensus in a distributed system
! Implementer-focused
! Proven
! Multiple implementations
! Industry use
! TLA+ specification
Raft: an oversimplified explanation
Raft
Follower
Leader
Follower
Raft: an oversimplified explanation
Raft
Follower
Leader
Follower
Commit index = 0
Enqueue
Append entry
Append entry
Log = []
Log = []
Log = []
Raft: an oversimplified explanation
Raft
Follower
Leader
Follower
Commit index = 1
Success
Success
Success
Log = [{1, Enqueue}]
Log = [{1, Enqueue}]
Log = [{1, Enqueue}]
Quorum queues
The State of Quorum Queues
! Reasonably polished
! Throughput beats mirrored queues
! Passes a [slightly modified] Jepsen test
! Available in RabbitMQ 3.8.0-beta.1 today
Quorum queues
Implementing Quorum Queues
! Powered by our own from scratch Raft implementation
! github.com/rabbitmq/ra
! Heavily geared towards but not specific to RabbitMQ
! Deviates from Raft a little bit to reduce network and disk I/O
! Does not sacrifice correctness
! Includes a peer unavailability detection library
! Optimized for throughput, adapts I/O for latency or throughput based on load
An update from the RabbitMQ team - Michael Klishin
Quorum queues
The State of Quorum Queues
! Has limitations
! Doesn’t support some features, e.g. TTL won’t be supported
! Memory management is still a hard problem
! As any new major feature, will take time to mature (you can help by giving it a try!)
Queue types
An update from the RabbitMQ team
One queue type
to rule them all?
What are the chances that all
these features can work efficiently
or be easy to reason about when
they are combined?
! Durable
! Auto-delete
! Mirrored
! Lazy
! With TTL
! With message TTL
! With length limit
! With dead-lettering
! With failure recovery settings
! With exclusive consumers
! Affected by plugins
! …
One queue type
per workload?
Or is there a better way?
! Durable queues with consensus replication
! Transient queues, auto-delete with TTL and/or
length limit
! “Infinite queues” (durable, aggressive paging to
disk)
! Lower latency in-memory queues
OAuth 2.0 Support
An update from the RabbitMQ team
OAuth 2.0 support
How does it work?
! Implemented as a plugin, rabbitmq_auth_backend_oauth2
! OAuth 2.0/JWT token scopes that follow naming conventions are translated to RabbitMQ
permissions
! Clients can use any OAuth 2.0 authorization code flow
! Management UI will use the authorization code flow
! Officially supported clients will simplify token renewal
OAuth 2.0 support
The State of OAuth 2.0 Support
! Plugin is done, open source and currently targets RabbitMQ 3.8
! Will ship in 3.8.0 Milestone 2
! Management UI needs work
! Targets UAA and AD
Next gen schema storage
An update from the RabbitMQ team
How does next gen schema storage compare?
Improved scalability
! Mnesia does reasonably well here (for schema
storage)
! Opens the door to DC awareness
! No long-entrenched Mnesia limitations
! Higher rate of development iteration
Improved reliability
! Recovery from failures that works for
RabbitMQ users (and maintainers)
! Nodes no longer have to erase themselves in
order to re-sync
! Can integrate with the unified WAL/oplog
Next gen schema storage
The State of Mnevis
! Currently an area of active research
! Mnesia will be used in a node-local way
! Mnesia is quite extensible
! Raft is not necessarily a great fit for transaction log propagation due to [relatively] high
latency
Mixed version clusters
An update from the RabbitMQ team
Mixed version clusters
How do we get there?
! Relaxing overly conservative restrictions
! Capability testing instead of version testing
! Feature flags
! Extensive internal refactoring
! Somewhat funny APIs to work around Erlang record limitations
Mixed version clusters
The State of Mixed Version Clusters
! Feature flag experiment with promising results so far
! Meant to simplify upgrades
! Long running mixed clusters is not a goal
! Cannot guarantee safety for every possible breaking change
! Needs more feedback
RabbitMQ 3.8
An update from the RabbitMQ team
RabbitMQ 3.8
What’s coming in 3.8?
! Quorum queues
! OAuth 2.0
! Initial mixed version cluster support
! Minor usability improvements
RabbitMQ 3.9
An update from the RabbitMQ team
RabbitMQ 3.9
What’s coming in 3.9?
! Protocol-agnostic core
! 🤔
RabbitMQ 4.0
An update from the RabbitMQ team
RabbitMQ 4.0
What’s coming in 4.0?
! Next generation schema databas
! Transport beam? Food replicators? Tricorders? 🤔
! All the breaking changes
Thank you!
An update from the RabbitMQ team
Transforming How The World Builds Software
© Copyright 2018 Pivotal Software, Inc. All rights Reserved.

More Related Content

PDF
What we've learned from running thousands of production RabbitMQ clusters - L...
PPTX
What is RabbitMQ ?
PDF
Introduction to AMQP Messaging with RabbitMQ
PDF
Keynote: Idiomatic RabbitMQ - Gavin M Roy
PDF
Messaging with RabbitMQ and AMQP
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
PPT
Easy enterprise application integration with RabbitMQ and AMQP
PPTX
The RabbitMQ Message Broker
What we've learned from running thousands of production RabbitMQ clusters - L...
What is RabbitMQ ?
Introduction to AMQP Messaging with RabbitMQ
Keynote: Idiomatic RabbitMQ - Gavin M Roy
Messaging with RabbitMQ and AMQP
Messaging Standards and Systems - AMQP & RabbitMQ
Easy enterprise application integration with RabbitMQ and AMQP
The RabbitMQ Message Broker

What's hot (20)

PPTX
Message Broker System and RabbitMQ
PDF
Distributed messaging with AMQP
PDF
AMQP for phpMelb
KEY
Real time system_performance_mon
PPTX
Spring RabbitMQ
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
PPT
Amqp Basic
PDF
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
PDF
AMQP with RabbitMQ
KEY
RabbitMQ And Nanite
PDF
Messaging with amqp and rabbitmq
PDF
Full Stack Bus with Javascript, RabbitMQ and Postal.js
PDF
The Future of Messaging: RabbitMQ and AMQP
ODP
Introduction To RabbitMQ
PDF
XMPP & AMQP
PPT
Rabbit MQ introduction
PDF
RabbitMQ in PHP
PDF
What’s New in RabbitMQ 3.8?
PPTX
Java Messaging with AMQP and RabbitMQ
PDF
A Closer Look at RabbitMQ
Message Broker System and RabbitMQ
Distributed messaging with AMQP
AMQP for phpMelb
Real time system_performance_mon
Spring RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQ
Amqp Basic
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
AMQP with RabbitMQ
RabbitMQ And Nanite
Messaging with amqp and rabbitmq
Full Stack Bus with Javascript, RabbitMQ and Postal.js
The Future of Messaging: RabbitMQ and AMQP
Introduction To RabbitMQ
XMPP & AMQP
Rabbit MQ introduction
RabbitMQ in PHP
What’s New in RabbitMQ 3.8?
Java Messaging with AMQP and RabbitMQ
A Closer Look at RabbitMQ
Ad

Similar to An update from the RabbitMQ team - Michael Klishin (20)

PDF
Big Data Streams Architectures. Why? What? How?
PPT
Shopzilla On Concurrency
PDF
Streaming Processing with a Distributed Commit Log
PPTX
Sanger, upcoming Openstack for Bio-informaticians
PPTX
Flexible compute
PPTX
Ceph Day SF 2015 - Deploying flash storage for Ceph without compromising perf...
PPTX
12.) fabric (your next data center)
PDF
AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...
PPT
Shopzilla On Concurrency
PDF
lessons from managing a pulsar cluster
ODP
MySQL 5.7 clustering: The developer perspective
PDF
Beyond the RTOS: A Better Way to Design Real-Time Embedded Software
PDF
Monitoring&Logging - Stanislav Kolenkin
PDF
Sanger OpenStack presentation March 2017
PDF
Basic concepts for_clustered_data_ontap_8.3_v1.1-lab_guide
PDF
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
PPTX
Modern Distributed Messaging and RPC
PPTX
Ceph Day Amsterdam 2015 - Deploying flash storage for Ceph without compromisi...
PDF
AIST Super Green Cloud: lessons learned from the operation and the performanc...
PPTX
Clustersoftware
Big Data Streams Architectures. Why? What? How?
Shopzilla On Concurrency
Streaming Processing with a Distributed Commit Log
Sanger, upcoming Openstack for Bio-informaticians
Flexible compute
Ceph Day SF 2015 - Deploying flash storage for Ceph without compromising perf...
12.) fabric (your next data center)
AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...
Shopzilla On Concurrency
lessons from managing a pulsar cluster
MySQL 5.7 clustering: The developer perspective
Beyond the RTOS: A Better Way to Design Real-Time Embedded Software
Monitoring&Logging - Stanislav Kolenkin
Sanger OpenStack presentation March 2017
Basic concepts for_clustered_data_ontap_8.3_v1.1-lab_guide
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Modern Distributed Messaging and RPC
Ceph Day Amsterdam 2015 - Deploying flash storage for Ceph without compromisi...
AIST Super Green Cloud: lessons learned from the operation and the performanc...
Clustersoftware
Ad

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPT
Teaching material agriculture food technology
PDF
Approach and Philosophy of On baking technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Encapsulation theory and applications.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
Cloud computing and distributed systems.
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Empathic Computing: Creating Shared Understanding
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Electronic commerce courselecture one. Pdf
Encapsulation_ Review paper, used for researhc scholars
Digital-Transformation-Roadmap-for-Companies.pptx
Teaching material agriculture food technology
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Encapsulation theory and applications.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Cloud computing and distributed systems.
Dropbox Q2 2025 Financial Results & Investor Presentation
Reach Out and Touch Someone: Haptics and Empathic Computing
20250228 LYD VKU AI Blended-Learning.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?

An update from the RabbitMQ team - Michael Klishin

  • 2. © Copyright 2018 Pivotal Software, Inc. All rights Reserved. Version 1.0 November 2018 An update from the RabbitMQ team
  • 3. Who am I? Michael Klishin ! Senior Engineer at Pivotal ! RabbitMQ contributor since 2010 ! @michaelklishin on GitHub and most other places
  • 4. Cover w/ Image Agenda ■ The state of RabbitMQ 3.7.x ■ Future directions ■ What’s coming in 3.8 and beyond
  • 5. The state of 3.7.x An update from the RabbitMQ team
  • 6. RabbitMQ 3.7.0 3.7.0 release themes ! Deployment automation friendliness ! Operator friendliness ! Stability ! Setting up stage for larger changes
  • 7. RabbitMQ 3.7.0 Operator friendliness ! Distributed stats storage ! Per-vhost limits ! Operator policies ! New logging subsystem ! Proxy protocol Deployment automation friendliness ! Peer discovery subsystem ! New, easy to generate configuration format ! Extensible command line tools
  • 8. RabbitMQ 3.7.x What have we been up to in 3.7.x? ! Best practices ! Documentation ! Non-breaking refinements ! Ecosystem improvements
  • 9. RabbitMQ 3.7.x Documentation ! Upgrades guide ! Monitoring guide ! Production checklist updates ! Runtime tuning guide Guidance & best practices ! Blue/green deployment upgrades ! Workload-specific runtime tuning
  • 10. RabbitMQ 3.7.x Non-breaking refinements ! Erlang 21 support ! OAuth 2 support ! New metrics ! New CLI commands ! Greater adoption of the new config format in plugins ! Usability improvements ! Kubernetes deployment example ! Improved default runtime flags* ! LDAP Ecosystem Improvements ! Client libraries (primarily Java, .NET, Python) ! Erlang packaging
  • 11. Future directions An update from the RabbitMQ team
  • 12. Future directions General directions ! Improved reliability and operator friendliness ! Improved scalability ! Simplify upgrades ! Continue improving and expanding the ecosystem ! Move away from home grown distsys algorithms 🤦 " ! Improved correctness ! Repay technical debt
  • 13. What problems are we addressing? Scalability ! Mirroring uses a ring topology which is linear ! Excessive bandwidth usage ! No DC awareness ! The core is not protocol-agnostic which leads to overhead Reliability ! Recovery from failures is not always predictable (or easy to reason about) ! Fails to pass certain resiliency tests in some scenarios ! Queue sync after failure can take too long and cause a thundering herd ! Schema data store (Mnesia) is overly opinionated and isn’t a great fit ! Lack of unified WAL/oplog makes backups hard
  • 14. Future directions Currently in progress ! Quorum queues (mirrored queues 2.0) based on Raft ! OAuth 2.0 support ! Mixed version clusters ! Mnevis: a new schema data store ! Protocol-agnostic core
  • 15. Quorum queues An update from the RabbitMQ team
  • 16. How does Raft-based replication compare? Improved scalability ! No ring topology, parallel replication ! More reasonable bandwidth usage* ! Opens the door to cross-DC replication Improved reliability ! Recovery from failures is predictable and well defined ! Queue sync after failure transfers as little data as possible ! Passes more resiliency tests ! Opens the door to a unified WAL/oplog to simplify backups
  • 17. What is Raft? An update from the RabbitMQ team
  • 18. What is Raft? ! A group of algorithms for reaching consensus in a distributed system ! Implementer-focused ! Proven ! Multiple implementations ! Industry use ! TLA+ specification
  • 19. Raft: an oversimplified explanation Raft Follower Leader Follower
  • 20. Raft: an oversimplified explanation Raft Follower Leader Follower Commit index = 0 Enqueue Append entry Append entry Log = [] Log = [] Log = []
  • 21. Raft: an oversimplified explanation Raft Follower Leader Follower Commit index = 1 Success Success Success Log = [{1, Enqueue}] Log = [{1, Enqueue}] Log = [{1, Enqueue}]
  • 22. Quorum queues The State of Quorum Queues ! Reasonably polished ! Throughput beats mirrored queues ! Passes a [slightly modified] Jepsen test ! Available in RabbitMQ 3.8.0-beta.1 today
  • 23. Quorum queues Implementing Quorum Queues ! Powered by our own from scratch Raft implementation ! github.com/rabbitmq/ra ! Heavily geared towards but not specific to RabbitMQ ! Deviates from Raft a little bit to reduce network and disk I/O ! Does not sacrifice correctness ! Includes a peer unavailability detection library ! Optimized for throughput, adapts I/O for latency or throughput based on load
  • 25. Quorum queues The State of Quorum Queues ! Has limitations ! Doesn’t support some features, e.g. TTL won’t be supported ! Memory management is still a hard problem ! As any new major feature, will take time to mature (you can help by giving it a try!)
  • 26. Queue types An update from the RabbitMQ team
  • 27. One queue type to rule them all? What are the chances that all these features can work efficiently or be easy to reason about when they are combined? ! Durable ! Auto-delete ! Mirrored ! Lazy ! With TTL ! With message TTL ! With length limit ! With dead-lettering ! With failure recovery settings ! With exclusive consumers ! Affected by plugins ! …
  • 28. One queue type per workload? Or is there a better way? ! Durable queues with consensus replication ! Transient queues, auto-delete with TTL and/or length limit ! “Infinite queues” (durable, aggressive paging to disk) ! Lower latency in-memory queues
  • 29. OAuth 2.0 Support An update from the RabbitMQ team
  • 30. OAuth 2.0 support How does it work? ! Implemented as a plugin, rabbitmq_auth_backend_oauth2 ! OAuth 2.0/JWT token scopes that follow naming conventions are translated to RabbitMQ permissions ! Clients can use any OAuth 2.0 authorization code flow ! Management UI will use the authorization code flow ! Officially supported clients will simplify token renewal
  • 31. OAuth 2.0 support The State of OAuth 2.0 Support ! Plugin is done, open source and currently targets RabbitMQ 3.8 ! Will ship in 3.8.0 Milestone 2 ! Management UI needs work ! Targets UAA and AD
  • 32. Next gen schema storage An update from the RabbitMQ team
  • 33. How does next gen schema storage compare? Improved scalability ! Mnesia does reasonably well here (for schema storage) ! Opens the door to DC awareness ! No long-entrenched Mnesia limitations ! Higher rate of development iteration Improved reliability ! Recovery from failures that works for RabbitMQ users (and maintainers) ! Nodes no longer have to erase themselves in order to re-sync ! Can integrate with the unified WAL/oplog
  • 34. Next gen schema storage The State of Mnevis ! Currently an area of active research ! Mnesia will be used in a node-local way ! Mnesia is quite extensible ! Raft is not necessarily a great fit for transaction log propagation due to [relatively] high latency
  • 35. Mixed version clusters An update from the RabbitMQ team
  • 36. Mixed version clusters How do we get there? ! Relaxing overly conservative restrictions ! Capability testing instead of version testing ! Feature flags ! Extensive internal refactoring ! Somewhat funny APIs to work around Erlang record limitations
  • 37. Mixed version clusters The State of Mixed Version Clusters ! Feature flag experiment with promising results so far ! Meant to simplify upgrades ! Long running mixed clusters is not a goal ! Cannot guarantee safety for every possible breaking change ! Needs more feedback
  • 38. RabbitMQ 3.8 An update from the RabbitMQ team
  • 39. RabbitMQ 3.8 What’s coming in 3.8? ! Quorum queues ! OAuth 2.0 ! Initial mixed version cluster support ! Minor usability improvements
  • 40. RabbitMQ 3.9 An update from the RabbitMQ team
  • 41. RabbitMQ 3.9 What’s coming in 3.9? ! Protocol-agnostic core ! 🤔
  • 42. RabbitMQ 4.0 An update from the RabbitMQ team
  • 43. RabbitMQ 4.0 What’s coming in 4.0? ! Next generation schema databas ! Transport beam? Food replicators? Tricorders? 🤔 ! All the breaking changes
  • 44. Thank you! An update from the RabbitMQ team
  • 45. Transforming How The World Builds Software © Copyright 2018 Pivotal Software, Inc. All rights Reserved.