sdec2011 arcus nhn memcached cloud
DESCRIPTION
Arcus is data caching cloud developed on Memcached which is a memory-based Key-Value repository. It was developed meeting requirements from various NHN services. Arcus is capable of having up-to-date cache server list of clients using ZooKeeper and also able to possess cloud architecture flexible to add or delete caching servers while eliminating extra network latency between client and server. Furthermore, to support save/ computation function of data collection which is becoming a requirement among many services, it provides list, set, b+tree structures. http://sdec.kr/TRANSCRIPT
Arcus:����������� ������������������ NHN����������� ������������������ Memcached����������� ������������������ Cloud����������� ������������������
박준현/NHN����������� ������������������
2 / SDEC 2011 발표자료
ARCUS����������� ������������������
3 / SDEC 2011 발표자료
ARCUS����������� ������������������ 개발����������� ������������������ 배경����������� ������������������
• 웹����������� ������������������ 서비스����������� ������������������ • Read����������� ������������������ >>����������� ������������������ Write����������� ������������������
• 기존����������� ������������������ 서비스들의����������� ������������������ 강한����������� ������������������ DB����������� ������������������ 의존도����������� ������������������
• Throughput����������� ������������������ • Response����������� ������������������ Time����������� ������������������ • Scalability����������� ������������������
M����������� ������������������
S1����������� ������������������ S3����������� ������������������ S2����������� ������������������
S4����������� ������������������ S6����������� ������������������ S5����������� ������������������
DB����������� ������������������ Group����������� ������������������
Service����������� ������������������ Applications����������� ������������������
Write����������� ������������������ Read����������� ������������������
4 / SDEC 2011 발표자료
ARCUS����������� ������������������ 개발����������� ������������������ 배경����������� ������������������
• DB����������� ������������������ 의존도����������� ������������������ 및����������� ������������������ ����������� ������������������ Load����������� ������������������ 경감����������� ������������������
• Explicit����������� ������������������ Read-����������� ������������������ Through����������� ������������������ Cache����������� ������������������
M����������� ������������������ S1����������� ������������������ S3����������� ������������������ S2����������� ������������������
DB����������� ������������������ Group����������� ������������������
Service����������� ������������������ Applications����������� ������������������
Write����������� ������������������ Read����������� ������������������
Cache����������� ������������������ Miss����������� ������������������
Arcus����������� ������������������ Get����������� ������������������
Arcus����������� ������������������ Set����������� ������������������ (DB����������� ������������������ Query)����������� ������������������
Arcus����������� ������������������ Cache����������� ������������������ Cloud����������� ������������������
5 / SDEC 2011 발표자료
ARCUS����������� ������������������ Cache����������� ������������������ Cloud����������� ������������������
• Memcached����������� ������������������ Based����������� ������������������ Cache����������� ������������������ Cloud����������� ������������������ • Horizontally����������� ������������������ Scalable����������� ������������������ • Consistent����������� ������������������ Hashing����������� ������������������ • Easy����������� ������������������ cache����������� ������������������ node����������� ������������������ addition/removal����������� ������������������ • Automatic����������� ������������������ Failover����������� ������������������ • Server����������� ������������������ Resource����������� ������������������ Monitoring����������� ������������������
6 / SDEC 2011 발표자료
Memcached����������� ������������������
• http://www.memcached.org/����������� ������������������ ����������� ������������������ • Simple����������� ������������������ key-value����������� ������������������ memory����������� ������������������ store����������� ������������������ • Use����������� ������������������ event-driven����������� ������������������ network����������� ������������������ I/O����������� ������������������ framework����������� ������������������ (libevent)����������� ������������������ • Slab����������� ������������������ memory����������� ������������������ allocator����������� ������������������ &����������� ������������������ per-slab����������� ������������������ LRU����������� ������������������ list����������� ������������������ • Used����������� ������������������ by����������� ������������������ Facebook,����������� ������������������ LiveJournal,����������� ������������������ Twitter,����������� ������������������ YouTube,����������� ������������������ Wikipedia,����������� ������������������ ⋯����������� ������������������
7 / SDEC 2011 발표자료
Memcached����������� ������������������ Operations����������� ������������������
• Operation����������� ������������������ Cost����������� ������������������ • O(1)����������� ������������������
• Atomic����������� ������������������ Operation����������� ������������������ • Numerous����������� ������������������ Language����������� ������������������ API����������� ������������������ • C,����������� ������������������ Java,����������� ������������������ PHP,����������� ������������������ Python,����������� ������������������ Ruby,����������� ������������������ Perl,����������� ������������������ ⋯����������� ������������������
Commands����������� ������������������
Storage����������� ������������������ set,����������� ������������������ add,����������� ������������������ replace,����������� ������������������ append,����������� ������������������ ����������� ������������������ prepend,����������� ������������������ delete����������� ������������������
Fetch����������� ������������������ get, gets(multiple get)����������� ������������������
Counter����������� ������������������ incr, decr����������� ������������������
Misc����������� ������������������ CAS (compare &����������� ������������������ swap), stats����������� ������������������
8 / SDEC 2011 발표자료
Memcached����������� ������������������ Operation����������� ������������������ Examples����������� ������������������
• Text����������� ������������������ Protocol����������� ������������������ set <key> <flags> <exptime> <bytes> [noreply]\r\n <value>\r\n get <key>\r\n����������� ������������������
[jhpark@XXXX]$ telnet localhost 11211 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. set sample_key 0 0 12 sample_value STORED get sample_key VALUE sample_key 0 12 sample_value END
9 / SDEC 2011 발표자료
Memcached����������� ������������������ Performance����������� ������������������
0
50000
100000
150000
200000
250000
Throughput (TPS)
0
100
200
300
400
500
600
700
800
Response Time (microsec)
• 한����������� ������������������ 서버에서의����������� ������������������ memcached����������� ������������������ 성능����������� ������������������
10 / SDEC 2011 발표자료
32bit����������� ������������������ continuum����������� ������������������
(2^32����������� ������������������ hash����������� ������������������ points)����������� ������������������
Consistent����������� ������������������ Hashing����������� ������������������
Node 0
Node 1
Node 2
Key x
Key y
Key z
• Mapping����������� ������������������ of����������� ������������������ keys����������� ������������������ to����������� ������������������ cache����������� ������������������ nodes����������� ������������������
Leave (Failure)
Remapped to Node 1
Node 3
Join Remapped to Node 3
• Node����������� ������������������ Addition/Removal����������� ������������������ • K����������� ������������������ /����������� ������������������ n����������� ������������������ keys����������� ������������������ remapped����������� ������������������
11 / SDEC 2011 발표자료
Consistent����������� ������������������ Hashing����������� ������������������
Node 0
Node 1 Node 2
• Mapping����������� ������������������ of����������� ������������������ keys����������� ������������������ to����������� ������������������ cache����������� ������������������ nodes����������� ������������������ • Load����������� ������������������ Balancing����������� ������������������
• Hash����������� ������������������ points����������� ������������������ per����������� ������������������ node����������� ������������������ • =>����������� ������������������ Not����������� ������������������ just����������� ������������������ one����������� ������������������ • =>����������� ������������������ Some����������� ������������������ hundred����������� ������������������
Node 2
Node 1
Node 0
Node 0
Node 2
Node 1
Node 2
Node 1
Node 0 Node 2
Node 0
Node 1
12 / SDEC 2011 발표자료
Arcus����������� ������������������ 1.5����������� ������������������ Architecture����������� ������������������
Clients Cache Nodes
Java & C Smart Client + Local caching (Java)
Consistent hashing
Unified Cloud Admin (Zookeeper ensemble)
13 / SDEC 2011 발표자료
Zookeeper����������� ������������������ Integration����������� ������������������
• Zookeeper����������� ������������������ • http://zookeeper.apache.org/����������� ������������������ • Developed����������� ������������������ by����������� ������������������ Yahoo����������� ������������������ (written����������� ������������������ in����������� ������������������ Java)����������� ������������������ • Coordination����������� ������������������ Service����������� ������������������ for����������� ������������������ Distributed����������� ������������������ Applications����������� ������������������ • Used����������� ������������������ by����������� ������������������ Yahoo,����������� ������������������ HBase,����������� ������������������ Neo4j,����������� ������������������ Kafka,����������� ������������������ Solr,����������� ������������������ Hedwig,����������� ������������������ Norbert,����������� ������������������ ⋯����������� ������������������
• Arcus����������� ������������������ Uses����������� ������������������ Zookeeper����������� ������������������ • Maintain����������� ������������������ Cache����������� ������������������ Node����������� ������������������ List����������� ������������������ (shared����������� ������������������ by����������� ������������������ Clients)����������� ������������������ • Automatic����������� ������������������ Failover����������� ������������������
14 / SDEC 2011 발표자료
Zookeeper����������� ������������������ Integration����������� ������������������
Clients Cache Nodes
Zookeeper Ensemble
Cache Node List ------------------ Node 1 IP:Port Node 2 IP:Port Node 3 IP:Port Node 4 IP:Port
Cache Node 구동
Zookeeper 세션 연결 Ephemeral Node 수동 생성
Cache Node List Maintenance
15 / SDEC 2011 발표자료
Arcus����������� ������������������ 1.5����������� ������������������ Memcached����������� ������������������
• Pluggable����������� ������������������ Engine����������� ������������������ Architecture����������� ������������������ of����������� ������������������ Membase����������� ������������������ • In-house����������� ������������������ Development����������� ������������������ (Many����������� ������������������ Features)����������� ������������������
Memcached Core
Community Engine
Default Engine
Arcus Engine
ZK Client
16 / SDEC 2011 발표자료
Collection����������� ������������������ 개발����������� ������������������ 배경����������� ������������������
• SNS(Social����������� ������������������ Network����������� ������������������ Services)����������� ������������������ ����������� ������������������ • Event����������� ������������������ Delivery����������� ������������������ –����������� ������������������ 친구글����������� ������������������ 배달,����������� ������������������ 구독글����������� ������������������ 배달����������� ������������������ ����������� ������������������
• Redis����������� ������������������ (1.2.0)����������� ������������������ 검토����������� ������������������ –����������� ������������������ List,����������� ������������������ Set,����������� ������������������ Sorted����������� ������������������ Set����������� ������������������ • Sorted����������� ������������������ Set����������� ������������������ –����������� ������������������ Range����������� ������������������ Scan����������� ������������������ ����������� ������������������
• No����������� ������������������ [offset,����������� ������������������ count]����������� ������������������ option����������� ������������������ • No����������� ������������������ capped����������� ������������������ collection����������� ������������������ • Not����������� ������������������ enough����������� ������������������ cache����������� ������������������ statistics����������� ������������������ • Cannot����������� ������������������ control����������� ������������������ memory����������� ������������������ use����������� ������������������
• Memcached����������� ������������������ 기반����������� ������������������ 자체����������� ������������������ 개발����������� ������������������ -����������� ������������������ ����������� ������������������ 맞춤형����������� ������������������ 기능����������� ������������������ 제공����������� ������������������
17 / SDEC 2011 발표자료
Collection����������� ������������������ 개요����������� ������������������
• Collection����������� ������������������ in����������� ������������������ Arcus����������� ������������������ • LIST����������� ������������������ –����������� ������������������ Doubly-linked����������� ������������������ list����������� ������������������ • SET����������� ������������������ -����������� ������������������ Unordered����������� ������������������ set����������� ������������������ of����������� ������������������ unique����������� ������������������ data����������� ������������������
• Membership����������� ������������������ check����������� ������������������ 용도에����������� ������������������ 적합����������� ������������������ • B+TREE����������� ������������������ –����������� ������������������ a����������� ������������������ sorted����������� ������������������ series����������� ������������������ of����������� ������������������ unique����������� ������������������ data����������� ������������������ items����������� ������������������
• <64bit����������� ������������������ integer����������� ������������������ key(bkey),����������� ������������������ value>����������� ������������������ 형태로����������� ������������������ 저장����������� ������������������ • bkey����������� ������������������ range����������� ������������������ scan����������� ������������������ (ascending����������� ������������������ &����������� ������������������ descending)����������� ������������������
• offset,����������� ������������������ count����������� ������������������ 기능����������� ������������������ 포함����������� ������������������ • Limiting����������� ������������������ the����������� ������������������ max����������� ������������������ #����������� ������������������ of����������� ������������������ elements����������� ������������������ ����������� ������������������
• Violates����������� ������������������ memcached����������� ������������������ O(1)����������� ������������������ philosophy����������� ������������������ ����������� ������������������ • But,����������� ������������������ O(small����������� ������������������ N)����������� ������������������ ����������� ������������������
18 / SDEC 2011 발표자료
Collection����������� ������������������ 저장����������� ������������������ 구조����������� ������������������
header����������� ������������������ key����������� ������������������ value����������� ������������������
k/v����������� ������������������ item����������� ������������������
set item����������� ������������������
header����������� ������������������ key����������� ������������������ set����������� ������������������ info����������� ������������������
... value1����������� ������������������
value4����������� ������������������
value3����������� ������������������
value2����������� ������������������
value5����������� ������������������
Hash Table For Uniqueness Checking
b+tree item����������� ������������������
header����������� ������������������ key����������� ������������������ b+tree����������� ������������������ info����������� ������������������
...
bkey1����������� ������������������ -------����������� ������������������ value����������� ������������������
bkey2����������� ������������������ -------����������� ������������������ value����������� ������������������
bkey17����������� ������������������ -------����������� ������������������ value����������� ������������������
bkey75����������� ������������������ -------����������� ������������������ value����������� ������������������
bkey76����������� ������������������ -------����������� ������������������ value����������� ������������������
bkey91����������� ������������������ -------����������� ������������������ value����������� ������������������
...
...
Forward/Backward Range Scan
19 / SDEC 2011 발표자료
NAVER����������� ������������������ Me����������� ������������������ Collection����������� ������������������ 활용����������� ������������������ 사례����������� ������������������
구독관계����������� ������������������ 및����������� ������������������ 구독글����������� ������������������ 목록����������� ������������������ 정보를����������� ������������������ Collection으로����������� ������������������ 저장����������� ������������������
카페����������� ������������������ 블로그����������� ������������������
정보����������� ������������������ 콘텐츠����������� ������������������ on����������� ������������������ 네이버����������� ������������������
etc����������� ������������������ ...����������� ������������������
뉴스����������� ������������������ 웹툰����������� ������������������
책����������� ������������������ 뮤직����������� ������������������
지식인����������� ������������������
20 / SDEC 2011 발표자료
NAVER����������� ������������������ Me����������� ������������������ Collection����������� ������������������ 활용����������� ������������������ 사례����������� ������������������ • 구독글����������� ������������������ 모아보기����������� ������������������ –����������� ������������������ DB����������� ������������������ 질의����������� ������������������
SELECT * FROM messages WHERE feedid in (feedID1, feedID2, …, feedIDn) AND create_time < sysdate() ORDER BY create_time DESC LIMIT 20;����������� ������������������
• 이슈)����������� ������������������ FeedID����������� ������������������ List가����������� ������������������ 클수록����������� ������������������ ����������� ������������������ • 질의����������� ������������������ 응답����������� ������������������ 성능이����������� ������������������ 급격히����������� ������������������ 느려짐����������� ������������������ ����������� ������������������ • 수십����������� ������������������ msec����������� ������������������ ~����������� ������������������ 수십����������� ������������������ sec����������� ������������������ (MySQL)����������� ������������������
• 대부분����������� ������������������ SNS에����������� ������������������ 동일/유사����������� ������������������ 이슈����������� ������������������ 존재����������� ������������������
21 / SDEC 2011 발표자료
NAVER����������� ������������������ Me����������� ������������������ Collection����������� ������������������ 활용����������� ������������������ 사례����������� ������������������
• 기본����������� ������������������ 해결����������� ������������������ 방안����������� ������������������ ����������� ������������������ • 빠른����������� ������������������ Arcus����������� ������������������ 이용����������� ������������������ ����������� ������������������ • 사용자별����������� ������������������ Inbox����������� ������������������ 구현����������� ������������������ –����������� ������������������ B+Tree����������� ������������������ Collection����������� ������������������ 사용����������� ������������������
User Inbox 1
User Inbox 2
User Inbox N
Push Delivery
Feed 1
Feed M
22 / SDEC 2011 발표자료
NAVER����������� ������������������ Me����������� ������������������ Collection����������� ������������������ 활용����������� ������������������ 사례����������� ������������������
구독관계����������� ������������������ Cache����������� ������������������ (SET����������� ������������������ type)����������� ������������������
Feed����������� ������������������ -����������� ������������������ 구독자����������� ������������������ 관계����������� ������������������
사용자별����������� ������������������ ����������� ������������������ 구독글����������� ������������������ 목록����������� ������������������ Cache����������� ������������������ (B+Tree����������� ������������������ type)����������� ������������������
*bkey:����������� ������������������ create����������� ������������������ time����������� ������������������ *data:����������� ������������������ message����������� ������������������ id����������� ������������������
구독글����������� ������������������ 내용����������� ������������������ Cache����������� ������������������ (K/V����������� ������������������ type)����������� ������������������ 구독글ID����������� ������������������ -����������� ������������������ 내용����������� ������������������
글����������� ������������������ 조회����������� ������������������
1.����������� ������������������ 구독����������� ������������������ 관계를����������� ������������������ 저장����������� ������������������
구독신청����������� ������������������
글����������� ������������������ 작성����������� ������������������ 3.����������� ������������������ 구독자����������� ������������������ Inbox로����������� ������������������ 1����������� ������������������ :����������� ������������������ N����������� ������������������ Delivery����������� ������������������
2.����������� ������������������ 구독글����������� ������������������ 내용����������� ������������������ 조회����������� ������������������
23 / SDEC 2011 발표자료
Bulk����������� ������������������ Insert����������� ������������������
• High����������� ������������������ Speed����������� ������������������ Event����������� ������������������ Delivery����������� ������������������
• Bulk����������� ������������������ Insert����������� ������������������ 유형����������� ������������������ • 여러����������� ������������������ collection에����������� ������������������ 하나의����������� ������������������ value를����������� ������������������ insert����������� ������������������ • 하나의����������� ������������������ collection에����������� ������������������ 여러����������� ������������������ value를����������� ������������������ insert����������� ������������������
• Behind����������� ������������������ Technology����������� ������������������ • Server-side����������� ������������������ command����������� ������������������ pipelining����������� ������������������
24 / SDEC 2011 발표자료
Sequential����������� ������������������ Command����������� ������������������ Execution����������� ������������������
• Collection����������� ������������������ insert����������� ������������������ • ~����������� ������������������ 40����������� ������������������ usec����������� ������������������ on����������� ������������������ server����������� ������������������ • Response����������� ������������������ time����������� ������������������ on����������� ������������������ client����������� ������������������ :����������� ������������������ 1����������� ������������������ ~����������� ������������������ 2����������� ������������������ msec����������� ������������������
• Reasons����������� ������������������ • Data����������� ������������������ (de)serialization����������� ������������������ • Network����������� ������������������ round-trip����������� ������������������ time����������� ������������������
• ����������� ������������������ 1000����������� ������������������ inserts����������� ������������������ per����������� ������������������ 1����������� ������������������ sec����������� ������������������
1 ms
0 ms
2 ms
3 ms
Client Server
40 usec
40 usec
40 usec
25 / SDEC 2011 발표자료
Server-side����������� ������������������ Command����������� ������������������ Pipelining����������� ������������������
1.x ms
0 ms
Client Server
120 usec
• N����������� ������������������ requests����������� ������������������ –����������� ������������������ 1����������� ������������������ response����������� ������������������ • Keep����������� ������������������ the����������� ������������������ result����������� ������������������ of����������� ������������������ ����������� ������������������ each����������� ������������������ request����������� ������������������
• At����������� ������������������ the����������� ������������������ end,����������� ������������������ respond����������� ������������������ with����������� ������������������ all����������� ������������������ results.����������� ������������������
• 네이버Me����������� ������������������ 구독하기����������� ������������������ ����������� ������������������ • Event����������� ������������������ Delivery에서����������� ������������������ 20배����������� ������������������ 성능����������� ������������������ 향상����������� ������������������
26 / SDEC 2011 발표자료
Other����������� ������������������ Features����������� ������������������
• Sticky����������� ������������������ Items����������� ������������������ (Not����������� ������������������ Expired����������� ������������������ &����������� ������������������ Not����������� ������������������ Evicted)����������� ������������������ • Delete����������� ������������������ By����������� ������������������ Prefix����������� ������������������ • Transparent����������� ������������������ Java����������� ������������������ Client����������� ������������������ Caching����������� ������������������ • New����������� ������������������ Memory����������� ������������������ Allocator����������� ������������������ • Replication����������� ������������������ ����������� ������������������ • 기타..����������� ������������������
Requirements New Technology New Idea & Features New Products
27 / SDEC 2011 발표자료
Arcus����������� ������������������ and����������� ������������������ Membase����������� ������������������
Memcached 기반 Elastic data cloud
기술 협조, 공동 개발
28 / SDEC 2011 발표자료
Q����������� ������������������ &����������� ������������������ A����������� ������������������