USING COUCHBASE FOR SOCIAL  GAME SCALING AND SPEED    Steven Mih, Couchbase Inc.      Bin Cui, Couchbase Inc.             ...
Agenda     • Introduction     • What is Couchbase Server?         – Simple, Fast, Elastic         – Technology Overview (A...
Couchbase Inc.• Membase and CouchOne have merged to form Couchbase  Inc. (headquartered in Silicon Valley)• Team  – Brings...
Modern Interactive Web Application Architecture                                         Application Scales Out            ...
Couchbase Server is a distributed database                                Couchbase Web Console        Application user   ...
Couchbase data layer scales like application logic tierData layer now scales with linear cost and constant performance.   ...
Couchbase Demonstration• Membase ServerTemplate  Demo  – Starting with four database         Application user    nodes und...
Couchbase Server is Simple, Fast, Elastic                   • Five minutes or less to a working cluster                   ...
Couchbase Server is Simple, Fast, Elastic                    • Predictable                       – “Never keep an applicat...
Couchbase Server is Simple, Fast, Elastic                         • Zero-downtime elasticity Couchbase Web Console        ...
Proven at Small, and Extra Large Scale  •   Leading cloud service (PAAS)       •   Social game leader – FarmVille,      pr...
Customers and Partners     Customers (partial listing)   Partners                                              12
Couchbase Server Architecture        11211            11210     memcapable 1.0   memcapable 2.0        moxi               ...
Couchbase Server Architecture        11211            11210     memcapable 1.0   memcapable 2.0        moxi               ...
Couchbase “write” Data Flow – application viewUser action results in the need to        change the VALUE of KEY           ...
Couchbase Data Flow – under the hood                                   SET request arrives at               SET acknowledg...
Elasticity - Rebalancing                                            Node 1              Node 2             Node 3Before   ...
Data buckets are secure Couchbase “slices”             Application user           Web application server  Bucket 1  Bucket...
Couchbase and Hadoop Integration• Support large-scale analytics on application data by streaming data  from Couchbase to H...
Agenda     • Introduction     • What is Couchbase Server?         – Simple, Fast, Elastic         – Technology Overview (A...
Tribal Crossing: ChallengesCommon steps on scaling up database:●   Tune queries (indexing, explain query)●   Denormalizati...
Tribal Crossing: Challenges●   Write-heavy requests    –   Caching does not help    –   MySQL / InnoDB limitation (Percona...
Tribal Crossing: “Old” Architecture and Options●   MySQL with master-to-master replication and    sharding        – Comple...
Tribal Crossing: Why Couchbase Server?●   SPEED, SPEED, SPEED●   Immediate consistency●   Interface is dead simple to use ...
Tribal Crossing: New Challenges With Couchbase●   But, there are some different challenges in    using Couchbase (currentl...
Tribal Crossing: Deploying Couchbase in EC2            Web Server              Apache                 ●   Basic production...
Tribal Crossing: Deploying Couchbase in EC2           Web Server                                    ●   Amazon Linux AMI, ...
Tribal Crossing: Deploying Couchbase in EC2            Web Server              Apache                 Moxi figures out whi...
Tribal Crossing: Representing Game Data in CouchbaseUse case - simple farming game:●   A player can have a variety of plan...
Tribal Crossing: Representing Game Data in CouchbaseRepresenting Objects●   Simply treat an object as an associative array...
Tribal Crossing: Representing Game Data in CouchbasePlayer ObjectKey: Player1                Plant ObjectArray            ...
Tribal Crossing: Schema-less Game Data●   No need to “ALTER TABLE”●   Add new “fields” all objects at any time        – Sp...
Tribal Crossing: Accessing Game Data in CouchbaseGet all plants belong to a given playerRequest:   GET   /player/1/farm$pl...
Tribal Crossing: Modifying Game Data in CouchbaseGive a player a new plant// Create the new plant$new_plant = array (   id...
Tribal Crossing: ConcurrencyConcurrency issue can occur whenmultiple requests are working withthe same piece of data.Solut...
Tribal Crossing: Data Relationship●   Record object relationships both ways        – Example:     Plots and Plants        ...
Tribal Crossing: Migrating to Couchbase ServersFirst migrated large or slow performing tables andfrequently updated fields...
Tribal Crossing: Deployment                              38
Tribal Crossing: Deployment                              39
Tribal Crossing: Conclusion• Significantly reduced the cost incurred by scaling up  database servers and managing them.• A...
Agenda     • Introduction     • What is Couchbase Server?         – Simple, Fast, Elastic         – Technology Overview (A...
Product Roadmap: Couchbase Server 2.0• Mobile to cloud data synchronization• Cross data center replication     US West Coa...
Product Roadmap: Couchbase Server 2.0•   Replace Sqlite-based storage engine with CouchDB•   Support indexing and querying...
Couchbase Product Download• Community Edition   – Open source build   – Free forum support• Enterprise Edition   – Free fo...
Q&ASteven Mih, Couchbase Inc. (steven@couchbase.com) Bin Cui, Couchbase Inc. (bin@couchbase.com)                          ...
QClubQClub是由InfoQ中文站定期组织的一个线下技术交流活动,目的是让中高端技术人员有一 个相对自由的交流思想和交友的平台。每次QClub只关注一个主题,邀请国内外在该主题领域有研究的技术专家分享其经验,但QClub更注重讨论,因为它...
Upcoming SlideShare
Loading in...5
×

Couchbase b jmeetup

2,414

Published on

Couchbase,meetup

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,414
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
37
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Couchbase b jmeetup

  1. 1. USING COUCHBASE FOR SOCIAL GAME SCALING AND SPEED Steven Mih, Couchbase Inc. Bin Cui, Couchbase Inc. 1
  2. 2. Agenda • Introduction • What is Couchbase Server? – Simple, Fast, Elastic – Technology Overview (Architecture, data flow, rebalancing) • Tribal Crossing Inc: Animal Party – Challenges before Couchbase • Original Architecture – Why Couchbase? • Simplicity • Performance • Flexibility – Deploying Couchbase • New Architecture • EC2 • Data Model • Accessing data in Couchbase • Product Roadmap • Q&A 2
  3. 3. Couchbase Inc.• Membase and CouchOne have merged to form Couchbase Inc. (headquartered in Silicon Valley)• Team – Brings together the creators and core contributors of Memcached, Membase and CouchDB technologies – Doubles technical team size, accelerates roadmaps by over a year• Products – Couchbase Server (Formerly Membase) – Couchbase Single Server – Mobile Couchbase (iPhone and Android)• Technology – Most mature, reliable and widely deployed NoSQL technologies – Fully featured, open source document datastore – First complete, end-to-end NoSQL database product 3
  4. 4. Modern Interactive Web Application Architecture Application Scales Out Just add more commodity web servers www.facebook.com/animalparty Load Balancer Web Servers Relational Database Scales Up Get a bigger, more complex server Database- Expensive and disruptive sharding- Doesn’t perform at Web Scale 4
  5. 5. Couchbase Server is a distributed database Couchbase Web Console Application user Web application server Couchbase Servers 5
  6. 6. Couchbase data layer scales like application logic tierData layer now scales with linear cost and constant performance. Application Scales Out www.facebook.com/animalparty Just add more commodity web servers Load Balancer Web Servers Couchbase Servers Database Scales Out Just add more commodity data servers Horizontally scalable, schema-less, auto-sharding, high-performance at Web Scale Scaling out flattens the cost and performance curves. 6
  7. 7. Couchbase Demonstration• Membase ServerTemplate Demo – Starting with four database Application user nodes under load – Dynamically scaling to eight database nodes Web application server – Easy management and monitoring – Not possible any other Couchbase Servers database technology In the EC2 or Datacenter 7
  8. 8. Couchbase Server is Simple, Fast, Elastic • Five minutes or less to a working cluster – Downloads for Windows, Linux and OSX – Start with a single node – One button press joins nodes to a cluster • Easy to develop against – Just SET and GET – no schema required – Drop it in. 10,000+ existing applications already “speak Couchbase” (via memcached) – Practically every language and application framework is supported, out of the box • Easy to manage – One-click failover and cluster rebalancing – Graphical and programmatic interfaces – Configurable alerting 8
  9. 9. Couchbase Server is Simple, Fast, Elastic • Predictable – “Never keep an application waiting” – Quasi-deterministic latency and throughput • Low latency – Built-in Memcached technology – Auto-migration of hot data to lowest latency storage technology (RAM, SSD, Disk) – Selectable write behavior – asynchronous, synchronous (on replication, persistence) • High throughput – Multi-threaded – Low lock contention – Asynchronous wherever possible – Automatic write de-duplication 9
  10. 10. Couchbase Server is Simple, Fast, Elastic • Zero-downtime elasticity Couchbase Web Console – Spread I/O and data across commodity servers (or VMs) – Consistent performance with linear cost – Dynamic rebalancing of a live cluster • All nodes are created equal – No special case nodes – Clone to grow • Extensible – Change feeds – Real-time map-reduce – RESTful interface for management 10
  11. 11. Proven at Small, and Extra Large Scale • Leading cloud service (PAAS) • Social game leader – FarmVille, provider Mafia Wars, Empires and Allies, • Over 150,000 hosted applications Café World, FishVille • Couchbase Server serving over • Over 230 million monthly users 6,200 Heroku customers • Couchbase Server is the primary database behind key Zynga properties 11
  12. 12. Customers and Partners Customers (partial listing) Partners 12
  13. 13. Couchbase Server Architecture 11211 11210 memcapable 1.0 memcapable 2.0 moxi REST management API/Web UI vBucket state and replication manager Global singleton supervisor Rebalance orchestrator Configuration manager memcached Node health monitor Process monitor protocol listener/sender Heartbeat Data Manager Cluster Manager engine interface Couchbase Storage Engine http on each node one per cluster Erlang/OTP HTTP erlang port mapper distributed erlang 8091 4369 21100 – 21199 13
  14. 14. Couchbase Server Architecture 11211 11210 memcapable 1.0 memcapable 2.0 moxi vBucket state and replication manager REST management API/Web UI Global singleton supervisor Rebalance orchestrator Configuration manager memcached Node health monitor Process monitor protocol listener/sender Heartbeat engine interface Couchbase Storage Engine http on each node one per cluster Erlang/OTP HTTP erlang port mapper distributed erlang 8091 4369 21100 – 21199 14
  15. 15. Couchbase “write” Data Flow – application viewUser action results in the need to change the VALUE of KEY 1 Application updates key’s VALUE, 2 performs SET operation 4 Couchbase client hashes KEY, identifies 3 KEY’s master server SET request sent over network to master server 5 Couchbase replicates KEY-VALUE pair, caches it in memory and stores it to disk 15
  16. 16. Couchbase Data Flow – under the hood SET request arrives at SET acknowledgement KEY’s master server 1 3 returned to application 2 2 Listener-Sender Listener-Sender Listener-Sender RAM* RAM* RAM* membase storage engine membase storage engine Couchbase storage engine 2 SSD SSD SSD SSD SSD SSD SSD SSD SSD Disk Disk Disk 4 Disk Disk Disk Disk Disk DiskReplica Server 1 for KEY Master server for KEY Replica Server 2 for KEY 16
  17. 17. Elasticity - Rebalancing Node 1 Node 2 Node 3Before vBucket 1 vBucket 7• Adding Node 3 vBucket 2 vBucket 8 vBucket 3 vBucket 9• Node 3 is in pending state vBucket 4 vBucket 10 Pending state• Clients talk to Node 1,2 only vBucket 5 vBucket 11 vBucket 6 vBucket 12 vBucket 1 vBucket 7During vBucket 2 vBucket 8 vBucket 3 vBucket 9• Rebalancing orchestrator recalculates Rebalancing vBucket 4 vBucket 10 the vBucket map (including replicas) vBucket 5 vBucket 11• Migrate vBuckets to the new server vBucket 6 vBucket 12• Finalize migration vBucket migrator vBucket migrator ClientAfter vBucket 5• Node 3 is balanced vBucket 1 vBucket 7 vBucket 2 vBucket 6• Clients are reconfigured to talk to vBucket 8 vBucket 3 vBucket 9 vBucket 11 Node 3 vBucket 4 vBucket 10 vBucket 12 17
  18. 18. Data buckets are secure Couchbase “slices” Application user Web application server Bucket 1 Bucket 2 Aggregate Cluster Memory and Disk Capacity Couchbase data servers In the data center On the administrator console 18
  19. 19. Couchbase and Hadoop Integration• Support large-scale analytics on application data by streaming data from Couchbase to Hadoop – Real-time integration using Flume – Batch integration using Sqoop• Examples – Various game statistics (e.g., monthly / daily / hourly rankings) – Analyze game patterns from users to enhance various game metrics Flume memcached TAP protocol listener/sender Sqoop engine interface Couchbase Storage Engine 19
  20. 20. Agenda • Introduction • What is Couchbase Server? – Simple, Fast, Elastic – Technology Overview (Architecture, data flow, rebalancing) • Tribal Crossing Inc: Animal Party – Challenges before Couchbase • Original Architecture – Why Couchbase? • Simplicity • Performance • Flexibility – Deploying Couchbase • New Architecture • EC2 • Data Model • Accessing data in Couchbase • Product Roadmap • Q&A 20
  21. 21. Tribal Crossing: ChallengesCommon steps on scaling up database:● Tune queries (indexing, explain query)● Denormalization● Cache data (APC / Memcache)● Tune MySQL configuration● Replication (read slaves)Where do we go from here to prepare for the scale of asuccessful social game? 21
  22. 22. Tribal Crossing: Challenges● Write-heavy requests – Caching does not help – MySQL / InnoDB limitation (Percona)● Need to scale drastically over night – My Polls – 100 to 1m users over a weekend● Small team, no dedicated sysadmin – Focus on what we do best – making games● Keeping cost down 22
  23. 23. Tribal Crossing: “Old” Architecture and Options● MySQL with master-to-master replication and sharding – Complex to setup, high administration cost – Requires application level changes● Cassandra – High write, but low read throughput – Live cluster reconfiguration and rebalance is quite complicated – Eventual consistency gives too much burden to application developers● MongoDB – High read/write, but unpredictable latency – Live cluster rebalance for existing nodes only – Eventual consistency with slave nodes 23
  24. 24. Tribal Crossing: Why Couchbase Server?● SPEED, SPEED, SPEED● Immediate consistency● Interface is dead simple to use – We are already using Memcache● Low sysadmin overhead● Schema-less data store● Used and Proven by big guys like Zynga● … and lastly, because Tribal CAN – Bigger firms with legacy code base = hard to adapt – Small team = ability to get on the cutting edge 24
  25. 25. Tribal Crossing: New Challenges With Couchbase● But, there are some different challenges in using Couchbase (currently 1.7) to handle the game data: – No easy way to query data – No transaction / rollback ➔ Couchbase Server 2.0 resolves them by using CouchDB as the underlying database engine● Can this work for an online game? – Break out of the old ORM / relational paradigm! – We are not handling bank transactions 25
  26. 26. Tribal Crossing: Deploying Couchbase in EC2 Web Server Apache ● Basic production environment setup Client-side Moxi ● Dev/Stage environment – Cluster Mgmt. Requests feel free to install Couchbase on your web DNS Entry server Couchbase … Couchbase Couchbase Cluster 26
  27. 27. Tribal Crossing: Deploying Couchbase in EC2 Web Server ● Amazon Linux AMI, Apache 64-bit, EBS backed instance Client-side Moxi ● Setup swap space Cluster Mgmt. Requests ● Install Couchbase’s Membase Server 1.7 DNS Entry ● Access web console http://<hostname>:8091 ● Start the new cluster with a … single node Couchbase Couchbase ● Add the other nodes to the Couchbase Cluster cluster and rebalance 27
  28. 28. Tribal Crossing: Deploying Couchbase in EC2 Web Server Apache Moxi figures out which node in the cluster holds data for a given key. Client-side Moxi ● On each web server, install Moxi Cluster Mgmt. Requests proxy ● Start Moxi by pointing it to the DNS Entry DNS entry you created ● Web apps connect to Moxi that is running locally memcache->addServer(‘localhost’, 11211); Couchbase … Couchbase Couchbase Cluster 28
  29. 29. Tribal Crossing: Representing Game Data in CouchbaseUse case - simple farming game:● A player can have a variety of plants on their farm.● A player can add or remove plants from their farm.● A Player can see what plants are on another players farm. 29
  30. 30. Tribal Crossing: Representing Game Data in CouchbaseRepresenting Objects● Simply treat an object as an associative array● Determine the key for an object using the class name (or type) of the object and an unique IDRepresenting Object Lists● Denormalization● Save a comma separated list or an array of object IDs 30
  31. 31. Tribal Crossing: Representing Game Data in CouchbasePlayer ObjectKey: Player1 Plant ObjectArray Key: Plant201( [Id] => 1 Array [Name] => Shawn () [Id] => 201 [Player_Id] => 1 [Name] => StarflowerPlayerPlant List )Key: Player1_PlantListArray( [0] => 201 [1] => 202 [2] => 204) 31
  32. 32. Tribal Crossing: Schema-less Game Data● No need to “ALTER TABLE”● Add new “fields” all objects at any time – Specify default value for missing fields – Increased development speed● Using JSON for data objects though, owing to the ability to query on arbitrary fields in Couchbase 2.0 32
  33. 33. Tribal Crossing: Accessing Game Data in CouchbaseGet all plants belong to a given playerRequest: GET /player/1/farm$plant_ids = couchbase->get(Player1_PlantList);$response = array();foreach ($plant_ids as $plant_id){ $plant = couchbase->get(Plant . $plant_id); $response[] = $plant;}echo json_encode($response); 33
  34. 34. Tribal Crossing: Modifying Game Data in CouchbaseGive a player a new plant// Create the new plant$new_plant = array ( id => 100, name => Mushroom);$couchbase->set(Plant100, $new_plant);// Update the player plant list$plant_ids = $couchbase->get(Player1_PlantList);$plant_ids[] = $new_plant[id];$couchbase->set(Player1_PlantList, $plant_ids); 34
  35. 35. Tribal Crossing: ConcurrencyConcurrency issue can occur whenmultiple requests are working withthe same piece of data.Solution:● CAS (check-and-set) – Client can know if someone else has modified the data while you are trying to update – Implement optimistic concurrency control● Locking (try/wait cycle) – GETL (get with lock + timeout) operations – Pessimistic concurrency control 35
  36. 36. Tribal Crossing: Data Relationship● Record object relationships both ways – Example: Plots and Plants ● Plot object stores id of the plant that it hosts ● Plant object stores id of the plot that it grows on – Resolution in case of mismatch● Dont sweat the extra calls to load data in a one-to- many relationship – Use multiGet – We can still cache aggregated results in a Memcache bucket if needed 36
  37. 37. Tribal Crossing: Migrating to Couchbase ServersFirst migrated large or slow performing tables andfrequently updated fields from MySQL to Couchbase Web Server Apache + PHP Client-side Moxi MySQL memcached TAP protocol listener/sender engine interface Reporting TAP Client Applications Couchbase Storage Engine 37
  38. 38. Tribal Crossing: Deployment 38
  39. 39. Tribal Crossing: Deployment 39
  40. 40. Tribal Crossing: Conclusion• Significantly reduced the cost incurred by scaling up database servers and managing them.• Achieved significant improvements in various performance metrics (e.g., read, write, latency, etc.)• Allowed them to focus more on game development and optimizing key metrics• Plan to use real-time MapReduce, querying, and indexing abilities provided by the upcoming Elastic Couchbase 2.0 40
  41. 41. Agenda • Introduction • What is Couchbase Server? – Simple, Fast, Elastic – Technology Overview (Architecture, data flow, rebalancing) • Tribal Crossing Inc: Animal Party – Challenges before Couchbase • Original Architecture – Why Couchbase? • Simplicity • Performance • Flexibility – Deploying Couchbase • New Architecture • EC2 • Data Model • Accessing data in Couchbase • Product Roadmap • Q&A 41
  42. 42. Product Roadmap: Couchbase Server 2.0• Mobile to cloud data synchronization• Cross data center replication US West Coast Data Center US East Coast Data Center Couchbase Couchbase Server CouchSync Server CouchSync CouchSync Couchbase Single Server Couchbase Single Server CouchSync CouchSync … … … … … … 42
  43. 43. Product Roadmap: Couchbase Server 2.0• Replace Sqlite-based storage engine with CouchDB• Support indexing and querying on values• Integrate real-time MapReduce into Couchbase server• SDK for Couchbase server Membase Server 1.7 CouchDB 1.1 Couchbase Server 2.0The world’s leading caching The most reliable and full- The fastest, most complete and and clustering technology featured document database most reliable database on the planet 43
  44. 44. Couchbase Product Download• Community Edition – Open source build – Free forum support• Enterprise Edition – Free for non-production use – Certified, QA tested version of open source – Case tracking and guaranteed SLA for production environments• Community Sponsors in China – Interested in being Couchbase Ambassador for Beijing? 44
  45. 45. Q&ASteven Mih, Couchbase Inc. (steven@couchbase.com) Bin Cui, Couchbase Inc. (bin@couchbase.com) 45
  46. 46. QClubQClub是由InfoQ中文站定期组织的一个线下技术交流活动,目的是让中高端技术人员有一 个相对自由的交流思想和交友的平台。每次QClub只关注一个主题,邀请国内外在该主题领域有研究的技术专家分享其经验,但QClub更注重讨论,因为它认为讨论才是真理,从讨论中才能激发参与者的智慧和火花。关注我们:weibo.com/infoqchinaQClub专题页:http://www.infoq.com/cn/qclub/ 敏捷 运维 QClub SOA 桥梁 InfoQ 云计算 技术演讲 争鸣 Open Space Ruby 畅想 技术社区活动 沟通 日历 分享 .NET Java 社区 趋势 交流 话题 QClub 架构
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×