The Business Event Bus Joris Meijer Dizzit
Dizzit &A little about me
-Married,fatherofImke,Felix-LivinginVoorschoten-+/- 8yexp.inSME(php,matlab),>4yexp.inlargeenterprise(Java)- JoinedDizzit december 2015-Scrummaster/developer- InterestedinScrum,Kafka,Docker,Rancher,muchmore
Dizzit &Our starting point
-Enterprisecontext-BEBwillbecomecorearchitecture-100sofconnectingapplications-Versioneddatacontracts
-Movementtowardsdevops-Infrastructureindependence
Dizzit &Design choices
3-2-3
-Multidatacentersetup-Configurationprovider-Schemaregistry-Securesetup-BEBclientlibrary-Dockerize allcomponents
Dizzit &Multi datacenter setup
3-2-3
Best Boxtel
- Active-activesetup-DatacentersinBestandBoxtel-UsingMirrorMaker- Challenge:preventfeedback
Dizzit &Multi datacenter setupActive-active setupChallenge: prevent infinite loop
AMessage x
B
sync
sync
-Preventfeedback
Dizzit &Multi datacenter setupActive-active setupChallenge: prevent infinite loop
AMessage x
B
sync
sync
Message x
-Preventfeedback
Dizzit &Multi datacenter setupActive-active setupChallenge: prevent infinite loop
AMessage x
B
sync
sync
Message xMessage x
-Preventfeedback
Dizzit &Multi datacenter setup
Custom BEB header
Magic Major Minor Info size Info ORIGINAL
MESSAGE
0B EB 00 01 04 00 00 00 01
-CustomBEBheader
Dizzit &Configuration provider
-Findaclustertoconnectto-Dynamicconfiguration- Interruptions(maintenance)
-Spreadtheload
Client
Configuration provider
1
2
ClusterX3
Dizzit &Configuration provider
-Findaclustertoconnectto- httpGET:
http://cp.rabobank.nl?clientTopic=distribution-outboundpushmessage- Result:
Dizzit &Configuration provider
-Spreadtheload- httpGET:
http://cp.rabobank.nl?clientTopic=distribution-outboundsmsmessage- Result:
Dizzit &Configuration provider
-Dynamicconfiguration-Allowmaintenance
- httpPOST:http://cp.rabobank.nl/admin/setswitch?switch=clusterA
- result:
Dizzit &BEB client library
-Simplifysetupforconnectingclients-Obtainandrefreshconfigurationfromconfigurationprovider-Supportmultiplestrategies
Dizzit &BEB client library
3-2-3
ConfigurationProviderClient
Kafka JavaLibrary
BEBSerDe
BEBClientLibrary
Producerfactory
Consumerfactory
Dizzit &BEB client library
-Simplifysetupforconnectingclients-Obtainconfigurationfromconfigurationprovider
Dizzit &BEB client library
-Supportmultiplestrategies
AT_MOST_ONCE vsAT_LEAST_ONCE- Deliverynotguaranteed- Noduplication- Fast
- Deliveryguaranteed- Duplicationscanoccur- Slightly slower
Dizzit &BEB client library
-Reloadconfigurationfromconfigurationprovider-Maintenancewindow
Client
Configuration provider
1
2
ClusterX3
Dizzit &Schema registry
-UsesApacheavro-Contractbetweenproducersandconsumers-Backwardscompatible-Morecontroloverschemagovernance- POSTonlyallowedbyBEBdevops team
Dizzit &Schema registry
-SchemaIDispresentineverymessage-Calltoschemaregistryismadepriorto(de)serialization-Examples(DEMO)
Dizzit &Dockerize all components
-Docker imagepercomponent-BasedonConfluentplatform-Externalizedproperties-Docker registry
Dizzit &Dockerize all components
-Docker imagepercomponent-BasedonConfluentplatform-Externalizedproperties-Docker registry-Rancherfordeployment
Dizzit &Enough talking
http://static.tumblr.com/52679116680c197db232c3116ce98537/y07rdrp/1XJmt370e/tumblr_static_demotimeheader2.png
Dizzit &DEMO
AccountEntry
Producer
AlertProducer
DashboardBackend
DashboardFrontend
AccountEntriesAlerts
Dizzit &Future
-BEBinthecloud- Configurablemirrormaker
-Dynamicscaling-Automaticfailover-Easiertopicmanagement-EXACTLY_ONCEstrategy