SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler 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.

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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
 

Último

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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Último (20)

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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

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.