All Projects → naver → Arcus

naver / Arcus

Licence: apache-2.0
ARCUS is the NAVER memcached with lists, sets, maps and b+trees. http://naver.github.io/arcus

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to Arcus

Gokv
Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more)
Stars: ✭ 314 (+15.02%)
Mutual labels:  memcached, key-value-store
Olric
Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.
Stars: ✭ 2,067 (+657.14%)
Mutual labels:  memcached, key-value-store
dxram
A distributed in-memory key-value storage for billions of small objects.
Stars: ✭ 25 (-90.84%)
Mutual labels:  memcached, key-value-store
example-apps
Karafka WaterDrop and Sidekiq backend example application
Stars: ✭ 33 (-87.91%)
Mutual labels:  zookeeper
Paxos raft protocol
分布式一致性协议相关论文及中文译文,涵盖Paxos、Raft、Zab
Stars: ✭ 255 (-6.59%)
Mutual labels:  zookeeper
Javascript Datastructures Algorithms
📚 collection of JavaScript and TypeScript data structures and algorithms for education purposes. Source code bundle of JavaScript algorithms and data structures book
Stars: ✭ 3,221 (+1079.85%)
Mutual labels:  data-structures
Php
All Algorithms implemented in Php
Stars: ✭ 272 (-0.37%)
Mutual labels:  data-structures
awesome-free-courses
List of awesome free video courses for learning Computer Science!
Stars: ✭ 49 (-82.05%)
Mutual labels:  data-structures
Embeddedsystem
📚 嵌入式系统基础知识与主流编程语言相关内容总结
Stars: ✭ 266 (-2.56%)
Mutual labels:  data-structures
Tkvdb
Trie key-value database
Stars: ✭ 265 (-2.93%)
Mutual labels:  key-value-store
Ultramemcache
Ultra fast memcache client written in highly optimized C++ with Python bindings.
Stars: ✭ 262 (-4.03%)
Mutual labels:  memcached
Dubbogo
a golang micro-service framework compatible with alibaba dubbo
Stars: ✭ 258 (-5.49%)
Mutual labels:  zookeeper
Python Data Structure Cn
problem-solving-with-algorithms-and-data-structure-using-python 中文版
Stars: ✭ 2,898 (+961.54%)
Mutual labels:  data-structures
LeetCode-Py
⛽️「算法通关手册」,超详细的「算法与数据结构」基础讲解教程,「LeetCode」650+ 道题目 Python 版的详细解析。通过「算法理论学习」和「编程实战练习」相结合的方式,从零基础到彻底掌握算法知识。
Stars: ✭ 881 (+222.71%)
Mutual labels:  data-structures
Kafka Security Manager
Manage your Kafka ACL at scale
Stars: ✭ 267 (-2.2%)
Mutual labels:  zookeeper
anchor
High-Performance Erlang Memcached Client
Stars: ✭ 15 (-94.51%)
Mutual labels:  memcached
Notes
算法刷题指南、Java多线程与高并发、Java集合源码、Spring boot、Spring Cloud等笔记,源码级学习笔记后续也会更新。
Stars: ✭ 256 (-6.23%)
Mutual labels:  data-structures
Jschema
A simple, easy to use data modeling framework for JavaScript
Stars: ✭ 261 (-4.4%)
Mutual labels:  data-structures
Burry.sh
Cloud Native Infrastructure BackUp & RecoveRY
Stars: ✭ 260 (-4.76%)
Mutual labels:  zookeeper
Floweaver
View flow data as Sankey diagrams
Stars: ✭ 266 (-2.56%)
Mutual labels:  data-structures

Arcus Cache Cloud

Arcus is a memcached-based cache cloud developed by NAVER Corp. arcus-memcached has been heavily modified to support functional and performance requirements of NAVER services. Arcus supports collection data structures (List, Set, Map, B+tree) for storing/retrieving multiple values as a structured form in addition to the basic Key-Value data model of memcached.

Arcus manages multiple clusters of memcached nodes using ZooKeeper. Each cluster or cloud is identified by its service code. Think of the service code as the cloud's name. The user may add/remove memcached nodes/clouds on the fly. And, Arcus detects failed nodes and automatically removes them.

The overall architecture is shown below. The memcached node is identified by its name (IP address:port number). ZooKeeper maintains a database of memcached node names and the service code (cloud) that they belong to. ZooKeeper also maintains a list of alive nodes in each cloud (cache list).

Upon startup, each memcached node contacts ZooKeeper and finds the service code that it belongs to. Then the node inserts its name on the cache list so Arcus client can see it. ZooKeeper periodically checks if the cache node is alive, remove failed nodes from the cache cloud, and notifies the updated cache list to cache clients. With the latest cache list, Arcus clients do consistent hashing to find the cache node for each key-value operation. Hubble collects and shows the statistics of the cache cloud.

Arcus Architecture

Supported OS Platform

Currently, Arcus only supports 64-bit Linux. It has been tested on the following OS platforms.

  • CentOS 6.x, 7.x 64bit
  • Ubuntu 12.04, 14.04, 16.04, 18.04 LTS 64bit

If you are interested in supporting other OS platforms, please try building/running Arcus on them. And let us know of any issues.

Quick Start

Arcus setup usually follows three steps below.

  1. Preparation - clone and build this Arcus code, and deploy Arcus code/binary package.
  2. Zookeeper setup - initialize Zookeeper ensemble for Arcus and start Zookeeper processes.
  3. Memcached setup - register cache cloud information into Zookeeper and start cache nodes.

To quickly set up and test an Arcus cloud on the local machine, run the commands below. They build memcached, set up a cloud of two memcached nodes in ZooKeeper, and start them, all on the local machine. The commands assume RedHat/CentOS environment. If any problem exists in build, please refer to build FAQ.

# Requirements: JDK & Ant (java >= 1.8)

# Install dependencies (python >= 2.6)
sudo yum install gcc gcc-c++ autoconf automake libtool pkgconfig cppunit-devel python-setuptools python-devel (CentOS)
sudo apt-get install build-essential autoconf automake libtool libcppunit-dev python-setuptools python-dev (Ubuntu)


# Clone & Build
git clone https://github.com/naver/arcus.git
cd arcus/scripts
./build.sh

# Setup a local cache cloud with conf file. (Should be non-root user)
./arcus.sh quicksetup conf/local.sample.json

# Test
echo "stats" | nc localhost 11211 | grep version
STAT version 1.7.0
echo "stats" | nc localhost 11212 | grep version
STAT version 1.7.0

To set up Arcus cache clouds on multiple machines, you need following two things.

Please see Arcus cache cloud setup in multiple servers for more details.

Once you finish setting up an Arcus cache cloud on multiple machines, you can quickly test Arcus on the command line, using telnet and ASCII commands. See Arcus telnet interface. Details on Arcus ASCII commands are in Arcus ASCII protocol document.

To develop Arcus application programs, please take a look at Arcus clients. Arcus currently supports Java and C/C++ clients. Each module includes a short tutorial where you can build and test "hello world" programs.

Documents

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].