Click Below to Get the Code

Browse, clone, and build from real-world templates powered by Harper.
Comparison
GitHub Logo

Feature Update Replicated Writes

Harper 4.4 introduces a new replication system that boosts replicated write performance by 50% due to optimized direct node-to-node connections.
Comparison

Feature Update Replicated Writes

Harper
at Harper
February 25, 2025
Harper
at Harper
February 25, 2025
Harper
at Harper
February 25, 2025
February 25, 2025
Harper 4.4 introduces a new replication system that boosts replicated write performance by 50% due to optimized direct node-to-node connections.
Harper

4.4 Replication System Update

In Harper 4.4, we introduced a new built-in replication system, “Plexus.” This system provides substantial performance, security, and reliability improvements. Plexus eliminates the need to go through a message broker and instead implements direct connections between nodes. This facilitates optimizations down to the TCP level, highly secure mTLS connection, and robust consistency tracking. This highly optimized system for delivery of replicated writes has yielded significant performance gains. Although many factors create variability in test results, we are confident that results show an average 50% increase in replicated write performance over Harper 4.3.

Interpreting the Benchmark Results

The tests specifically focused on measuring throughput for replicated writes and do not reflect write performance for single standalone nodes. In all, 12 different tests were performed across 4, 5, 6, and 8 node clusters, with all writes fully replicated to all nodes. Tests were further divided into two groups, one with random primary keys (Random IDs) and the second with sequential keys (Sequential IDs), to understand variability across use cases. 


Given the small sample size and the hundreds of potential unseen performance variables at play when using cloud virtual machines, the 6-node Random IDs result was removed after it demonstrated a 121% increase in performance. With outliers removed, the remaining results showed a mean performance improvement of 51% with a standard deviation of 9%.

It is worth noting that sharding was not enabled for these tests. With sharding enabled, higher overall write throughput can be expected across the system, as writes are not committed to each independent node. 

Test Setup

Benchmarks utilized a multi-node Harper cluster and compared database write performance given the following specifications: 

  • Record Size: 400 bytes, 8 fields
  • High concurrency: 500 virtual users writing
  • All writes are new records (inserts) using the POST method of the REST API and are replicated to all other nodes. 
  • ID Specifications: some text
    • Random IDs: Primary keys that are random UUIDs (this is a little slower than sequential IDs, but more reflective of typical usage patterns in practice)
    • Sequential IDs: Primary keys that are sequentially generated.
  • All tests were performed on 16GB Dedicated CPU Compute Akamai Connected Cloud Instances. 
  • The tests used a separate instance for each Harper node and another separate instance to execute the load test runner. 
  • The load tests were performed by k6.

4.4 Replication System Update

In Harper 4.4, we introduced a new built-in replication system, “Plexus.” This system provides substantial performance, security, and reliability improvements. Plexus eliminates the need to go through a message broker and instead implements direct connections between nodes. This facilitates optimizations down to the TCP level, highly secure mTLS connection, and robust consistency tracking. This highly optimized system for delivery of replicated writes has yielded significant performance gains. Although many factors create variability in test results, we are confident that results show an average 50% increase in replicated write performance over Harper 4.3.

Interpreting the Benchmark Results

The tests specifically focused on measuring throughput for replicated writes and do not reflect write performance for single standalone nodes. In all, 12 different tests were performed across 4, 5, 6, and 8 node clusters, with all writes fully replicated to all nodes. Tests were further divided into two groups, one with random primary keys (Random IDs) and the second with sequential keys (Sequential IDs), to understand variability across use cases. 


Given the small sample size and the hundreds of potential unseen performance variables at play when using cloud virtual machines, the 6-node Random IDs result was removed after it demonstrated a 121% increase in performance. With outliers removed, the remaining results showed a mean performance improvement of 51% with a standard deviation of 9%.

It is worth noting that sharding was not enabled for these tests. With sharding enabled, higher overall write throughput can be expected across the system, as writes are not committed to each independent node. 

Test Setup

Benchmarks utilized a multi-node Harper cluster and compared database write performance given the following specifications: 

  • Record Size: 400 bytes, 8 fields
  • High concurrency: 500 virtual users writing
  • All writes are new records (inserts) using the POST method of the REST API and are replicated to all other nodes. 
  • ID Specifications: some text
    • Random IDs: Primary keys that are random UUIDs (this is a little slower than sequential IDs, but more reflective of typical usage patterns in practice)
    • Sequential IDs: Primary keys that are sequentially generated.
  • All tests were performed on 16GB Dedicated CPU Compute Akamai Connected Cloud Instances. 
  • The tests used a separate instance for each Harper node and another separate instance to execute the load test runner. 
  • The load tests were performed by k6.

Harper 4.4 introduces a new replication system that boosts replicated write performance by 50% due to optimized direct node-to-node connections.

Download

White arrow pointing right
Harper 4.4 introduces a new replication system that boosts replicated write performance by 50% due to optimized direct node-to-node connections.

Download

White arrow pointing right
Harper 4.4 introduces a new replication system that boosts replicated write performance by 50% due to optimized direct node-to-node connections.

Download

White arrow pointing right

Explore Recent Resources

Comparison
GitHub Logo

Kafka-Centered Stacks vs. a Single Harper Cluster: Where Real-Time Latency Actually Comes From

End-to-end latency in real-time pipelines comes from coordination across systems, not from any single component. Four common workloads, tested two ways, show where multi-hop architectures compound delays and where collapsing storage, messaging, and compute into one runtime changes the math.
Cache
Comparison
End-to-end latency in real-time pipelines comes from coordination across systems, not from any single component. Four common workloads, tested two ways, show where multi-hop architectures compound delays and where collapsing storage, messaging, and compute into one runtime changes the math.
Person with short dark hair and moustache, wearing a colorful plaid shirt, smiling outdoors in a forested mountain landscape.
Aleks Haugom
Senior Manager of GTM
Comparison

Kafka-Centered Stacks vs. a Single Harper Cluster: Where Real-Time Latency Actually Comes From

End-to-end latency in real-time pipelines comes from coordination across systems, not from any single component. Four common workloads, tested two ways, show where multi-hop architectures compound delays and where collapsing storage, messaging, and compute into one runtime changes the math.
Aleks Haugom
Jun 2026
Comparison

Kafka-Centered Stacks vs. a Single Harper Cluster: Where Real-Time Latency Actually Comes From

End-to-end latency in real-time pipelines comes from coordination across systems, not from any single component. Four common workloads, tested two ways, show where multi-hop architectures compound delays and where collapsing storage, messaging, and compute into one runtime changes the math.
Aleks Haugom
Comparison

Kafka-Centered Stacks vs. a Single Harper Cluster: Where Real-Time Latency Actually Comes From

End-to-end latency in real-time pipelines comes from coordination across systems, not from any single component. Four common workloads, tested two ways, show where multi-hop architectures compound delays and where collapsing storage, messaging, and compute into one runtime changes the math.
Aleks Haugom
Tutorial
GitHub Logo

Your API cache is secretly a database

Most teams treat a cache as a black box: URL-keyed blobs with a TTL, useful for speed and nothing else. In Harper, cached data lands in a real table inside the same query engine. That means filtering, joining, real-time subscriptions, and vector search all work against it.
Cache
Tutorial
Most teams treat a cache as a black box: URL-keyed blobs with a TTL, useful for speed and nothing else. In Harper, cached data lands in a real table inside the same query engine. That means filtering, joining, real-time subscriptions, and vector search all work against it.
Person with very short blonde hair wearing a light gray button‑up shirt, standing with arms crossed and smiling outdoors with foliage behind.
Kris Zyp
SVP of Engineering
Tutorial

Your API cache is secretly a database

Most teams treat a cache as a black box: URL-keyed blobs with a TTL, useful for speed and nothing else. In Harper, cached data lands in a real table inside the same query engine. That means filtering, joining, real-time subscriptions, and vector search all work against it.
Kris Zyp
Jun 2026
Tutorial

Your API cache is secretly a database

Most teams treat a cache as a black box: URL-keyed blobs with a TTL, useful for speed and nothing else. In Harper, cached data lands in a real table inside the same query engine. That means filtering, joining, real-time subscriptions, and vector search all work against it.
Kris Zyp
Tutorial

Your API cache is secretly a database

Most teams treat a cache as a black box: URL-keyed blobs with a TTL, useful for speed and nothing else. In Harper, cached data lands in a real table inside the same query engine. That means filtering, joining, real-time subscriptions, and vector search all work against it.
Kris Zyp
Tutorial
GitHub Logo

Introducing Structon: Random-Access Binary Encoding for JavaScript

Deserializing entire records to read one field is a bottleneck at scale. Structon stores objects in a binary format where any field is reachable by byte offset, with lazy getters that never allocate until you access a property. It's the encoding Harper has used internally for years, now a standalone package.
JavaScript
Tutorial
Deserializing entire records to read one field is a bottleneck at scale. Structon stores objects in a binary format where any field is reachable by byte offset, with lazy getters that never allocate until you access a property. It's the encoding Harper has used internally for years, now a standalone package.
Person with very short blonde hair wearing a light gray button‑up shirt, standing with arms crossed and smiling outdoors with foliage behind.
Kris Zyp
SVP of Engineering
Tutorial

Introducing Structon: Random-Access Binary Encoding for JavaScript

Deserializing entire records to read one field is a bottleneck at scale. Structon stores objects in a binary format where any field is reachable by byte offset, with lazy getters that never allocate until you access a property. It's the encoding Harper has used internally for years, now a standalone package.
Kris Zyp
Jun 2026
Tutorial

Introducing Structon: Random-Access Binary Encoding for JavaScript

Deserializing entire records to read one field is a bottleneck at scale. Structon stores objects in a binary format where any field is reachable by byte offset, with lazy getters that never allocate until you access a property. It's the encoding Harper has used internally for years, now a standalone package.
Kris Zyp
Tutorial

Introducing Structon: Random-Access Binary Encoding for JavaScript

Deserializing entire records to read one field is a bottleneck at scale. Structon stores objects in a binary format where any field is reachable by byte offset, with lazy getters that never allocate until you access a property. It's the encoding Harper has used internally for years, now a standalone package.
Kris Zyp