Swift Architecture and Practice, by Alex Yang

6,629 views
6,337 views

Published on

Swift Architecture and Practice by Alex Yang in the 2012 OpenStack APAC Conference

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,629
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
198
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Swift Architecture and Practice, by Alex Yang

  1. 1. 架构与实践Swift 在这里写上你的标题 @SinaAppEngine 副标题文字副标题文字 杨雨 /2012-08-日 作者名字 / 11 期
  2. 2. Content1 Principles and Architecture 写上你的文字你的文字 002 The Practice of Swift @SinaAppEngine 01 023 Problems and Imporvemetns 03 04 05
  3. 3. Storage TypesTypes Protocol Application 00 写上你的文字你的文字Block Storage SATA, SCSI, iSCSI SAN, NAS, EBS 01File Storage Ext3/4, XFS, NTFS PC, Servers, NFS 02Object Storage HTTP, REST Amazon S3, 03 Google Cloud Storage, Rackspace Cloud Files 04Specific Storage Specific protocol MySQL, MongoDB, 05 based on tcp HDFS
  4. 4. Storage Types 00 写上你的文字你的文字 01 02 03 04 05From: http://www.buildcloudstorage.com/2012/08/is-openstack-swift-reliable-enough-for.html
  5. 5. Targets•High Reliability = High Durability + High Availability•High Durability - Replicas and Recovery•High Availability - Replicas and Partition•Low Cost - Commodity Hardware•Scale Out - No Single Bottleneck, Share Nothing
  6. 6. Reliability Consistent Hashing
  7. 7. Reliability Consistent Hashing with Virtual Node
  8. 8. Reliability Consistent Hashing with Virtual Node
  9. 9. ReliabilityThe advantages of consistent hashing:1.Metadata is small;(AWS S3 has 762 billion objects)2.Distribution unformity;3.Peer to perr comunication;4.Load blance.
  10. 10. Reliability •Virtual node(partition) - Object distribution uniformity •Weight - Allocate partitions dynamically •Zone - Partition Tolerance Zones can be used to group devices based on physical locations, power separations, network separations, or any other attribute that would lessen multiple replicas being unavailable at the same time. Swift : Ring - The index file for locating object in the cluster.
  11. 11. Reliability
  12. 12. ReliabilityDurability: 99.999..9%? AWS S3 with 99.999999999% •Annualized failure rate of devices.(disk, network...) •Bit rot rate and the time to detect bit rot. •Mean time to recovery. •More about durability : http://www.buildcloudstorage.com/2012/08/is-openstack-swift- reliable-enough-for.htmlSwift :Auditor - To detect bit rot;Replicator-To keep the consistency of object;
  13. 13. Consistency Model
  14. 14. Consistency ModelQuroum + Object Version + Async ReplicatitonQuroum Protocol:N, the number of nodes that store replicas of the data;W, the number of replicas that need to acknowledge the receipt of theupdate before the update completes;R, the number of replicas that are contacted when a data object isaccessed through a read operation;If W+R>N, then the write set and the read set always overlap and one canguarantee strong consistency.In Swift, NWR is configurable.General configuration: N=3, W=2, R=1 or 2, So the swift can providetwomodels of consistency, strong and eventual.
  15. 15. Consistency ModelWeak Consistency ( N=3,W=2,R=1 )
  16. 16. Consistency ModelStrong Consistency ( N=3,W=2,R=2 )
  17. 17. Consistency ModelSpecial Scene : dirty read
  18. 18. Architecture Prototype
  19. 19. Metadataaccount |-- container1 |------obj1 |------obj2 |-- container2 |------objNHow to store the relationship of account, container and object?•Relation Database•NoSQL, Cassandra, MongoDB•Relation Datatbase with Sharding
  20. 20. Metadata The target of swift: no single failure, no bottletneck, scale outThe Swift way: sqlite + consistent hashing + quroumA sqlite db file is an object.So the database is HA, durable and with eventual consistency.
  21. 21. Architecture
  22. 22. Swift Practice@SinaAppEngine
  23. 23. Swift Practice@SinaAppEngine
  24. 24. Our Works•Swift as the SAE Storage-Auth module for SAE(Key-Pair)-Keystone for SAE(Token)-HTTP Cache-Control module-Quota(limit the number of containers and objects, limit the storage usage)-Domain remap app-domain.stor.sinaapp.com/obj To sinas3.com/v1/SAE_app/domain-Rsync with bwlimit-Billing-Storage Firewall•Swift as the SWS Simple Storage Service-Container unique module container.sinas3.com/object-Keystone middleware for auth protocol converting
  25. 25. Our Steps for Switching SAE Storage•Bypass test one month online( 旁路读写测试 )•Switch step by step one month( 灰度切换 )•Ops Monitoring: I/O, CPU, Memery, Disk LogCenter: syslog-ng, statistics and analytics
  26. 26. Problems&ImporvementsThe async processor for keeping eventual consistency is inefficient.Replicator, auditor, container-updaterLogic: loop all objects or dbs on disk, query replicas server to determinwhether to sync.Results: High I/O; High CPU usage; Stress on account/container/object-servers, impact the availability; Long time for eventual consistency, impactthe durability; The list operation is not consistent.How to improvements?1.Runing replicator, auditor and container updater during idle time;2.An appropriate deployment;3.A new protocol for keeping relplicas consistency; (based on log and message queue)4.Adding new nodes, scale out.
  27. 27. Problems&ImporvementsThe performance of sqlite.Quota for objects and containersRunning sqlite on the high performance I/O devicesThe bandwidth of rsync is not under control.Out-of-band managementAdd bandwidth limitations for rsyncDatabase centralized or distributed?
  28. 28. Problems&ImporvementsAn appropriate deployment
  29. 29. Q&A Weibo: @AlexYang_Coder Email: yangyu4@staff.sina.com.cn GTalk: alex890714@gmail.com Blog: http://alexyang.sinaapp.com

×