Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesLightbend
The term 'streams' has been getting pretty overloaded recently–it's hard to know where to best use different technologies with streams in the name. In this talk by noted hAkker Konrad Malawski, we'll disambiguate what streams are and what they aren't, taking a deeper look into Akka Streams (the implementation) and Reactive Streams (the standard).
You'll be introduced to a number of real life scenarios where applying back-pressure helps to keep your systems fast and healthy at the same time. While the focus is mainly on the Akka Streams implementation, the general principles apply to any kind of asynchronous, message-driven architectures.
Progressive Web App
New Web Technology for the Mobile User Which work on Poor Data Connection and It Will Work With Simple Manifest File Or with use of Service Workers. It Feel Like Mobile App to the user.
RxJS Operators - Real World Use Cases (FULL VERSION)Tracy Lee
This document provides an overview and explanation of various RxJS operators for working with Observables, including:
- The map, filter, and scan operators for transforming streams of data. Map applies a function to each value, filter filters values, and scan applies a reducer function over time.
- Flattening operators like switchMap, concatMap, mergeMap, and exhaustMap for mapping Observables to other Observables.
- Error handling operators like catchError, retry, and retryWhen for catching and handling errors.
- Additional explanation of use cases and common mistakes for each operator discussed. The document is intended to explain these essential operators for real world reactive programming use.
Here’s the content of This Presentation :
Progressive Web Apps
Service Workers
Comparison of Responsive Web, Native Apps, And PWA
Benefit Using PWA Technology
Framework in PWA
RxJS is a library for reactive programming that allows composing asynchronous and event-based programs using observable sequences. It provides the Observable type for pushing multiple values to observers over time asynchronously. Operators allow transforming and combining observables. Key types include Observable, Observer, Subject, BehaviorSubject, and ReplaySubject. Subjects can multicast values to multiple observers. Overall, RxJS is useful for handling asynchronous events as collections in a declarative way.
Slides from my madlab presentation on Akka Streams & Reactive Kafka (October 2015), full slides and source here:
https://github.com/markglh/AkkaStreams-Madlab-Slides
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaJAX London
2011-11-02 | 03:45 PM - 04:35 PM |
Android Activities can possess one of four launch modes and one of many activity tasks. We will explore how your choices of launch modes and tasks affect your Applications back stack history and what will happen behind the scenes. After this talk you will confidently be able to wield the best launch modes for your apps activities in every situation!
The document discusses the benefits of using RxJS observables over promises and events for managing asynchronous and reactive code in Angular applications. It explains key concepts like observers, subscriptions, operators, cold vs hot observables, and using RxJS with services and components. Example code is provided for creating observable data services to share data between components, composing asynchronous logic with operators, and best practices for managing subscriptions and preventing memory leaks. Overall, the document promotes a reactive programming style with RxJS for building maintainable and testable Angular applications.
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesLightbend
The term 'streams' has been getting pretty overloaded recently–it's hard to know where to best use different technologies with streams in the name. In this talk by noted hAkker Konrad Malawski, we'll disambiguate what streams are and what they aren't, taking a deeper look into Akka Streams (the implementation) and Reactive Streams (the standard).
You'll be introduced to a number of real life scenarios where applying back-pressure helps to keep your systems fast and healthy at the same time. While the focus is mainly on the Akka Streams implementation, the general principles apply to any kind of asynchronous, message-driven architectures.
Progressive Web App
New Web Technology for the Mobile User Which work on Poor Data Connection and It Will Work With Simple Manifest File Or with use of Service Workers. It Feel Like Mobile App to the user.
RxJS Operators - Real World Use Cases (FULL VERSION)Tracy Lee
This document provides an overview and explanation of various RxJS operators for working with Observables, including:
- The map, filter, and scan operators for transforming streams of data. Map applies a function to each value, filter filters values, and scan applies a reducer function over time.
- Flattening operators like switchMap, concatMap, mergeMap, and exhaustMap for mapping Observables to other Observables.
- Error handling operators like catchError, retry, and retryWhen for catching and handling errors.
- Additional explanation of use cases and common mistakes for each operator discussed. The document is intended to explain these essential operators for real world reactive programming use.
Here’s the content of This Presentation :
Progressive Web Apps
Service Workers
Comparison of Responsive Web, Native Apps, And PWA
Benefit Using PWA Technology
Framework in PWA
RxJS is a library for reactive programming that allows composing asynchronous and event-based programs using observable sequences. It provides the Observable type for pushing multiple values to observers over time asynchronously. Operators allow transforming and combining observables. Key types include Observable, Observer, Subject, BehaviorSubject, and ReplaySubject. Subjects can multicast values to multiple observers. Overall, RxJS is useful for handling asynchronous events as collections in a declarative way.
Slides from my madlab presentation on Akka Streams & Reactive Kafka (October 2015), full slides and source here:
https://github.com/markglh/AkkaStreams-Madlab-Slides
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaJAX London
2011-11-02 | 03:45 PM - 04:35 PM |
Android Activities can possess one of four launch modes and one of many activity tasks. We will explore how your choices of launch modes and tasks affect your Applications back stack history and what will happen behind the scenes. After this talk you will confidently be able to wield the best launch modes for your apps activities in every situation!
The document discusses the benefits of using RxJS observables over promises and events for managing asynchronous and reactive code in Angular applications. It explains key concepts like observers, subscriptions, operators, cold vs hot observables, and using RxJS with services and components. Example code is provided for creating observable data services to share data between components, composing asynchronous logic with operators, and best practices for managing subscriptions and preventing memory leaks. Overall, the document promotes a reactive programming style with RxJS for building maintainable and testable Angular applications.
This document provides an overview of APIs and how they work. It begins with basic API concepts and definitions, then demonstrates how APIs are used by having programs interact with applications to access structured data without direct human interaction. It provides examples of common API uses for maps, login/authentication, payments, messaging and more. It also introduces the concept of webhooks which allow applications to "call" other services when data is available, rather than requiring the other service to periodically check via API calls. Overall it serves as a high-level introduction to APIs and webhooks for beginners.
The document discusses progressive web apps and React. It begins by introducing progressive web apps and their benefits over traditional web apps and native apps. It then covers prerequisites for building progressive web apps with React including HTML, JavaScript, Node.js and CLI knowledge. The document proceeds to discuss key React topics like components, virtual DOM, JSX, props and state. It also covers service workers, manifest files and tools for testing progressive web apps.
AngularJS is a structural framework for dynamic web apps.This presentation talks about Angular js Basics (MV* architecture), Two Way Data-Binding, Templates, Dependency Injection etc...
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
What is a Microservices architecture and how does it differ from a Service-Oriented Architecture? Should you use traditional REST APIs to bind services together? Or is it better to use a richer, more loosely-coupled protocol? This talk will start with quick recap of how we created systems over the past 20 years and how different architectures evolved from it. The talk will show how we piece services together in event driven systems, how we use a distributed log (event hub) to create a central, persistent history of events and what benefits we achieve from doing so.
Apache Kafka is a perfect match for building such an asynchronous, loosely-coupled event-driven backbone. Events trigger processing logic, which can be implemented in a more traditional as well as in a stream processing fashion. The talk will show the difference between a request-driven and event-driven communication and show when to use which. It highlights how the modern stream processing systems can be used to hold state both internally as well as in a database and how this state can be used to further increase independence of other services, the primary goal of a Microservices architecture.
This document discusses cross-site scripting (XSS) attacks and techniques for bypassing web application firewalls (WAFs) that aim to prevent XSS. It explains how XSS payloads can be embedded in XML, GIF images, and clipboard data to exploit browser parsing behaviors. The document also provides examples of encoding payloads in complex ways like JS-F**K to evade WAF signature rules.
1) Reactive programming is a new programming paradigm that is asynchronous and non-blocking, treating data flows as event-driven streams.
2) Traditional REST APIs are synchronous and blocking with limitations on concurrent users, while reactive programming supports asynchronous operations, uses fewer threads, and enables back pressure on data streams.
3) Key aspects of reactive programming include reactive streams specifications, publishers that represent data sources, subscribers, and asynchronous non-blocking libraries like RxJava and Project Reactor that implement the specifications.
Attacking and defending GraphQL applications: a hands-on approachDavide Cioccia
DevSecCon Seatlle 2019 - Workshop
The workshop is meant for developers, architects and security folks. During the workshop we will learn how to setup a GraphQL project, define a schema, create Query, Mutation and Subscription for a "fake" social network. We will learn what are the main security issues to consider when developing a GraphQL application:
Introspection: information disclosure
/graphql as a single point of failure (DoS attacks)
IDOR
Broken Access control
Injections
Once we get familiar with the issues, we will explain how to avoid it and/or fix it.
This document introduces Quarkus, an open source Java framework for building container-native microservices. Quarkus uses GraalVM to compile Java code ahead-of-time, resulting in applications that are up to 10x smaller and 100x faster to start than traditional Java applications. It is optimized for Kubernetes and serverless workloads. Quarkus achieves these benefits through ahead-of-time compilation using GraalVM, which analyzes code statically and removes unused classes and code to generate efficient native executables.
Rasheed Amir presents on Spring Boot. He discusses how Spring Boot aims to help developers build production-grade Spring applications quickly with minimal configuration. It provides default functionality for tasks like embedding servers and externalizing configuration. Spring Boot favors convention over configuration and aims to get developers started quickly with a single focus. It also exposes auto-configuration for common Spring and related technologies so that applications can take advantage of them without needing to explicitly configure them.
The document discusses building progressive web apps (PWAs). PWAs are web applications that are fast, reliable and engaging like native mobile apps. The key aspects of PWAs discussed are:
1) They use technologies like service workers, web app manifests and push notifications to provide app-like capabilities and improve user experience and engagement on the web.
2) An example of Flipkart, an Indian e-commerce site, is provided which saw 3x time spent and 40% returning visitors with their PWA implementation.
3) Core features discussed that make PWAs engaging include fast loading, adding to homescreen for app-like launching, handling flaky networks well, instant reloading and
Cross Site Request Forgery VulnerabilitiesMarco Morana
The document summarizes a meeting agenda about cross-site request forgery (CSRF). The agenda includes discussing CSRF's placement in the OWASP Top 10, describing the CSRF threat and impact, explaining how CSRF works, providing a threat scenario example, discussing CSRF attack vectors, and covering CSRF countermeasures and testing methods.
Build the Virtual Reality Web with A-FrameMozilla VR
A-Frame is a web framework from Mozilla that makes VR ridiculously easy. A-Frame brings 3D and VR to HTML and JavaScript, allowing us to use the languages, APIs, and tools we all know and love as web developers and designers. Brought to you by MozVR.
Presented
at Forward.js (http://forwardjs.com/)
by Kevin Ngo (https://twitter.com/ngokevin_)
on Wednesday, February 10
Source:
https://github.com/ngokevin/forwardjs-presentation/
Web Worker, Service Worker and WorkletsKeshav Gupta
Web workers allow offloading processor-intensive work from the main browser thread. Service workers act as proxies between the browser and network/cache. Worklets enable developers to hook into browser rendering processes like painting. Each type of worker runs on a separate thread and differs in usage and features. Browser storage limits vary but are generally in the megabytes, with prompts appearing after a threshold.
The OWASP Zed Attack Proxy (ZAP) is one of the world’s most popular free security tools and is actively maintained by hundreds of international volunteers. It can help you automatically find security vulnerabilities in your web applications while you are developing and testing your applications
AJAX allows for asynchronous data retrieval and updating of parts of a web page without reloading the entire page. It uses a combination of technologies including XML, JavaScript, CSS, HTML and the XMLHttpRequest object. The XMLHttpRequest object makes asynchronous HTTP requests to the server in the background and retrieves data from the server. This allows updating parts of the web page without interrupting the user's operation.
This document provides an overview and introduction to React JS. It discusses that React JS is a JavaScript library developed by Facebook for building user interfaces and reusable UI components. It encourages creation of reusable components that present data that changes over time. The document also covers React JS features, architecture, components, best practices, pros and cons, and provides useful links for examples and environment setup.
JQuery is a JavaScript library that simplifies HTML document manipulation, event handling, animations, and Ajax interactions. It works across browsers and makes tasks like DOM traversal and manipulation, event handling, animation, and Ajax much simpler. JQuery's versatility, extensibility, and cross-browser compatibility have made it popular, with millions of developers using it to write JavaScript.
A REST API uses HTTP requests with verbs like GET, POST, PUT, and DELETE to perform CRUD (Create, Read, Update, Delete) operations on resources identified by URLs. It provides a lightweight alternative to SOAP that returns data in JSON format and HTTP response codes. Well-known codes include 200 for OK, 201 for Created, 400 for Bad Request, and 404 for Not Found. REST enables building applications and platforms that can easily integrate new interfaces over time.
This document provides an introduction to Spring Boot, including its objectives, key principles, and features. It discusses how Spring Boot enables building standalone, production-grade Spring applications with minimal configuration. It demonstrates creating a "Hello World" REST app with one Java class. It also covers auto-configuration, application configuration, testing, supported technologies, case studies, and other features like production readiness and remote shell access.
Introduction to Akka Streams [Part-II]Knoldus Inc.
This document discusses Akka Streams including flows, operator fusion, and the graph DSL. It provides examples of using flows to perform transformations on streaming data between a source and sink. Operator fusion is described as optimizing performance by mitigating the cost of passing elements between stages. The graph DSL allows modeling data flows that can't be represented linearly, such as those involving fan-in and fan-out patterns. Partial graphs are discussed as reusable components that can be used to construct graphs according to different requirements.
Malo Denielou - No shard left behind: Dynamic work rebalancing in Apache BeamFlink Forward
http://flink-forward.org/kb_sessions/no-shard-left-behind-dynamic-work-rebalancing-in-apache-beam/
The Apache Beam (incubating) programming model is designed to support several advanced data processing features such as autoscaling and dynamic work rebalancing. In this talk, we will first explain how dynamic work rebalancing not only provides a general and robust solution to the problem of stragglers in traditional data processing pipelines, but also how it allows autoscaling to be truly effective. We will then present how dynamic work rebalancing works as implemented in Google Cloud Dataflow and which path other Apache Beam runners link Apache Flink can follow to benefit from it.
This document provides an overview of APIs and how they work. It begins with basic API concepts and definitions, then demonstrates how APIs are used by having programs interact with applications to access structured data without direct human interaction. It provides examples of common API uses for maps, login/authentication, payments, messaging and more. It also introduces the concept of webhooks which allow applications to "call" other services when data is available, rather than requiring the other service to periodically check via API calls. Overall it serves as a high-level introduction to APIs and webhooks for beginners.
The document discusses progressive web apps and React. It begins by introducing progressive web apps and their benefits over traditional web apps and native apps. It then covers prerequisites for building progressive web apps with React including HTML, JavaScript, Node.js and CLI knowledge. The document proceeds to discuss key React topics like components, virtual DOM, JSX, props and state. It also covers service workers, manifest files and tools for testing progressive web apps.
AngularJS is a structural framework for dynamic web apps.This presentation talks about Angular js Basics (MV* architecture), Two Way Data-Binding, Templates, Dependency Injection etc...
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
What is a Microservices architecture and how does it differ from a Service-Oriented Architecture? Should you use traditional REST APIs to bind services together? Or is it better to use a richer, more loosely-coupled protocol? This talk will start with quick recap of how we created systems over the past 20 years and how different architectures evolved from it. The talk will show how we piece services together in event driven systems, how we use a distributed log (event hub) to create a central, persistent history of events and what benefits we achieve from doing so.
Apache Kafka is a perfect match for building such an asynchronous, loosely-coupled event-driven backbone. Events trigger processing logic, which can be implemented in a more traditional as well as in a stream processing fashion. The talk will show the difference between a request-driven and event-driven communication and show when to use which. It highlights how the modern stream processing systems can be used to hold state both internally as well as in a database and how this state can be used to further increase independence of other services, the primary goal of a Microservices architecture.
This document discusses cross-site scripting (XSS) attacks and techniques for bypassing web application firewalls (WAFs) that aim to prevent XSS. It explains how XSS payloads can be embedded in XML, GIF images, and clipboard data to exploit browser parsing behaviors. The document also provides examples of encoding payloads in complex ways like JS-F**K to evade WAF signature rules.
1) Reactive programming is a new programming paradigm that is asynchronous and non-blocking, treating data flows as event-driven streams.
2) Traditional REST APIs are synchronous and blocking with limitations on concurrent users, while reactive programming supports asynchronous operations, uses fewer threads, and enables back pressure on data streams.
3) Key aspects of reactive programming include reactive streams specifications, publishers that represent data sources, subscribers, and asynchronous non-blocking libraries like RxJava and Project Reactor that implement the specifications.
Attacking and defending GraphQL applications: a hands-on approachDavide Cioccia
DevSecCon Seatlle 2019 - Workshop
The workshop is meant for developers, architects and security folks. During the workshop we will learn how to setup a GraphQL project, define a schema, create Query, Mutation and Subscription for a "fake" social network. We will learn what are the main security issues to consider when developing a GraphQL application:
Introspection: information disclosure
/graphql as a single point of failure (DoS attacks)
IDOR
Broken Access control
Injections
Once we get familiar with the issues, we will explain how to avoid it and/or fix it.
This document introduces Quarkus, an open source Java framework for building container-native microservices. Quarkus uses GraalVM to compile Java code ahead-of-time, resulting in applications that are up to 10x smaller and 100x faster to start than traditional Java applications. It is optimized for Kubernetes and serverless workloads. Quarkus achieves these benefits through ahead-of-time compilation using GraalVM, which analyzes code statically and removes unused classes and code to generate efficient native executables.
Rasheed Amir presents on Spring Boot. He discusses how Spring Boot aims to help developers build production-grade Spring applications quickly with minimal configuration. It provides default functionality for tasks like embedding servers and externalizing configuration. Spring Boot favors convention over configuration and aims to get developers started quickly with a single focus. It also exposes auto-configuration for common Spring and related technologies so that applications can take advantage of them without needing to explicitly configure them.
The document discusses building progressive web apps (PWAs). PWAs are web applications that are fast, reliable and engaging like native mobile apps. The key aspects of PWAs discussed are:
1) They use technologies like service workers, web app manifests and push notifications to provide app-like capabilities and improve user experience and engagement on the web.
2) An example of Flipkart, an Indian e-commerce site, is provided which saw 3x time spent and 40% returning visitors with their PWA implementation.
3) Core features discussed that make PWAs engaging include fast loading, adding to homescreen for app-like launching, handling flaky networks well, instant reloading and
Cross Site Request Forgery VulnerabilitiesMarco Morana
The document summarizes a meeting agenda about cross-site request forgery (CSRF). The agenda includes discussing CSRF's placement in the OWASP Top 10, describing the CSRF threat and impact, explaining how CSRF works, providing a threat scenario example, discussing CSRF attack vectors, and covering CSRF countermeasures and testing methods.
Build the Virtual Reality Web with A-FrameMozilla VR
A-Frame is a web framework from Mozilla that makes VR ridiculously easy. A-Frame brings 3D and VR to HTML and JavaScript, allowing us to use the languages, APIs, and tools we all know and love as web developers and designers. Brought to you by MozVR.
Presented
at Forward.js (http://forwardjs.com/)
by Kevin Ngo (https://twitter.com/ngokevin_)
on Wednesday, February 10
Source:
https://github.com/ngokevin/forwardjs-presentation/
Web Worker, Service Worker and WorkletsKeshav Gupta
Web workers allow offloading processor-intensive work from the main browser thread. Service workers act as proxies between the browser and network/cache. Worklets enable developers to hook into browser rendering processes like painting. Each type of worker runs on a separate thread and differs in usage and features. Browser storage limits vary but are generally in the megabytes, with prompts appearing after a threshold.
The OWASP Zed Attack Proxy (ZAP) is one of the world’s most popular free security tools and is actively maintained by hundreds of international volunteers. It can help you automatically find security vulnerabilities in your web applications while you are developing and testing your applications
AJAX allows for asynchronous data retrieval and updating of parts of a web page without reloading the entire page. It uses a combination of technologies including XML, JavaScript, CSS, HTML and the XMLHttpRequest object. The XMLHttpRequest object makes asynchronous HTTP requests to the server in the background and retrieves data from the server. This allows updating parts of the web page without interrupting the user's operation.
This document provides an overview and introduction to React JS. It discusses that React JS is a JavaScript library developed by Facebook for building user interfaces and reusable UI components. It encourages creation of reusable components that present data that changes over time. The document also covers React JS features, architecture, components, best practices, pros and cons, and provides useful links for examples and environment setup.
JQuery is a JavaScript library that simplifies HTML document manipulation, event handling, animations, and Ajax interactions. It works across browsers and makes tasks like DOM traversal and manipulation, event handling, animation, and Ajax much simpler. JQuery's versatility, extensibility, and cross-browser compatibility have made it popular, with millions of developers using it to write JavaScript.
A REST API uses HTTP requests with verbs like GET, POST, PUT, and DELETE to perform CRUD (Create, Read, Update, Delete) operations on resources identified by URLs. It provides a lightweight alternative to SOAP that returns data in JSON format and HTTP response codes. Well-known codes include 200 for OK, 201 for Created, 400 for Bad Request, and 404 for Not Found. REST enables building applications and platforms that can easily integrate new interfaces over time.
This document provides an introduction to Spring Boot, including its objectives, key principles, and features. It discusses how Spring Boot enables building standalone, production-grade Spring applications with minimal configuration. It demonstrates creating a "Hello World" REST app with one Java class. It also covers auto-configuration, application configuration, testing, supported technologies, case studies, and other features like production readiness and remote shell access.
Introduction to Akka Streams [Part-II]Knoldus Inc.
This document discusses Akka Streams including flows, operator fusion, and the graph DSL. It provides examples of using flows to perform transformations on streaming data between a source and sink. Operator fusion is described as optimizing performance by mitigating the cost of passing elements between stages. The graph DSL allows modeling data flows that can't be represented linearly, such as those involving fan-in and fan-out patterns. Partial graphs are discussed as reusable components that can be used to construct graphs according to different requirements.
Malo Denielou - No shard left behind: Dynamic work rebalancing in Apache BeamFlink Forward
http://flink-forward.org/kb_sessions/no-shard-left-behind-dynamic-work-rebalancing-in-apache-beam/
The Apache Beam (incubating) programming model is designed to support several advanced data processing features such as autoscaling and dynamic work rebalancing. In this talk, we will first explain how dynamic work rebalancing not only provides a general and robust solution to the problem of stragglers in traditional data processing pipelines, but also how it allows autoscaling to be truly effective. We will then present how dynamic work rebalancing works as implemented in Google Cloud Dataflow and which path other Apache Beam runners link Apache Flink can follow to benefit from it.
Apache Gearpump is a lightweight, real-time streaming engine that was conceived at Intel in 2014 and became an Apache incubating project in 2016. It uses a message-driven architecture based on Akka actors to provide out-of-order processing, exactly-once semantics, flow control, and fault tolerance. Gearpump supports dynamic DAGs, local and distributed deployments, and compatibility with Storm APIs.
Spark Streaming Recipes and "Exactly Once" Semantics RevisedMichael Spector
This document discusses stream processing with Apache Spark. It begins with an overview of Spark Streaming and its advantages over other frameworks like low latency and rich APIs. It then covers core Spark Streaming concepts like windowing and achieving "exactly once" semantics through checkpointing and write ahead logs. The document presents two examples of using Spark Streaming for analytics and aggregation with transactional and snapshotted approaches. It concludes with notes on deployment with Mesos/Marathon and performance tuning Spark Streaming jobs.
This document summarizes a presentation about Akka streams, which is a toolkit for building highly concurrent, distributed, and resilient message-driven applications on the JVM. It provides asynchronous back pressured stream processing using sources, sinks, and flows. Key features include actors for concurrency, clustering for location transparency and resilience, and integration with technologies like Kafka, Cassandra and HTTP. The document outlines how Akka streams work, how to write stream applications, and how streams can be used for scenarios like HTTP requests/responses and streaming data. It encourages contributions to Akka and discusses next steps like improved remoting and more stream connectors.
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...Flink Forward
The Apache Beam programming model is designed to support several advanced data processing features such as autoscaling and dynamic work rebalancing. In this talk, we will first explain how dynamic work rebalancing not only provides a general and robust solution to the problem of stragglers in traditional data processing pipelines, but also how it allows autoscaling to be truly effective. We will then present how dynamic work rebalancing works as implemented in the Google Cloud Dataflow runner and which path other Apache Beam runners link Apache Flink can follow to benefit from it.
This document contains the slides from a presentation on Akka Streams and Reactive Streams. It discusses key concepts like back pressure in Reactive Streams which allows asynchronous stream processing between different libraries. It also summarizes how Akka Streams works with linear flows, materialization, and integrating with actors to consume streams in an advanced way by treating grouped streams as individual streams processed by child actors.
This document discusses Akka Streams, which is a library for building reactive stream processing applications. It defines key concepts like streams, processing stages, back pressure, and flow control. It also covers topics like stream composition, materialization, using actors in streams, and includes code examples. The document is presented by Diego Pacheco, a principal software architect at Akka Streams.
This document provides an overview of Konrad Malawski's presentation on reactive stream processing with Akka Streams. The presentation covers Reactive Streams concepts like back pressure, the Reactive Streams specification and protocol, and how Akka Streams implements reactive stream processing using concepts like linear flows, flow graphs, and integration with Akka actors. It also discusses future plans for Akka Streams including API stabilization, improved testability, and potential features like visualizing flow graphs and distributing computation graphs.
This slides provides description for how apex can be used by a developer. The slide also provides information about various components of Apex Operator lifecycle.
This document discusses backpressure in Akka streams and provides examples using Envy. It begins with defining backpressure and its importance. It then explains how backpressure is implemented in Akka streams using the publisher/subscriber model and demand signaling. Examples are shown of handling backpressure when writing to MongoDB to avoid overloading it, and when receiving messages from RabbitMQ to limit the rate. The key aspects of backpressure covered are batching, throttling, and how it propagates upstream.
BigDataFest Building Modern Data Streaming Appsssuser73434e
BigDataFest: Building Modern Data Streaming Apps
2023
https://app.softserveinc.com/apply/big_data_fest/
CONFERENCE FOR
•DATA ENGINEERS•DATA SCIENTISTS•DATA ARCHITECTS
•DATA AND BUSINESS ANALYSTS•SOFTWARE DEVELOPERS
•ANYONE INTERESTED IN LEARNING MORE ABOUT DATA
Description
In my session, I will show you some best practices I have discovered over the last 7 years in building data streaming applications including IoT, CDC, Logs, and more.
In my modern approach, we utilize several open-source frameworks to maximize the best features of all. We often start with Apache NiFi as the orchestrator of streams flowing into Apache Pulsar and/or Apache Kafka. From there we build streaming ETL with Apache Spark and enhance events with serverless functions for ML and enrichment. We build continuous queries against our topics with Flink SQL. We will stream data into Iceberg and other data stores.
We use the best streaming tools for the current applications with FLiPN and FLaNK. https://www.datainmotion.dev/
Tim Spann is a Principal Developer Advocate at Cloudera where he works with Apache Pulsar, Apache Flink, Apache NiFi, Apache MXNet, TensorFlow, Apache Spark, big data, the IoT, machine learning, and deep learning. Tim has over a decade of experience with the IoT, big data, distributed computing, streaming technologies, and Java programming. Previously, he was a Principal Field Engineer at Cloudera, a Senior Solutions Architect at AirisData and a senior field engineer at Pivotal. He blogs for DZone, where he is the Big Data Zone leader, and runs a popular meetup in Princeton on big data, the IoT, deep learning, streaming, NiFi, the blockchain, and Spark. Tim is a frequent speaker at conferences such as IoT Fusion, Strata, ApacheCon, Data Works Summit Berlin, DataWorks Summit Sydney, and Oracle Code NYC. He holds a BS and MS in computer science.
https://www.datainmotion.dev/p/about-me.html
https://dzone.com/users/297029/bunkertor.html
https://conferences.oreilly.com/strata/strata-ny-2018/public/schedule/speaker/185963
Writing Asynchronous Programs with Scala & AkkaYardena Meymann
The document provides an overview of Yardena Meymann's background and experience working with asynchronous programming in Scala. It discusses some of the common tools and approaches for writing asynchronous programs in Scala, including Futures, Actors, Streams, HTTP clients/servers, and integration with Kafka. It highlights some of the challenges of asynchronous programming and how different tools address issues like error handling, retries, and backpressure.
Building a Reactive System with Akka - Workshop @ O'Reilly SAConf NYCKonrad Malawski
Intense 3 hour workshop covering Akka Actors, Cluster, Streams, HTTP and more. Including very advanced patterns.
Presented with Henrik Engstrom at O'Reilly Software Architecture Conference in New York City in 2017
BigDataSpain 2016: Stream Processing Applications with Apache ApexThomas Weise
Stream processing applications built on Apache Apex run on Hadoop clusters and typically power analytics use cases where availability, flexible scaling, high throughput, low latency and correctness are essential. These applications consume data from a variety of sources, including streaming sources like Apache Kafka, Kinesis or JMS, file based sources or databases. Processing results often need to be stored in external systems (sinks) for downstream consumers (pub-sub messaging, real-time visualization, Hive and other SQL databases etc.). Apex has the Malhar library with a wide range of connectors and other operators that are readily available to build applications. We will cover key characteristics like partitioning and processing guarantees, generic building blocks for new operators (write-ahead-log, incremental state saving, windowing etc.) and APIs for application specification.
Reactive stream processing using Akka streams Johan Andrén
This document discusses Akka streams and Reactive Streams. It provides an example of creating an Akka streams application that exposes an HTTP service serving an infinite stream of numbers. The example demonstrates how Akka streams provides asynchronous stream processing with back pressure to prevent out of memory errors.
Apache Kafka is a distributed streaming platform. It provides a high-throughput distributed messaging system that can handle trillions of events daily. Many large companies use Kafka for application logging, metrics collection, and powering real-time analytics. The current version is 0.8.2 and upcoming versions will include a new consumer, security features, and support for transactions.
This document discusses using Akka and microservices architecture for building distributed applications. It covers key Akka concepts like actors and messaging. It also discusses domain-driven design patterns for modeling application domains and boundaries. The document recommends using asynchronous messaging between microservices. It provides an example of using Apache Camel for enterprise integration. Finally, it discusses using Akka Clustering and Persistence for building highly available stateful services in a distributed fashion.
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...Lightbend
Akka Streams and its amazing handling of streaming with back-pressure should be no surprise to anyone. But it takes a couple of use cases to really see it in action - especially in use cases where the amount of work continues to increase as you’re processing it. This is where back-pressure really shines.
In this talk for Architects and Dev Managers by Akara Sucharitakul, Principal MTS for Global Platform Frameworks at PayPal, Inc., we look at how back-pressure based on Akka Streams and Kafka is being used at PayPal to handle very bursty workloads.
In addition, Akara will also share experiences in creating a platform based on Akka and Akka Streams that currently processes over 1 billion transactions per day (on just 8 VMs), with the aim of helping teams adopt these technologies. In this webinar, you will:
*Start with a sample web crawler use case to examine what happens when each processing pass expands to a larger and larger workload to process.
*Review how we use the buffering capabilities in Kafka and the back-pressure with asynchronous processing in Akka Streams to handle such bursts.
*Look at lessons learned, plus some constructive “rants” about the architectural components, the maturity, or immaturity you’ll expect, and tidbits and open source goodies like memory-mapped stream buffers that can be helpful in other Akka Streams and/or Kafka use cases.
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...Dan Halperin
Apache Beam is a unified programming model for efficient and portable data processing pipelines. It provides abstractions like PCollections, sources/readers, ParDo, GroupByKey, side inputs, and windowing that hide complexity and allow runners to optimize efficiency. Beam supports both batch and streaming workloads on different distributed processing backends. It gives runners control over bundle size, splitting, and triggering to make tradeoffs between latency, throughput, and efficiency based on workload and cluster resources. This allows the same pipeline to be executed efficiently in different contexts without changes to the user code.
Similar to Introduction to Akka Streams [Part-I] (20)
Managing State & HTTP Requests In Ionic.Knoldus Inc.
Ionic is a complete open-source SDK for hybrid mobile app development created by Max Lynch, Ben Sperry, and Adam Bradley of Drifty Co. in 2013.The original version was released in 2013 and built on top of AngularJS and Apache Cordova. However, the latest release was re-built as a set of Web Components using StencilJS, allowing the user to choose any user interface framework, such as Angular, React or Vue.js. It also allows the use of Ionic components with no user interface framework at all.[4] Ionic provides tools and services for developing hybrid mobile, desktop, and progressive web apps based on modern web development technologies and practices, using Web technologies like CSS, HTML5, and Sass. In particular, mobile apps can be built with these Web technologies and then distributed through native app stores to be installed on devices by utilizing Cordova or Capacitor.
Facilitation Skills - When to Use and Why.pptxKnoldus Inc.
In this session, we will discuss the world of Agile methodologies and how facilitation plays a crucial role in optimizing collaboration, communication, and productivity within Scrum teams. We'll dive into the key facets of effective facilitation and how it can transform sprint planning, daily stand-ups, sprint reviews, and retrospectives. The participants will gain valuable insights into the art of choosing the right facilitation techniques for specific scenarios, aligning with Agile values and principles. We'll explore the "why" behind each technique, emphasizing the importance of adaptability and responsiveness in the ever-evolving Agile landscape. Overall, this session will help participants better understand the significance of facilitation in Agile and how it can enhance the team's productivity and communication.
Performance Testing at Scale Techniques for High-Volume ServicesKnoldus Inc.
Delve into advanced techniques for conducting performance testing at scale, aiming to simulate high-volume services and fortify applications against heavy loads. Uncover strategic approaches to optimize test scenarios, ensuring thorough evaluation and robustness in the face of increased demand. Explore methodologies that go beyond conventional testing practices, addressing the complexities associated with large-scale performance evaluations.
Snowflake and its features (Presentation)Knoldus Inc.
In this session, we will explore the groundbreaking features that make Snowflake a leader in cloud-based data warehousing, transforming the way organizations manage and analyze data. We will also explore Snowflake's multi-cluster, shared data architecture that enables simultaneous data access by multiple compute clusters, enabling efficient and parallelized data processing. We will explore Snowflake's various capabilities like its zero-copy cloning feature, Security and governance are paramount in Snowflake, with features such as encryption, multi-factor authentication, and granular access controls. Snowflake's global data replication ensures data availability and resilience by allowing replication across different regions. Lastly, we will also take a look at Snowflake's integrations with popular business intelligence tools and analytics solutions that streamline workflows, making it easy for organizations to incorporate Snowflake into their existing processes.
Terratest - Automation testing of infrastructureKnoldus Inc.
TerraTest is a testing framework specifically designed for testing infrastructure code written with HashiCorp's Terraform. It helps validate that your Terraform configurations create the desired infrastructure, and it can be used for both unit testing and integration testing.
Getting Started with Apache Spark (Scala)Knoldus Inc.
In this session, we are going to cover Apache Spark, the architecture of Apache Spark, Data Lineage, Direct Acyclic Graph(DAG), and many more concepts. Apache Spark is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters.
Secure practices with dot net services.pptxKnoldus Inc.
Securing .NET services is paramount for protecting applications and data. Employing encryption, strong authentication, and adherence to best coding practices ensures resilience against potential threats, enhancing overall cybersecurity posture.
Distributed Cache with dot microservicesKnoldus Inc.
A distributed cache is a cache shared by multiple app servers, typically maintained as an external service to the app servers that access it. A distributed cache can improve the performance and scalability of an ASP.NET Core app, especially when the app is hosted by a cloud service or a server farm. Here we will look into implementation of Distributed Caching Strategy with Redis in Microservices Architecture focusing on cache synchronization, eviction policies, and cache consistency.
Introduction to gRPC Presentation (Java)Knoldus Inc.
gRPC, which stands for Remote Procedure Call, is an open-source framework developed by Google. It is designed for building efficient and scalable distributed systems. gRPC enables communication between client and server applications by defining a set of services and message types using Protocol Buffers (protobuf) as the interface definition language. gRPC provides a way for applications to call methods on a remote server as if they were local procedures, making it a powerful tool for building distributed and microservices-based architectures.
Using InfluxDB for real-time monitoring in JmeterKnoldus Inc.
Explore the integration of InfluxDB with JMeter for real-time performance monitoring. This session will cover setting up InfluxDB to capture JMeter metrics, configuring JMeter to send data to InfluxDB, and visualizing the results using Grafana. Learn how to leverage this powerful combination to gain real-time insights into your application's performance, enabling proactive issue detection and faster resolution.
Intoduction to KubeVela Presentation (DevOps)Knoldus Inc.
KubeVela is an open-source platform for modern application delivery and operation on Kubernetes. It is designed to simplify the deployment and management of applications in a Kubernetes environment. KubeVela is a modern software delivery platform that makes deploying and operating applications across today's hybrid, multi-cloud environments easier, faster and more reliable. KubeVela is infrastructure agnostic, programmable, yet most importantly, application-centric. It allows you to build powerful software, and deliver them anywhere!
Stakeholder Management (Project Management) PresentationKnoldus Inc.
A stakeholder is someone who has an interest in or who is affected by your project and its outcome. This may include both internal and external entities such as the members of the project team, project sponsors, executives, customers, suppliers, partners and the government. Stakeholder management is the process of managing the expectations and the requirements of these stakeholders.
Introduction To Kaniko (DevOps) PresentationKnoldus Inc.
Kaniko is an open-source tool developed by Google that enables building container images from a Dockerfile inside a Kubernetes cluster without requiring a Docker daemon. Kaniko executes each command in the Dockerfile in the user space using an executor image, which runs inside a container, such as a Kubernetes pod. This allows building container images in environments where the user doesn’t have root access, like a Kubernetes cluster.
Efficient Test Environments with Infrastructure as Code (IaC)Knoldus Inc.
In the rapidly evolving landscape of software development, the need for efficient and scalable test environments has become more critical than ever. This session, "Streamlining Development: Unlocking Efficiency through Infrastructure as Code (IaC) in Test Environments," is designed to provide an in-depth exploration of how leveraging IaC can revolutionize your testing processes and enhance overall development productivity.
Exploring Terramate DevOps (Presentation)Knoldus Inc.
Terramate is a code generator and orchestrator for Terraform that enhances Terraform's capabilities by adding features such as code generation, stacks, orchestration, change detection, globals, and more . It's primarily designed to help manage Terraform code at scale more efficiently . Terramate is particularly useful for managing multiple Terraform stacks, providing support for change detection and code generation 2. It allows you to create relationships between stacks to improve your understanding and control over your infrastructure . One of the key features of Terramate is its ability to detect changes at both the stack and module level. This capability allows you to identify which stacks and resources have been altered and selectively determine where you should execute commands.
Clean Code in Test Automation Differentiating Between the Good and the BadKnoldus Inc.
This session focuses on the principles of writing clean, maintainable, and efficient code in the context of test automation. The session will highlight the characteristics that distinguish good test automation code from bad, ultimately leading to more reliable and scalable testing frameworks.
Integrating AI Capabilities in Test AutomationKnoldus Inc.
Explore the integration of artificial intelligence in test automation. Understand how AI can enhance test planning, execution, and analysis, leading to more efficient and reliable testing processes. Explore the cutting-edge integration of Artificial Intelligence (AI) capabilities in Test Automation, a transformative approach shaping the future of software testing. This session will delve into practical applications, benefits, and considerations associated with infusing AI into test automation workflows.
State Management with NGXS in Angular.pptxKnoldus Inc.
NGXS is a state management pattern and library for Angular. NGXS acts as a single source of truth for your application's state - providing simple rules for predictable state mutations. In this session we will go through the main for components of NGXS -Store, Actions, State, and Select.
Authentication in Svelte using cookies.pptxKnoldus Inc.
Svelte streamlines authentication with cookies, offering a secure and seamless user experience. Effortlessly manage sessions by storing tokens in cookies, ensuring persistent logins. With Svelte's simplicity, implement robust authentication mechanisms, enhancing user security and interaction.
OAuth2 Implementation Presentation (Java)Knoldus Inc.
The OAuth 2.0 authorization framework is a protocol that allows a user to grant a third-party web site or application access to the user's protected resources, without necessarily revealing their long-term credentials or even their identity. It is commonly used in scenarios such as user authentication in web and mobile applications and enables a more secure and user-friendly authorization process.
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...kalichargn70th171
Visual testing plays a vital role in ensuring that software products meet the aesthetic requirements specified by clients in functional and non-functional specifications. In today's highly competitive digital landscape, users expect a seamless and visually appealing online experience. Visual testing, also known as automated UI testing or visual regression testing, verifies the accuracy of the visual elements that users interact with.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Consistent toolbox talks are critical for maintaining workplace safety, as they provide regular opportunities to address specific hazards and reinforce safe practices.
These brief, focused sessions ensure that safety is a continual conversation rather than a one-time event, which helps keep safety protocols fresh in employees' minds. Studies have shown that shorter, more frequent training sessions are more effective for retention and behavior change compared to longer, infrequent sessions.
Engaging workers regularly, toolbox talks promote a culture of safety, empower employees to voice concerns, and ultimately reduce the likelihood of accidents and injuries on site.
The traditional method of conducting safety talks with paper documents and lengthy meetings is not only time-consuming but also less effective. Manual tracking of attendance and compliance is prone to errors and inconsistencies, leading to gaps in safety communication and potential non-compliance with OSHA regulations. Switching to a digital solution like Safelyio offers significant advantages.
Safelyio automates the delivery and documentation of safety talks, ensuring consistency and accessibility. The microlearning approach breaks down complex safety protocols into manageable, bite-sized pieces, making it easier for employees to absorb and retain information.
This method minimizes disruptions to work schedules, eliminates the hassle of paperwork, and ensures that all safety communications are tracked and recorded accurately. Ultimately, using a digital platform like Safelyio enhances engagement, compliance, and overall safety performance on site. https://safelyio.com/
Malibou Pitch Deck For Its €3M Seed Roundsjcobrien
French start-up Malibou raised a €3 million Seed Round to develop its payroll and human resources
management platform for VSEs and SMEs. The financing round was led by investors Breega, Y Combinator, and FCVC.
DevOps Consulting Company | Hire DevOps Servicesseospiralmantra
Spiral Mantra excels in providing comprehensive DevOps services, including Azure and AWS DevOps solutions. As a top DevOps consulting company, we offer controlled services, cloud DevOps, and expert consulting nationwide, including Houston and New York. Our skilled DevOps engineers ensure seamless integration and optimized operations for your business. Choose Spiral Mantra for superior DevOps services.
https://www.spiralmantra.com/devops/
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
Transforming Product Development using OnePlan To Boost Efficiency and Innova...OnePlan Solutions
Ready to overcome challenges and drive innovation in your organization? Join us in our upcoming webinar where we discuss how to combat resource limitations, scope creep, and the difficulties of aligning your projects with strategic goals. Discover how OnePlan can revolutionize your product development processes, helping your team to innovate faster, manage resources more effectively, and deliver exceptional results.
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
React.js, a JavaScript library developed by Facebook, has gained immense popularity for building user interfaces, especially for single-page applications. Over the years, React has evolved and expanded its capabilities, becoming a preferred choice for mobile app development. This article will explore why React.js is an excellent choice for the Best Mobile App development company in Noida.
Visit Us For Information: https://www.linkedin.com/pulse/what-makes-reactjs-stand-out-mobile-app-development-rajesh-rai-pihvf/
A neural network is a machine learning program, or model, that makes decisions in a manner similar to the human brain, by using processes that mimic the way biological neurons work together to identify phenomena, weigh options and arrive at conclusions.
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...XfilesPro
Wondering how X-Sign gained popularity in a quick time span? This eSign functionality of XfilesPro DocuPrime has many advancements to offer for Salesforce users. Explore them now!
🏎️Tech Transformation: DevOps Insights from the Experts 👩💻campbellclarkson
Connect with fellow Trailblazers, learn from industry experts Glenda Thomson (Salesforce, Principal Technical Architect) and Will Dinn (Judo Bank, Salesforce Development Lead), and discover how to harness DevOps tools with Salesforce.
Enhanced Screen Flows UI/UX using SLDS with Tom KittPeter Caitens
Join us for an engaging session led by Flow Champion, Tom Kitt. This session will dive into a technique of enhancing the user interfaces and user experiences within Screen Flows using the Salesforce Lightning Design System (SLDS). This technique uses Native functionality, with No Apex Code, No Custom Components and No Managed Packages required.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
2. Agenda
1. What are Streams.
2. Challenges using Streams.
3. Goals of Streams Application.
4. Akka Streams.
3. What are Streams ???
Stream of elements that could have not end.
Or
Conceptually, a stream is transient in that it only exist
as long as there producer providing elements to the
stream and a consumer reading elements from the
stream.
4. Challenges using Streams.
✔ We don’t know how much data we will handle because
data may be produce any time.
✔ Speeds of producer and consumer varying in streams.
5. Goals of Stream Application.
✔ Bounded Memory Use: Never read all elements into
memory. Possibly collect elements into temporary
buffer.
✔ Asynchronous Non Blocking: Resources should be
used efficiently and blocking threads should be limited
as much as possible.
✔ Varying Speed: Producer and consumer should be
able to operate on different speed.
6. Akka Stream
✔ Akka Stream is a module on top of Akka to make the
ingestion and processing of streams easier, using the
actor model under the hood.
✔ Akka Stream provide a way to handle unbounded
stream with bounded buffer.
8. Akka Stream
Akka Stream usually involve in two steps
✔ Define Blueprint: A graph of streaming components.
The graph define how stream need to processed.
✔ Execute The Blueprint: Run the graph on an
ActorSystem. The graph is turned into actors that do
all the work required to actually stream the data.
10. Akka Stream: Materializer
✔ Containstheconfigurableoptionson how to run thestream.
✔ Help usto decidewhat dispatcher isto useand how to sizetheinput and
output buffers.
✔ It hepsusto convertstheRunnableGraph into actors, which execute
thegraph.
When will AkkaStream start
Materializing???
Answer: runnableGraph.run()
11. Akka Stream: Play the Example
✔ ActorMaterializer checksif theSource and Sink in thegraph
areproperly connected, and requeststheSource and Sink internal to
setup resources.
✔ Internally fromPath create aFileSource(akka) and
FileSource(akka) is asked to create its resources and creates
a FilePublisher(akka) actor and open
FileChannel(java.nio).
12. Akka Stream: Play the Example
✔ Internally toPath create a Sink from SinkModule(akka) and
FileSink(akka) creates a FileSubscriber(akka) actor and open
FileChannel(java.nio).
✔ Internally to method is used to combines the module of Source and
Sink together into one module.
13. Akka Stream: Play the Example
✔ Now ActorMaterializer subscribes, subscribers to publishers
according to how modules are connected, like in our case
FileSubscriber to the FilePublisher.
✔ Now, the FilePublisher reads any ByteStrings from the file until
it reaches ends and FileSubscriber writes any ByteStrings it
receives from the FilePublisher to the output file.
14. Akka Stream: Play the Example
✔ The FilePublisher completes the stream once it has read all the
data from the file and The FileSubscriber receives and
OnComplete message when this happens and close the file that was
writter to.
15. Akka Stream: Combining Materialized
val runnableGraph: RunnableGraph[Future[IOResult]] = source.to(sink)
16. Akka Stream: Combining Materialized
val runnableGraph: RunnableGraph[Future[IOResult]] =
source.toMat(sink)(Keep.left)
val runnableGraph: RunnableGraph[Future[IOResult]] =
source.toMat(sink)(Keep.right)
val graphBoth: RunnableGraph[(Future[IOResult], Future[IOResult])] =
source.toMat(sink) (Keep.both)
17. Akka Stream: Back Pressure
Back Pressure is a simple protocol that allows the consumer to
requests, how my data it can consume at a time, effectively
provide a feedback channel to producer.
18. Akka Stream: Back Pressure
When will Back Pressure comes into picture ???
Ans: Stream Pull-Push Model (Slow Subscriber & Fast Producer)
Rules for Publisher:
✔ Stop generating elements. (Not all publisher supports)
✔ Buffer the elements in a bounded manner until more demands
shows up.
✔ Drop elements until more demands shows up.
✔ Stop the stream if it can’t take any of the preceding actions.
19. Akka Stream: Internal Buffers
In AkkaStream, instead of requesting and publishing every single
element, internally batches are requested and published.
Request Strategy
✔ OneByOneRequestStrategy: Requests one more element when
remainingRequested is 0.
✔ ZeroRequestStrategy: When request is only controlled with manual calls.
✔ WatermarkRequestStrategy: Requests up to the highWatermark when
the remainingRequested is below the lowWatermark.
20. Akka Stream: Internal Buffers
What strategy are used by our example ???
Ans: WatermarkRequestStrategy
Requests up to the highWatermark when the remainingRequested is
below the lowWatermark.
Default Values:
✔ Chunk Read Size: 8KB
✔ Maximum Input Buffer Size: 16 Elements
Customize Values:
✔ akka.stream.materializer.maxinputbuffersize
✔ ActorMaterializerSettings
21. References:
✔ AkkainAction by Raymond Roestenburg, Rob Bakker, Rob Williams.
✔ MasteringAkkaby Christian Baxter
✔ https://doc.akka.io/api/akka/current/akka/stream/index.html?_ga=2.25006541