Sunday, June 28, 2015

How Twitter Stores 250 Million Tweets a Day Using MySQL - High Scalability -



How Twitter Stores 250 Million Tweets a Day Using MySQL - High Scalability -

Twitter's original tweet store:

  • Temporally sharded tweets was a good-idea-at-the-time architecture. Temporal sharding simply means tweets from the same date range are stored together on the same shard.
  • The problem is tweets filled up one machine, then a second, and then a third. You end up filling up one machine after another.
  • This is a pretty common approach and one that has some real flaws:
    • Load balancing. Most of the old machines didn't get any traffic because people are interested in what is happening now, especially with Twitter. 
    • Expensive. They filled up one machine, with all its replication slaves, every three weeks, which is an expensive setup.
    • Logistically complicated. Building a whole new cluster every three weeks is a pain for the DBA team. 
MySQL Isn't Used For Everything:
Cassandra is used for high velocity writes, and lower velocity reads.
The advantage is Cassandra can run on cheaper hardware than MySQL, it can expand easier, and they like schemaless design.
Hadoop is used to process unstructured and large datasets, hundreds of billions of rows.
Vertica is being used for analytics and large aggregations and joins so they don't have to write MapReduce jobs.
Some Other Ideas:
Loose coupling. Whenever something breaks they realize it wasn't loosely coupled enough and something pushed back way to hard on something else.
Soft launches. Decouple pushing a release out and driving new traffic to something. Features can be turned on and off.
Open source.
His idea is as a developer, open sourcing code, means you can think about your software knowing it won't go away. It's not just another throw away piece of software inside a corporate blackhole. That gives you permission to think of corporate software development in a different, more lasting way, more meaningful way.

Database sharding
http://highscalability.com/unorthodox-approach-database-design-coming-shard
Rebalancing data
http://highscalability.com/blog/category/shard

Read full article from How Twitter Stores 250 Million Tweets a Day Using MySQL - High Scalability -

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts