SlideShare uma empresa Scribd logo
1 de 137
Baixar para ler offline
Improving Streams Scalability with
Transactional StateStores (KIP-892)
Nick Telford
46 sub-topologies
46 sub-topologies
579 Processors
46 sub-topologies
579 Processors
45 StateStores
1. The Problem
1. The Problem
2. The Solution
1. The Problem
2. The Solution
3. Limitations
1. The Problem
2. The Solution
3. Limitations
4. Future Work
Transaction
TransactionAborted
TransactionAbortedException
Random Access Structure
Commit Log Structure
Random Access Structure
Commit Log Structure
Random Access Structure
Commit Log Structure
Random Access Structure
Random Access Structure Commit Log Structure
StateStore
Changelog Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Restore Time
Changelog Size
Transient Network Problems
Transient Network Problems
Misconfigured Clients
Transient Network Problems
Misconfigured Clients
Bugs
Restore Time
Restore Time
KIP-892
Transactional StateStores
DISCLAIMER
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
commit
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
Interactive
Query
Interactive
Query
Interactive
Query
default.state.isolation.level
READ_UNCOMMITTED
READ_COMMITTED
READ_UNCOMMITTED
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Interactive
Query
READ_UNCOMMITTED
StateStore
Kafka Streams
Thread
Source Topic Output Topic
Interactive
Query Changelog Topic
StateStore
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
Interactive
Query
READ_COMMITTED
Changelog Topic
StateStore
Kafka Streams
Thread
Source Topic Output Topic
Interactive
Query
READ_COMMITTED
commit
Transaction
Buffer Changelog Topic
processing.guarantee READ_UNCOMMITTED READ_COMMITTED
at-least-once O(1) O(1)
Restore time complexity
processing.guarantee READ_UNCOMMITTED READ_COMMITTED
at-least-once O(1) O(1)
exactly-once(-v2|-beta
)
O(n) O(1)
Restore time complexity
processing.guarantee READ_UNCOMMITTED READ_COMMITTED
at-least-once O(1) O(1)
exactly-once(-v2|-beta
)
O(n) O(1)
Restore time complexity
processing.guarantee commit.interval.ms default.state.isolation.level
at-least-once 30 seconds READ_UNCOMMITTED
Default Configuration
processing.guarantee commit.interval.ms default.state.isolation.level
at-least-once 30 seconds READ_UNCOMMITTED
exactly-once(-v2|-beta
)
100 milliseconds READ_COMMITTED
Default Configuration
WriteBatchWithIndex
WriteBatchWithIndex
WriteBatchWithIndex
WriteBatchWithIndex#getFromBatchAndDB
WriteBatchWithIndex#getFromBatchAndDB
WriteBatchWithIndex#newIteratorWithBase
RocksDB
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
WriteBatchWithIndex
Interactive
Query
READ_COMMITTED
RocksDB
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
WriteBatchWithIndex
Interactive
Query
READ_COMMITTED
commit
RocksDB
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
WriteBatchWithIndex
Interactive
Query
READ_COMMITTED
RocksDB
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
WriteBatchWithIndex
Interactive
Query
READ_COMMITTED
Performance vs direct put()
Benchmark by Adam Retter
statestore.max.uncommitted.bytes
statestore.max.uncommitted.bytes
67108864 (default)
statestore.max.uncommitted.bytes
67108864 (default)
-1 (unbounded)
public interface StateStore {
}
public interface StateStore {
default long approximateNumUncommittedBytes() {
return 0;
}
}
30
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
commit
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
.checkpoint
checkpoint
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
.checkpoint
checkpoint
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
.checkpoint
changelog offsets
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
.checkpoint
RocksDB
memtable .sst
RocksDB
memtable .sst
public interface StateStore {
void flush();
}
-rw-r--r-- 1 root root 36 Sep 24 19:31 IDENTITY
-rw-r--r-- 1 root root 68779002 Sep 24 20:19 000106.sst
-rw-r--r-- 1 root root 68795231 Sep 24 20:19 000107.sst
-rw-r--r-- 1 root root 68804429 Sep 24 20:19 000108.sst
-rw-r--r-- 1 root root 68803477 Sep 24 20:19 000109.sst
-rw-r--r-- 1 root root 68800584 Sep 24 20:19 000110.sst
-rw-r--r-- 1 root root 22270913 Sep 24 20:19 000113.sst
-rw-r--r-- 1 root root 14442 Sep 28 12:51
OPTIONS-000283
-rw-r--r-- 1 root root 16 Oct 5 09:13 CURRENT
-rw-r--r-- 1 root root 14442 Oct 5 09:13
OPTIONS-000303
-rw-r--r-- 1 root root 0 Oct 5 09:13 000301.log
-rw-r--r-- 1 root root 68787908 Oct 5 09:14 000306.sst
-rw-r--r-- 1 root root 68815184 Oct 5 09:14 000307.sst
-rw-r--r-- 1 root root 68810941 Oct 5 09:14 000308.sst
-rw-r--r-- 1 root root 68805994 Oct 5 09:14 000309.sst
-rw-r--r-- 1 root root 24334112 Oct 5 09:14 000310.sst
-rw-r--r-- 1 root root 2386 Oct 7 20:28 000312.sst
-rw-r--r-- 1 root root 2312 Oct 7 20:28 000313.sst
-rw-r--r-- 1 root root 2177 Oct 7 20:28 000314.sst
-rw-r--r-- 1 root root 2428 Oct 7 20:28 000315.sst
-rw-r--r-- 1 root root 2311 Oct 7 20:28 000316.sst
-rw-r--r-- 1 root root 2375 Oct 7 20:28 000317.sst
database created full compaction
5 10 15 20 25
days
0 30
periodic_compaction_seconds: 2592000
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
.checkpoint
checkpoint?
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
commit
StateStore
+ offsets
public interface StateStore {
default boolean managesOffsets() {
return false;
}
}
public interface StateStore {
default boolean managesOffsets() {
return false;
}
default void commit(Map<TopicPartition, Long> changelogOffsets) {
flush();
}
}
public interface StateStore {
default boolean managesOffsets() {
return false;
}
default void commit(Map<TopicPartition, Long> changelogOffsets) {
flush();
}
default Long getCommittedOffset(TopicPartition partition) {
return null;
}
}
public interface StateStore {
@Deprecated
default void flush() {}
}
--- MyCustomProcessor.java
+++ MyCustomProcessor.java
@@ -120 +120 @@
-store.flush();
+context.commit();
RocksDB
column family A
memtable
column family B
memtable
RocksDB
column family A
memtable
.sst
column family B
memtable
.sst
RocksDB
data
memtable
offsets
memtable
.sst
.sst
RocksDB
data
memtable
offsets
memtable
.sst
.sst
Restore Times Before/After KIP-892
> 3 days
< 1 second
LIMITATIONS
READ_COMMITTED in-memory stores
READ_COMMITTED in-memory stores
Thread-safe transaction buffer
READ_COMMITTED in-memory stores
Thread-safe transaction buffer
Per-query isolation levels
TL;DW
KIP-892
Transactional StateStores
processing.guarantee default.state.isolation.level
at-least-once READ_UNCOMMITTED READ_COMMITTED
exactly-once(-v2|-beta) READ_UNCOMMITTED READ_COMMITTED
full restore on error
no restore on error
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
StateStore
Changelog Topic
Kafka Streams
Thread
Source Topic Output Topic
Transaction
Buffer
commit
Q&A

Mais conteúdo relacionado

Semelhante a Improving Streams Scalability with Transactional StateStores (KIP-892)

Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019
Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019
Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019
confluent
 
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
confluent
 

Semelhante a Improving Streams Scalability with Transactional StateStores (KIP-892) (20)

Apache Kafka, and the Rise of Stream Processing
Apache Kafka, and the Rise of Stream ProcessingApache Kafka, and the Rise of Stream Processing
Apache Kafka, and the Rise of Stream Processing
 
Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019
Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019
Kafka Streams at Scale (Deepak Goyal, Walmart Labs) Kafka Summit London 2019
 
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
Consistency and Completeness: Rethinking Distributed Stream Processing in Apa...
 
Big Data LDN 2018: STREAMING DATA MICROSERVICES WITH AKKA STREAMS, KAFKA STRE...
Big Data LDN 2018: STREAMING DATA MICROSERVICES WITH AKKA STREAMS, KAFKA STRE...Big Data LDN 2018: STREAMING DATA MICROSERVICES WITH AKKA STREAMS, KAFKA STRE...
Big Data LDN 2018: STREAMING DATA MICROSERVICES WITH AKKA STREAMS, KAFKA STRE...
 
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
 
Tuning Flink For Robustness And Performance
Tuning Flink For Robustness And PerformanceTuning Flink For Robustness And Performance
Tuning Flink For Robustness And Performance
 
Building a SIMD Supported Vectorized Native Engine for Spark SQL
Building a SIMD Supported Vectorized Native Engine for Spark SQLBuilding a SIMD Supported Vectorized Native Engine for Spark SQL
Building a SIMD Supported Vectorized Native Engine for Spark SQL
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
 
Apache Spark Structured Streaming + Apache Kafka = ♡
Apache Spark Structured Streaming + Apache Kafka = ♡Apache Spark Structured Streaming + Apache Kafka = ♡
Apache Spark Structured Streaming + Apache Kafka = ♡
 
Data Streaming Ecosystem Management at Booking.com
Data Streaming Ecosystem Management at Booking.com Data Streaming Ecosystem Management at Booking.com
Data Streaming Ecosystem Management at Booking.com
 
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
Performance Analysis and Optimizations for Kafka Streams Applications (Guozha...
 
Performance Analysis and Optimizations for Kafka Streams Applications
Performance Analysis and Optimizations for Kafka Streams ApplicationsPerformance Analysis and Optimizations for Kafka Streams Applications
Performance Analysis and Optimizations for Kafka Streams Applications
 
Squeak DBX
Squeak DBXSqueak DBX
Squeak DBX
 
The Wonderful World of Apache Kafka
The Wonderful World of Apache KafkaThe Wonderful World of Apache Kafka
The Wonderful World of Apache Kafka
 
Turning OpenStack Swift into a VM storage platform
Turning OpenStack Swift into a VM storage platformTurning OpenStack Swift into a VM storage platform
Turning OpenStack Swift into a VM storage platform
 
Moving from Big Data to Fast Data? Here's How To Pick The Right Streaming Engine
Moving from Big Data to Fast Data? Here's How To Pick The Right Streaming EngineMoving from Big Data to Fast Data? Here's How To Pick The Right Streaming Engine
Moving from Big Data to Fast Data? Here's How To Pick The Right Streaming Engine
 
10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summit10 Lessons Learned from using Kafka with 1000 microservices - java global summit
10 Lessons Learned from using Kafka with 1000 microservices - java global summit
 
How to build 1000 microservices with Kafka and thrive
How to build 1000 microservices with Kafka and thriveHow to build 1000 microservices with Kafka and thrive
How to build 1000 microservices with Kafka and thrive
 
Spark streaming + kafka 0.10
Spark streaming + kafka 0.10Spark streaming + kafka 0.10
Spark streaming + kafka 0.10
 
Advanced Caching Patterns used by 2000 microservices - Code Motion
Advanced Caching Patterns used by 2000 microservices - Code MotionAdvanced Caching Patterns used by 2000 microservices - Code Motion
Advanced Caching Patterns used by 2000 microservices - Code Motion
 

Mais de HostedbyConfluent

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
HostedbyConfluent
 
Evolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at TrendyolEvolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at Trendyol
HostedbyConfluent
 

Mais de HostedbyConfluent (20)

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Renaming a Kafka Topic | Kafka Summit London
Renaming a Kafka Topic | Kafka Summit LondonRenaming a Kafka Topic | Kafka Summit London
Renaming a Kafka Topic | Kafka Summit London
 
Evolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at TrendyolEvolution of NRT Data Ingestion Pipeline at Trendyol
Evolution of NRT Data Ingestion Pipeline at Trendyol
 
Ensuring Kafka Service Resilience: A Dive into Health-Checking Techniques
Ensuring Kafka Service Resilience: A Dive into Health-Checking TechniquesEnsuring Kafka Service Resilience: A Dive into Health-Checking Techniques
Ensuring Kafka Service Resilience: A Dive into Health-Checking Techniques
 
Exactly-once Stream Processing with Arroyo and Kafka
Exactly-once Stream Processing with Arroyo and KafkaExactly-once Stream Processing with Arroyo and Kafka
Exactly-once Stream Processing with Arroyo and Kafka
 
Fish Plays Pokemon | Kafka Summit London
Fish Plays Pokemon | Kafka Summit LondonFish Plays Pokemon | Kafka Summit London
Fish Plays Pokemon | Kafka Summit London
 
Tiered Storage 101 | Kafla Summit London
Tiered Storage 101 | Kafla Summit LondonTiered Storage 101 | Kafla Summit London
Tiered Storage 101 | Kafla Summit London
 
Building a Self-Service Stream Processing Portal: How And Why
Building a Self-Service Stream Processing Portal: How And WhyBuilding a Self-Service Stream Processing Portal: How And Why
Building a Self-Service Stream Processing Portal: How And Why
 
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
 
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
 
Navigating Private Network Connectivity Options for Kafka Clusters
Navigating Private Network Connectivity Options for Kafka ClustersNavigating Private Network Connectivity Options for Kafka Clusters
Navigating Private Network Connectivity Options for Kafka Clusters
 
Apache Flink: Building a Company-wide Self-service Streaming Data Platform
Apache Flink: Building a Company-wide Self-service Streaming Data PlatformApache Flink: Building a Company-wide Self-service Streaming Data Platform
Apache Flink: Building a Company-wide Self-service Streaming Data Platform
 
Explaining How Real-Time GenAI Works in a Noisy Pub
Explaining How Real-Time GenAI Works in a Noisy PubExplaining How Real-Time GenAI Works in a Noisy Pub
Explaining How Real-Time GenAI Works in a Noisy Pub
 
TL;DR Kafka Metrics | Kafka Summit London
TL;DR Kafka Metrics | Kafka Summit LondonTL;DR Kafka Metrics | Kafka Summit London
TL;DR Kafka Metrics | Kafka Summit London
 
A Window Into Your Kafka Streams Tasks | KSL
A Window Into Your Kafka Streams Tasks | KSLA Window Into Your Kafka Streams Tasks | KSL
A Window Into Your Kafka Streams Tasks | KSL
 
Mastering Kafka Producer Configs: A Guide to Optimizing Performance
Mastering Kafka Producer Configs: A Guide to Optimizing PerformanceMastering Kafka Producer Configs: A Guide to Optimizing Performance
Mastering Kafka Producer Configs: A Guide to Optimizing Performance
 
Data Contracts Management: Schema Registry and Beyond
Data Contracts Management: Schema Registry and BeyondData Contracts Management: Schema Registry and Beyond
Data Contracts Management: Schema Registry and Beyond
 
Code-First Approach: Crafting Efficient Flink Apps
Code-First Approach: Crafting Efficient Flink AppsCode-First Approach: Crafting Efficient Flink Apps
Code-First Approach: Crafting Efficient Flink Apps
 
Debezium vs. the World: An Overview of the CDC Ecosystem
Debezium vs. the World: An Overview of the CDC EcosystemDebezium vs. the World: An Overview of the CDC Ecosystem
Debezium vs. the World: An Overview of the CDC Ecosystem
 
Beyond Tiered Storage: Serverless Kafka with No Local Disks
Beyond Tiered Storage: Serverless Kafka with No Local DisksBeyond Tiered Storage: Serverless Kafka with No Local Disks
Beyond Tiered Storage: Serverless Kafka with No Local Disks
 

Último

“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
Muhammad Subhan
 

Último (20)

Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistan
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 

Improving Streams Scalability with Transactional StateStores (KIP-892)