{"id":18888928,"url":"https://github.com/naver/arcus","last_synced_at":"2025-04-09T05:12:29.899Z","repository":{"id":14196135,"uuid":"16902695","full_name":"naver/arcus","owner":"naver","description":"ARCUS is the NAVER memcached with lists, sets, maps and b+trees. http://naver.github.io/arcus","archived":false,"fork":false,"pushed_at":"2024-09-27T08:04:40.000Z","size":2751,"stargazers_count":306,"open_issues_count":1,"forks_count":77,"subscribers_count":46,"default_branch":"master","last_synced_at":"2025-04-01T10:11:37.486Z","etag":null,"topics":["arcus-cloud","cache-cloud","data-structures","key-value-store","memcached","memory-cache-cluster","zookeeper"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-02-17T05:19:37.000Z","updated_at":"2025-02-14T14:53:46.000Z","dependencies_parsed_at":"2023-09-26T15:07:15.513Z","dependency_job_id":"883bcd3c-3047-4926-b518-1144dc5e52b0","html_url":"https://github.com/naver/arcus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naver%2Farcus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naver%2Farcus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naver%2Farcus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naver%2Farcus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naver","download_url":"https://codeload.github.com/naver/arcus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247980844,"owners_count":21027808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arcus-cloud","cache-cloud","data-structures","key-value-store","memcached","memory-cache-cluster","zookeeper"],"created_at":"2024-11-08T07:46:39.876Z","updated_at":"2025-04-09T05:12:29.881Z","avatar_url":"https://github.com/naver.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Arcus Cache Cloud\n=================\n\nArcus is a [memcached][memcached]-based cache cloud developed by [NAVER Corp][naver].\n[arcus-memcached](https://github.com/naver/arcus-memcached) has been heavily modified\nto support functional and performance requirements of NAVER services.\nArcus supports collection data structures (List, Set, Map, B+tree)\nfor storing/retrieving multiple values as a structured form\nin addition to the basic Key-Value data model of memcached.\n\nArcus manages multiple clusters of memcached nodes using [ZooKeeper][zookeeper].\nEach cluster or cloud is identified by its service code.  Think of the service code as the cloud's name.\nThe user may add/remove memcached nodes/clouds on the fly.  And, Arcus detects failed nodes and automatically removes them.\n\nThe overall architecture is shown below.\nThe memcached node is identified by its name (IP address:port number).\nZooKeeper maintains a database of memcached node names and the service code (cloud) that they belong to.\nZooKeeper also maintains a list of alive nodes in each cloud (cache list).\n\nUpon startup, each memcached node contacts ZooKeeper and finds the service code that it belongs to.\nThen the node inserts its name on the cache list so Arcus client can see it.\nZooKeeper periodically checks if the cache node is alive, remove failed nodes from the cache cloud, and notifies the updated cache list to cache clients.\nWith the latest cache list,\nArcus clients do [consistent hashing][consistent hashing] to find the cache node\nfor each key-value operation.\nHubble collects and shows the statistics of the cache cloud.\n\n![Arcus Architecture](https://raw.githubusercontent.com/naver/arcus/master/docs/images/arcus-architecture.png)\n\n[naver]: http://www.naver.com \"Naver\"\n[zookeeper]: http://zookeeper.apache.org \"ZooKeeper\"\n[memcached]: http://www.memcached.org \"Memcached\"\n[consistent hashing]: http://en.wikipedia.org/wiki/Consistent_hashing \"Consistent Hashing\"\n\n## Supported OS Platform\n\nCurrently, Arcus only supports 64-bit Linux.\nIt has been tested on the following OS platforms.\n\n* CentOS 6.x, 7.x 64bit\n* Ubuntu 12.04, 14.04, 16.04, 18.04 LTS 64bit\n\nIf you are interested in supporting other OS platforms, please try building/running Arcus on them.\nAnd let us know of any issues.\n\n## Quick Start\n\nArcus setup usually follows three steps below.\n\n\u003e 1. Preparation - clone and build this Arcus code, and deploy Arcus code/binary package.\n\u003e 2. Zookeeper setup - initialize Zookeeper ensemble for Arcus and start Zookeeper processes.\n\u003e 3. Memcached setup - register cache cloud information into Zookeeper and start cache nodes.\n\nTo quickly set up and test an Arcus cloud on the local machine, run the commands below.\nThey build memcached, set up a cloud of two memcached nodes in ZooKeeper, and start them, all on the local machine.\nThe commands assume RedHat/CentOS environment. If any problem exists in build, please refer to [build FAQ](/docs/build-faq.md).\n\n```\n# Requirements: JDK \u0026 Ant (java \u003e= 1.8)\n\n# Install dependencies (python version 2 that is 2.6 or higher)\nsudo yum install gcc gcc-c++ autoconf automake libtool pkgconfig cppunit-devel python-setuptools python-devel python-pip nc (CentOS)\nsudo apt-get install build-essential autoconf automake libtool libcppunit-dev python-setuptools python-dev python-pip netcat (Ubuntu)\n\n\n# Clone \u0026 Build\ngit clone https://github.com/naver/arcus.git\ncd arcus/scripts\n./build.sh\n\n# Setup a local cache cloud with conf file. (Should be non-root user)\n./arcus.sh quicksetup conf/local.sample.json\n\n# Test\necho \"stats\" | nc localhost 11211 | grep version\nSTAT version 1.7.0\necho \"stats\" | nc localhost 11212 | grep version\nSTAT version 1.7.0\n```\n\nTo set up Arcus cache clouds on multiple machines, you need following two things.\n\n* [Arcus cloud configuration file](docs/arcus-cloud-configuration-file.md): Arcus cache cloud settings in JSON format\n* [Arcus cloud admin script (arcus.sh)](docs/arcus-admin-script-usage.md): A tool to control Arcus cache cloud.\n\nPlease see [Arcus cache cloud setup in multiple servers](docs/arcus-cloud-in-multiple-servers.md) for more details.\n\nOnce you finish setting up an Arcus cache cloud on multiple machines, you can quickly test Arcus on the command line,\nusing telnet and ASCII commands.\nSee [Arcus telnet interface](https://github.com/naver/arcus-memcached/blob/master/doc/ap01-arcus-telnet-interface.md).\nDetails on Arcus ASCII commands are in [Arcus ASCII protocol document](https://github.com/naver/arcus-memcached/blob/master/doc/ch00-arcus-ascii-protocol.md).\n\nTo develop Arcus application programs, please take a look at Arcus clients.\nArcus currently supports Java and C/C++ clients.  Each module includes a short tutorial\nwhere you can build and test \"hello world\" programs.\n- [Arcus Java client](https://github.com/naver/arcus-java-client)\n- [Arcus C/C++ client](https://github.com/naver/arcus-c-client)\n\n\n## Documents\n\n- [How To Install Dependencies](docs/howto-install-dependencies.md) for beginners\n- [Build FAQ](docs/build-faq.md) for troubleshooting build\n- [Arcus Directory Structure](docs/arcus-directory-structure.md) after building\n- [Arcus Cloud Configuration File](docs/arcus-cloud-configuration-file.md)\n- [Arcus Admin Script Usage](docs/arcus-admin-script-usage.md)\n- [Arcus Cache Cloud Setup in Multiple Servers](docs/arcus-cloud-in-multiple-servers.md)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaver%2Farcus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaver%2Farcus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaver%2Farcus/lists"}