twitter/pelikan

Pelikan is Twitter's unified cache backend

CRustCMakeOther
This is stars and forks stats for /twitter/pelikan repository. As of 29 Apr, 2024 this repository has 1900 stars and 181 forks.

Pelikan Pelikan is Twitter's framework for developing cache services. It is: Fast: Pelikan provides high-throughput and low-latency caching solutions. Reliable: Pelikan is designed for large-scale deployment and the implementation is informed by our operational experiences. Modular: Pelikan is a framework for rapidly developing new caching solutions by focusing on the inherent architectural similarity between caching services and providing reusable low-level components. Website | Chat Content Overview Products Features Build Usage Community Stay in touch Contributing Documentation License Overview After years of using and working on various cache services, we built a common framework that reveals the inherent architectural similarity among them. By creating well-defined modules, most of the low-level functionalities are reused as we create different binaries. The implementation learns from our operational experiences to improve performance and reliability, and leads to software designed for large-scale deployment. The framework approach allows us to develop new features and protocols quickly. Products Pelikan contains the following products: pelikan_segcache_rs: a Memcached-like server with extremely high memory efficiency and excellent core scalability. See our NSDI'21 paper for design and evaluation details. pelikan_pingserver_rs: an over-engineered, production-ready ping server useful as a tutorial and for measuring baseline RPC performance momento_proxy: a proxy which allows existing applications to use Momento instead of a Memcache-compatible cache backend. Legacy Pelikan legacy codebase can be found within the legacy folder of this project. It is composed of the original C codebase and backend implementations. It remains as a reference, but is not recommended for production deployments. Features runtime separation of control and data plane predictably low latencies via lockless data structures, worker never blocks per-module config options and metrics that can be composed easily multiple storage and protocol implementations, easy to further extend low-overhead command logger for hotkey and other important data analysis Building Pelikan Requirement Rust stable toolchain C toolchain: llvm/clang (>= 7.0) Build tools: cmake (>= 3.2) Build git clone https://github.com/twitter/pelikan.git cd pelikan cargo build --release Tests cargo test Usage Using pelikan_segcache_rs as an example, other executables are highly similar. To get info of the service, including usage format and options, run: target/release/pelikan_segcache_rs --help To launch the service with default settings, simply run: target/release/pelikan_segcache_rs To launch the service with the sample config file, run: target/release/pelikan_segcache_rs config/segcache.toml You should be able to try out the server using an existing memcached client, or simply with telnet. $ telnet localhost 12321 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. set foo 0 0 3 bar STORED Attention: use admin port for all non-data commands. $ telnet localhost 9999 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. version VERSION 0.1.0 stats STAT pid 54937 STAT time 1459634909 STAT uptime 22 STAT version 100 STAT ru_stime 0.019172 ... Configuration Pelikan is file-first when it comes to configurations, and currently is config-file only. You can create a new config file following the examples included under the config directory. Community Stay in touch Join our project chat on for questions and discussions Follow us on Twitter: @pelikan_cache Visit http://pelikan.io Contributing Please take a look at our community manifesto and coding style guide. If you want to submit a patch, please follow these steps: create a new issue fork on github & clone your fork create a feature branch on your fork push your feature branch create a pull request linked to the issue Documentation We have made progress and are actively working on documentation, and will put it on our website. Meanwhile, check out the current material under docs/ License This software is licensed under the Apache 2.0 license, see LICENSE for details.
Read on GithubGithub Stats Page
repotechsstarsweeklyforksweekly
MrAnonymous09/hacktoberfest-solutions-submissionsCC++Java200210
nelhage/reptyrCRoffPython5.4k02140
seL4/seL4CPythonCMake4.4k06220
dokan-dev/dokanyCSourcePawnC++4.8k06440
StefanTheCode/OptimizeMePleaseC#690780
microsoft/scalarC#ShellBatchfile1.3k0600
socketsupply/socketJavaScriptC++Shell1.1k+21490
MakeContributions/DSAC++JavaC59007080
dikshantrajput/Hacktoberfest-accepted-2022C++JavaPython12104880
ExtropyIO/ZeroKnowledgeBootcampCairoRustOther330800