> For the complete documentation index, see [llms.txt](https://sliu583.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sliu583.gitbook.io/blog/specific-work/seminar-and-talk/reading-groups/db-reading-group/cliquemap-productionizing-an-rma-based-distributed-caching-system.md).

# CliqueMap: Productionizing an RMA-Based Distributed Caching System

#### Basics&#x20;

* Caching: distributed caching&#x20;
  * Hierarchy structure&#x20;
  * Distributed caching&#x20;
    * At the layer of application&#x20;
* RPC&#x20;
  * Remote procedure call: machines in distributed system to talk with each other&#x20;
  * GRPC: protocol buffers
  * Lesser restrictions , ease of programming&#x20;
* RMA / RDMA
  * Remote memory access&#x20;
  * Offload the code execution path from CPU to hardware or software NIC&#x20;
    * Restrictions with respect to size of memory that can be accessed&#x20;
  * Primitives are not quite easy to use for programmers&#x20;

#### Intro / Summary&#x20;

* In-memory KV caching / serving systems are crucial building blocks of user-facing services throughout the industry (i.e., Twemcache \[OSDI20], CacheLib \[OSDI20])
* Remote memory access (RMA)
  * Benefits: performance / efficiency benefits&#x20;
  * Downsides: limited programmability / narrow primitives&#x20;
  * Production challenges&#x20;
    * Deliver high availability and low cost
    * Balance CPU- and RAM-efficiency
    * Evolving the system over time&#x20;
    * Multi-language serving ecosystems&#x20;
    * Navigating heterogenous datacenters&#x20;
* How do we productionize an RMA-based distributed caching system?
  * Less compute + latency benefits (10s of ms)&#x20;
  * Throughput? different customers have different challenges

![](/files/CCtmLjEzurpPS4hMAKo3)

* Replication: same piece of data&#x20;
  * Aware of the topology&#x20;
* Lookup: RMA (accelerate)
* RPC: mutations, and other metadata management&#x20;
  * Extensibility and ease of programming&#x20;

![](/files/GwqdGVmheMBW6S6wOS4Q)
