SlideShare a Scribd company logo
1 of 45
Download to read offline
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
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

What's hot

Distributed messaging with AMQP
Distributed messaging with AMQPDistributed messaging with AMQP
Distributed messaging with AMQPWee Keat Chin
 
Real time system_performance_mon
Real time system_performance_monReal time system_performance_mon
Real time system_performance_monTomas Doran
 
Messaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQMessaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQPOSSCON
 
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
A walk-through of the design and architecture of RabbitMQ - Ayanda DubeA walk-through of the design and architecture of RabbitMQ - Ayanda Dube
A walk-through of the design and architecture of RabbitMQ - Ayanda DubeRabbitMQ Summit
 
RabbitMQ And Nanite
RabbitMQ And NaniteRabbitMQ And Nanite
RabbitMQ And Nanitemattmatt
 
Messaging with amqp and rabbitmq
Messaging with amqp and rabbitmqMessaging with amqp and rabbitmq
Messaging with amqp and rabbitmqSelasie Hanson
 
Full Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsFull Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsJavier Arias Losada
 
The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP Eberhard Wolff
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQKnoldus Inc.
 
XMPP & AMQP
XMPP & AMQPXMPP & AMQP
XMPP & AMQPvoluntas
 
Rabbit MQ introduction
Rabbit MQ introductionRabbit MQ introduction
Rabbit MQ introductionSitg Yao
 
What’s New in RabbitMQ 3.8?
  What’s New in RabbitMQ 3.8?  What’s New in RabbitMQ 3.8?
What’s New in RabbitMQ 3.8?VMware Tanzu
 
Java Messaging with AMQP and RabbitMQ
Java Messaging with AMQP and RabbitMQ Java Messaging with AMQP and RabbitMQ
Java Messaging with AMQP and RabbitMQ Maxim Konovalov
 

What's hot (20)

Message Broker System and RabbitMQ
Message Broker System and RabbitMQMessage Broker System and RabbitMQ
Message Broker System and RabbitMQ
 
Distributed messaging with AMQP
Distributed messaging with AMQPDistributed messaging with AMQP
Distributed messaging with AMQP
 
AMQP for phpMelb
AMQP for phpMelbAMQP for phpMelb
AMQP for phpMelb
 
Real time system_performance_mon
Real time system_performance_monReal time system_performance_mon
Real time system_performance_mon
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
 
Messaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQMessaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQ
 
Amqp Basic
Amqp BasicAmqp Basic
Amqp Basic
 
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
A walk-through of the design and architecture of RabbitMQ - Ayanda DubeA walk-through of the design and architecture of RabbitMQ - Ayanda Dube
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
 
AMQP with RabbitMQ
AMQP with RabbitMQAMQP with RabbitMQ
AMQP with RabbitMQ
 
RabbitMQ And Nanite
RabbitMQ And NaniteRabbitMQ And Nanite
RabbitMQ And Nanite
 
Messaging with amqp and rabbitmq
Messaging with amqp and rabbitmqMessaging with amqp and rabbitmq
Messaging with amqp and rabbitmq
 
Full Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsFull Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.js
 
The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQ
 
XMPP & AMQP
XMPP & AMQPXMPP & AMQP
XMPP & AMQP
 
Rabbit MQ introduction
Rabbit MQ introductionRabbit MQ introduction
Rabbit MQ introduction
 
RabbitMQ in PHP
RabbitMQ in PHPRabbitMQ in PHP
RabbitMQ in PHP
 
What’s New in RabbitMQ 3.8?
  What’s New in RabbitMQ 3.8?  What’s New in RabbitMQ 3.8?
What’s New in RabbitMQ 3.8?
 
Java Messaging with AMQP and RabbitMQ
Java Messaging with AMQP and RabbitMQ Java Messaging with AMQP and RabbitMQ
Java Messaging with AMQP and RabbitMQ
 
A Closer Look at RabbitMQ
A Closer Look at RabbitMQA Closer Look at RabbitMQ
A Closer Look at RabbitMQ
 

Similar to An update from the RabbitMQ team - Michael Klishin

Big Data Streams Architectures. Why? What? How?
Big Data Streams Architectures. Why? What? How?Big Data Streams Architectures. Why? What? How?
Big Data Streams Architectures. Why? What? How?Anton Nazaruk
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyWill Gage
 
Streaming Processing with a Distributed Commit Log
Streaming Processing with a Distributed Commit LogStreaming Processing with a Distributed Commit Log
Streaming Processing with a Distributed Commit LogJoe Stein
 
Sanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansSanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansPeter Clapham
 
Ceph Day SF 2015 - Deploying flash storage for Ceph without compromising perf...
Ceph Day SF 2015 - Deploying flash storage for Ceph without compromising perf...Ceph Day SF 2015 - Deploying flash storage for Ceph without compromising perf...
Ceph Day SF 2015 - Deploying flash storage for Ceph without compromising perf...Ceph Community
 
12.) fabric (your next data center)
12.) fabric (your next data center)12.) fabric (your next data center)
12.) fabric (your next data center)Jeff Green
 
AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...
AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...
AI&BigData Lab 2016. Сарапин Виктор: Размер имеет значение: анализ по требова...GeeksLab Odessa
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyRodney Barlow
 
lessons from managing a pulsar cluster
 lessons from managing a pulsar cluster lessons from managing a pulsar cluster
lessons from managing a pulsar clusterShivji Kumar Jha
 
MySQL 5.7 clustering: The developer perspective
MySQL 5.7 clustering: The developer perspectiveMySQL 5.7 clustering: The developer perspective
MySQL 5.7 clustering: The developer perspectiveUlf Wendel
 
Beyond the RTOS: A Better Way to Design Real-Time Embedded Software
Beyond the RTOS: A Better Way to Design Real-Time Embedded SoftwareBeyond the RTOS: A Better Way to Design Real-Time Embedded Software
Beyond the RTOS: A Better Way to Design Real-Time Embedded SoftwareQuantum Leaps, LLC
 
Monitoring&Logging - Stanislav Kolenkin
Monitoring&Logging - Stanislav Kolenkin  Monitoring&Logging - Stanislav Kolenkin
Monitoring&Logging - Stanislav Kolenkin Kuberton
 
Sanger OpenStack presentation March 2017
Sanger OpenStack presentation March 2017Sanger OpenStack presentation March 2017
Sanger OpenStack presentation March 2017Dave Holland
 
Basic concepts for_clustered_data_ontap_8.3_v1.1-lab_guide
Basic concepts for_clustered_data_ontap_8.3_v1.1-lab_guideBasic concepts for_clustered_data_ontap_8.3_v1.1-lab_guide
Basic concepts for_clustered_data_ontap_8.3_v1.1-lab_guideVikas Sharma
 
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst ITThings You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst ITOpenStack
 
Modern Distributed Messaging and RPC
Modern Distributed Messaging and RPCModern Distributed Messaging and RPC
Modern Distributed Messaging and RPCMax Alexejev
 
Ceph Day Amsterdam 2015 - Deploying flash storage for Ceph without compromisi...
Ceph Day Amsterdam 2015 - Deploying flash storage for Ceph without compromisi...Ceph Day Amsterdam 2015 - Deploying flash storage for Ceph without compromisi...
Ceph Day Amsterdam 2015 - Deploying flash storage for Ceph without compromisi...Ceph Community
 
AIST Super Green Cloud: lessons learned from the operation and the performanc...
AIST Super Green Cloud: lessons learned from the operation and the performanc...AIST Super Green Cloud: lessons learned from the operation and the performanc...
AIST Super Green Cloud: lessons learned from the operation and the performanc...Ryousei Takano
 

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

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

Recently uploaded

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Recently uploaded (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

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
  • 24.
  • 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.