Thursday, September 3, 2015

[NineChap System Design] Class 3.1: Web Service - Shuatiblog.com



[NineChap System Design] Class 3.1: Web Service - Shuatiblog.com

  • how the internet works
  • DNS
  • Web server
  • Music Player
  • MP3 file
  • 秒杀

  • how to solve raido-play failures

    > Failure rate  = % user who can't listen to music properly

    > = # user who fail to plya one song / # total users
    Misson: reduce failure rate.

    If a server uses Cookie to identify unique users, the result might be > real users.

    However, if server uses IP address, the result might be < real users.
    1. user send a log to server when it visits
    2. user send another log after it plays a song
    3. we can identify users who failed to play a song
    In fact, everything should be logged, including play, pause, switch song, refresh etc.
    Summary
    define failure rate
    user cookie to identify user
    use log to collect failure data
    analysis pattern of failure againt date/time

    Real data: failure rate 20%

    In practise, the real failure rate is 20%. Which is:

    8% DNS
    5% Web
    5% MP3
    2% Player

    Fix the web problem

    Highest failure rate:

    3pm office hour
    9pm highest bandwidth nation-wide

    Solution 2, reduce size of web pagesimplify javascript files
    compress images (lower dpi)
    merge large images to 1 image (less requests)
    lazy loading (Pinterest uses it a lot)
    Solution 3, more cacheable pages

    Change dynamic webpages to static pages. The advantage of this is:
    more search engine friendly.
    more cache friendly.
    Summary on caching

    Caching can happen at place Number 1, 2 and 3:
    AT Number 4, we can add more servers. Number 3, reverse proxy. Number 2 iscaching within the ISP network, which avoids requesting info again from backend. Number 1 is front-end browser cache.

    After this step, Web failure rate fall from 7% to 4%. Why still 4%? Well, these failure is mainly from the junk users created by marketing.Read full article from [NineChap System Design] Class 3.1: Web Service - Shuatiblog.com

    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