[{"data":1,"prerenderedAt":263},["ShallowReactive",2],{"breadcrumb-blog-post":3,"community-coming-soon-de":175},{"id":4,"title":5,"author":6,"body":7,"category":160,"date":161,"description":162,"extension":163,"featured":164,"geo":6,"image":165,"manual_override":164,"meta":166,"navigation":167,"path":168,"readTime":169,"schema":6,"section_hashes":6,"seo":170,"sitemap":171,"source_hash":6,"source_locale":6,"stem":172,"tier":173,"tier_1_approved":164,"tier_1_approved_at":6,"tier_1_approved_by":6,"tier_1_deadline":6,"tier_1_reviewer":6,"translated_at":6,"translated_from_hash":6,"translation_model":6,"translation_provider":6,"translation_status":6,"__hash__":174},"blog/blog/2022-02-08-data-pressure.md","Dealing with data-pressure in message-based systems",null,{"type":8,"value":9,"toc":152},"minimark",[10,15,19,22,34,37,41,44,47,50,60,63,66,88,95,106,112,116,119,125,129],[11,12,14],"h2",{"id":13},"what-is-data-pressure","What is data-pressure?",[16,17,18],"p",{},"You hear a lot about data-pressure when it comes to non-stop systems. What is it and why is it so important?",[16,20,21],{},"Pressure in the physical sense describes an imbalance between gas or fluid between two confined compartments. It goes both ways until an equilibrium is reached. If you want to manage it, you usually put a valve between the two.",[16,23,24,25,29,30,33],{},"In data processing systems ",[26,27,28],"strong",{},"data-pressure",", or ",[26,31,32],{},"upstream-pressure"," describes the amount of data which is ready for processing. For file based (batch) solutions this simply describes the amount of files which are waiting to be processed (asynchronous). Processing speed is purely based on the processing power of the downstream actors and is demand based. Data-pressure in batch usually is no threat to system overload because it is implicit. The batch processing system will always only process as much as it can.",[16,35,36],{},"It's a very different story in modern, message-driven, real-time processing environments, however, where data-pressure is explicit because data needs to be processed as it arrives.",[11,38,40],{"id":39},"importance-of-back-pressure-in-non-stop-real-time-systems","Importance of back-pressure in non-stop real-time systems",[16,42,43],{},"Message-driven use-cases usually require that data should be handled in real-time, at all times. Therefore, systems have to be able to scale elastically in order to handle peak loads, or free up unneeded resources during low data-pressure windows.",[16,45,46],{},"There are countless examples of architectures which clog-up when dealing with large data loads. This often results in a vicious-cycle which typically leads to cardiac-arrest of such an architecture. The main conundrum is a missing negative demand-signal (or high data back-pressure-signal) to upstream actors upon which they can react. If there were such a signal, appropriate actions could be taken.",[16,48,49],{},"Such actions could be:",[51,52,53,57],"ul",{},[54,55,56],"li",{},"slowing processing down overall up the data stream, or",[54,58,59],{},"spawning more processing power to handle the added pressure",[16,61,62],{},"Once upstream data-pressure decreases, the counter-measures can be reversed. More data can again be delivered, or previously activated processing power can be decommissioned.",[16,64,65],{},"So to summarize, we have:",[67,68,69,79],"ol",{},[54,70,71,72,75,76,78],{},"a ",[26,73,74],{},"data-signal"," or ",[26,77,32],{}," which signals that data is available for processing, and we have",[54,80,71,81,75,84,87],{},[26,82,83],{},"demand-signal",[26,85,86],{},"back-pressure"," which signals how loaded the downstream actors are, and whether pressure from upstream actors can be relieved on to downstream actors.",[16,89,90],{},[91,92],"img",{"alt":93,"src":94},"Data-pressure Reactivity","/images/blog/2022-02-08/e436ddd5.png",[16,96,97,98,105],{},"Using these signals, the system is able to negotiate an equilibrium between all participants which ensures that processing never stops, but rather slows down (or additional capacity is automatically made available). This problem is well recognized and defined in the ",[99,100,104],"a",{"href":101,"rel":102},"https://www.reactivemanifesto.org/",[103],"nofollow","Reactive Manifesto"," which requires systems to be message-driven, elastic and resilient, and therefore responsive to load. Systems which cater to these requirements are called \"Reactive\".",[16,107,108],{},[91,109],{"alt":110,"src":111},"Reactive Manifesto: Means - Form - Value","/images/blog/2022-02-08/f8cdb1ba.png",[11,113,115],{"id":114},"how-laylineio-handles-it","How layline.io handles it",[16,117,118],{},"It sounds like the solution to the back-pressure challenge is simple. But it's actually hard to solve since all participants in this dance need to be data-pressure aware, both ways. Reactive stream management has solved this problem which is why layline.io takes full advantage it under the hood. It's not for the faint-of-heart, however, and comes with a steep learning and experience curve attached. layline.io shields its users from this complexity in an easy-to-use platform, which provides all production necessary features like UI-driven low-code configurability, one-click deployment, monitoring and much more.",[16,120,121],{},[91,122],{"alt":123,"src":124},"layline.io Project Configuration","/images/blog/2022-02-08/project_workflow_04.webp",[11,126,128],{"id":127},"resources","Resources",[51,130,131,136,145],{},[54,132,133],{},[99,134,104],{"href":101,"rel":135},[103],[54,137,138,139,144],{},"Read more about layline.io ",[99,140,143],{"href":141,"rel":142},"https://layline.io/",[103],"here",".",[54,146,147,148,144],{},"Contact us at ",[99,149,151],{"href":150},"mailto:hello@layline.io","hello@layline.io",{"title":153,"searchDepth":154,"depth":154,"links":155},"",2,[156,157,158,159],{"id":13,"depth":154,"text":14},{"id":39,"depth":154,"text":40},{"id":114,"depth":154,"text":115},{"id":127,"depth":154,"text":128},"Article","2022-02-08","How to deal with data pressure in non-stop message-driven solutions and ensure non-stop uptime under load.","md",false,"/images/blog/2022-02-08/lucas-van-oort-_FjIWDrtfmU-unsplash.webp",{},true,"/blog/2022-02-08-data-pressure","4 min",{"title":5,"description":162},{"loc":168},"blog/2022-02-08-data-pressure","2","x0f2ib8nEa9ZPX713ZxgzY6LLnFGIWWB6pktWteME5k",{"doc":176,"isFallback":164,"effectiveLocale":262},{"title":177,"description":178,"ogTitle":177,"ogDescription":179,"hero":180,"included":197,"status":225,"cta":249,"errors":260,"body":153},"Community Edition kommt bald | layline.io","Die layline.io Community Edition wird bald öffentlich verfügbar sein. Melden Sie sich an, um zum Start benachrichtigt zu werden.","Lassen Sie sich benachrichtigen, wenn die layline.io Community Edition auf GitHub startet.",{"backLabel":181,"badgeLabel":182,"titleLabel":183,"launchLabel":184,"description":185,"successTitle":186,"successDescription":187,"errorTitle":188,"emailPlaceholder":189,"submittingLabel":190,"notifyLabel":191,"secondaryCtaLabel":192,"trustPoints":193},"Zurück zur Startseite","Bald verfügbar","Community Edition","Startet bald","Wir setzen gerade die letzten Feinheiten an der Open-Source-Veröffentlichung von layline.io um. Die vollständige Community Edition wird sehr bald auf GitHub verfügbar sein.","Posteingang prüfen!","Wir haben Ihnen eine Bestätigungs-E-Mail gesendet. Klicken Sie auf den Link, um Ihre Anmeldung abzuschließen.","Etwas ist schiefgelaufen","E-Mail-Adresse eingeben","Wird gesendet...","Benachrichtigt mich","Oder kontaktieren Sie uns direkt",[194,195,196],"Open-Source-Lizenz","Für immer kostenlos","Vollständige Dokumentation",{"titlePrefix":198,"titleHighlight":199,"description":200,"features":201},"Was in der","Community Edition enthalten ist","Alles, was Sie brauchen, um produktionsreife Datenpipelines aufzubauen - komplett kostenlos und quelloffen.",[202,206,210,214,218,221],{"icon":203,"title":204,"description":205},"i-ph-code","Vollständiger Quellcode","Vollständiger Zugriff auf die layline.io-Codebasis unter einer Open-Source-Lizenz.",{"icon":207,"title":208,"description":209},"i-ph-flow-arrow","Visual Workflow Editor","Entwerfen Sie Datenpipelines mit unserer intuitiven Drag-and-drop-Oberfläche.",{"icon":211,"title":212,"description":213},"i-ph-lightning","Hochleistungs-Engine","Reaktives Streaming auf Basis von Apache Pekko mit Latenzen unter einer Millisekunde.",{"icon":215,"title":216,"description":217},"i-ph-plug","Erweiterbare Konnektoren","Verbinden Sie Datenbanken, APIs, Message Queues und erstellen Sie eigene Integrationen.",{"icon":203,"title":219,"description":220},"JavaScript & Python","Schreiben Sie eigene Transformationen in Ihrer bevorzugten Sprache.",{"icon":222,"title":223,"description":224},"i-ph-users","Community-Support","Werden Sie Teil unserer wachsenden Community aus Data Engineers und Mitwirkenden.",{"title":226,"description":227,"steps":228},"Release-Status","Verfolgen Sie unseren Fortschritt bis zur öffentlichen Veröffentlichung",[229,235,237,243],{"title":230,"statusLabel":231,"statusTone":232,"description":233,"icon":234},"Entwicklung der Core Engine","Abgeschlossen","complete","Hochperformante reaktive Streaming-Engine auf Basis von Apache Pekko.","i-ph-check",{"title":208,"statusLabel":231,"statusTone":232,"description":236,"icon":234},"Intuitive Drag-and-drop-Oberfläche für das Design von Datenpipelines.",{"title":238,"statusLabel":239,"statusTone":240,"description":241,"icon":242},"Dokumentation & Beispiele","In Arbeit","progress","Umfassende Leitfäden, Tutorials und Beispiel-Workflows.","i-ph-spinner",{"title":244,"statusLabel":245,"statusTone":246,"description":247,"icon":248},"Öffentliche GitHub-Veröffentlichung","Kommt bald","upcoming","Vollständiger Quellcode unter einer Open-Source-Lizenz.","i-ph-circle",{"title":250,"description":251,"primary":252,"secondary":256},"Sie möchten nicht warten?","Sichern Sie sich schon heute frühen Zugriff oder sprechen Sie mit unserem Team über die Enterprise Edition mit zusätzlichen Funktionen und Support.",{"label":253,"to":254,"icon":255},"Frühen Zugriff erhalten","/get-started","i-ph-rocket",{"label":257,"to":258,"icon":259},"Editionen vergleichen","/editions/comparison","i-ph-arrow-right",{"unknownSubmitError":261},"Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.","de",1787645782374]