Giter Site home page Giter Site logo

lsahn-gh / arcus-memcached Goto Github PK

View Code? Open in Web Editor NEW

This project forked from naver/arcus-memcached

0.0 0.0 0.0 5.91 MB

ARCUS memory cache server

License: Apache License 2.0

Shell 0.26% C 70.60% Perl 26.87% DTrace 0.42% Makefile 0.37% M4 1.10% C++ 0.31% Starlark 0.06%

arcus-memcached's Introduction

arcus-memcached : Arcus Memory Cache Server

Build Status Coverage Status

Arcus is a memcached-based cache cloud developed by NAVER Corp. Memcached has been heavily modified to support functional and performance requirements of NAVER services. Arcus is normally positioned in front of a back-end storage, such as DB, where it stores/retrieves hot-spot data of service applications using fast main memory. Therefore, Arcus provides very fast data access for service applications and reduces the load on back-end storage. In addition, Arcus can serve as a fast shared storage. Remote service processes usually store complex query results, computation-intensive results, and intermediate results of web processing in Arcus cache cloud so any process can access them.

Arcus provides two new significant features over the existing memcached.

First, Arcus supports collection types. A single key can have a collection of data as its value. Arcus currently supports three collection data structures.

  • List - a doubly-linked list structure.
  • Set - an unordered set of unique data.
  • Map - an unordered set of <field, value>.
  • B+tree - a b+tree structure, conceptually similar to sorted map.

Second, Arcus can operate as a cache cloud using Zookeeper. When a cache node fails, it is quickly detected and is excluded from the cache cloud. The remaining cache nodes keep on serving using the new cloud configuration. Likewise, a cache node may join the cloud on the fly. Keys are automatically re-distributed to maintain load balancing.

Build on Linux

arcus-memcached builds successfully on 64-bit Linux (CentOS, Ubuntu) environments. Other Linux distributions have not been tested.

Dependencies

arcus-memcached has the following dependencies. Make sure to install them.

Compile

To build arcus-memcached from the git-cloned source code,

$ ./config/autorun.sh
$ ./configure [--with-libevent=<libevent_install_path>]
$ make
$ make install

The use of ZooKeeper based clustering is optional. To enable it, use --enable-zk-integration along with --with-zookeeper when running configure. Make sure to use the ZooKeeper library with Arcus modifications.

To test arcus-memcached, you can execute make test. If any problem exists in compilation, please refer to compilation FAQ.

Run

arcus-memcached has a pluggable engine structure. Only the default engine provides all of the above Arcus functionalities.

To start Arcus cache server with the default engine, run the following command line with non-root user.

$ <arcus_install_path>/bin/memcached -m 4000 -p 11211 -E <arcus_install_path>/lib/default_engine.so

Important start options are here.

  • To enable Zookeeper-based clustering, use -z to specify the Zookeeper ensemble ip:port list.
  • The scrub command is provided as an ASCII command extension. To use the command, use -X to specify the location of ascii_scrub.so library.

To see details on arcus-memcached start options, run memcached with -h option like below.

$ <arcus_install_path>/bin/memcached -h

To stop the running Arcus cache server, use kill command like below.

$ kill -INT <pid>

ASCII Protocol

Please refer to Arcus cache server ascii protocol for details on Arcus ASCII commands.

You can use telnet interface to test simply Arcus ASCII commands on Arcus cache server. To know the usage of telnet interface, refer to Arcus telnet interface guide.

Issues

If you find a bug, please report it via the GitHub issues page.

https://github.com/naver/arcus-memcached/issues

Arcus Contributors

In addition to those who had contributed to the original memcached, the following people at NAVER have contributed to arcus-memcached.

JunHyun Park [email protected]; [email protected]
HyongYoub Kim [email protected]
YeaSol Kim (ngleader) [email protected]; [email protected]
HoonMin Kim (harebox) [email protected]; [email protected]
SeongHwan Jeong (scryner) [email protected]
Chang Song [email protected]

License

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0

Patents

Arcus has patents on b+tree smget operation. Refer to PATENTS file in this directory to get the patent information.

Under the Apache License 2.0, a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license is granted to any user for any usage. You can see the specifics on the grant of patent license in LICENSE file in this directory.

arcus-memcached's People

Contributors

16junys avatar blukat29 avatar chandescartes avatar charsyam avatar computerphilosopher avatar dongwooklee96 avatar ducky-hong avatar ehgml961017 avatar goodahn avatar greenmonn avatar hjyun328 avatar hoonmin avatar jhpark816 avatar jihoon-ko avatar jooho812 avatar kanglib avatar kswoo3740 avatar minkikim89 avatar minwoojin avatar minzu0306 avatar rudeus avatar suhwanjang avatar thjeong917 avatar whchoi83 avatar yoo4471 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.