├── README.md ├── system_design_links.md └── system_design_links_vol2.md /README.md: -------------------------------------------------------------------------------- 1 | ### System Design Interview - An Insider's Guide book (Volume 1) 2 | 3 | - Link to the book: https://amzn.to/3ggPKAG 4 | 5 | - Links to reference materials: [Click here](system_design_links.md) 6 | 7 |
8 | 9 | ### System Design Interview - An Insider's Guide book (Volume 2) 10 | 11 | - Link to the book: https://amzn.to/34G2vmC 12 | 13 | - Links to reference materials: [Click here](system_design_links_vol2.md) 14 | 15 |
16 | 17 | ### ByteByteGo System Design Blog 18 | 19 | Link to the blog: https://blog.bytebytego.com 20 | 21 |
22 | 23 | ### Digital Version of the Content 24 | 25 | Link to the website: https://bytebytego.com/ 26 | -------------------------------------------------------------------------------- /system_design_links.md: -------------------------------------------------------------------------------- 1 | Reference Materials for System Design Interview - An Insider's Guide (Volume 1) book (https://amzn.to/3ggPKAG) 2 | 3 | ## Chapter 1: Scale From Zero To Millions Of Users 4 | 5 | [[1] Hypertext Transfer Protocol](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol) 6 | [[2] Should you go Beyond Relational Databases?](https://blog.teamtreehouse.com/should-you-go-beyond-relational-databases) 7 | [[3] Replication]() 8 | [[4] Multi-master replication](https://en.wikipedia.org/wiki/Multi-master_replication) 9 | [[5] NDB Cluster Replication - Multi-Master and Circular Replication](https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-replication-multi-source.html) 10 | [[6] Caching Strategies and How to Choose the Right One](https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/) 11 | [[7] Scaling Memcache at Facebook](https://www.usenix.org/system/files/conference/nsdi13/nsdi13-final170_update.pdf) 12 | [[8] Single point of failure](https://en.wikipedia.org/wiki/Single_point_of_failure) 13 | [[9] Amazon CloudFront Dynamic Content Delivery](https://aws.amazon.com/cloudfront/dynamic-content/) 14 | [[10] Configure Sticky Sessions for Your Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html) 15 | [[11] Active-Active for Multi-Regional Resiliency](https://netflixtechblog.com/active-active-for-multi-regional-resiliency-c47719f6685b) 16 | [[12] Amazon EC2 High Memory Instances](https://aws.amazon.com/ec2/instance-types/high-memory/) 17 | [[13] What it takes to run Stack Overflow](http://nickcraver.com/blog/2013/11/22/what-it-takes-to-run-stack-overflow) 18 | [[14] What The Heck Are You Actually Using NoSQL For](http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html) 19 | 20 | ## Chapter 2: Back-of-the-envelope Estimation 21 | 22 | [[1] J. Dean.Google Pro Tip - Use Back-Of-The-Envelope-Calculations To Choose The Best Design](http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-calculations-to-choo.html) 23 | [[2] System design primer](https://github.com/donnemartin/system-design-primer) 24 | [[3] Latency Numbers Every Programmer Should Know](https://colin-scott.github.io/personal_website/research/interactive_latency.html) 25 | [[4] Amazon Compute Service Level Agreement](https://aws.amazon.com/compute/sla/) 26 | [[5] Compute Engine Service Level Agreement (SLA)](https://cloud.google.com/compute/sla) 27 | [[6] SLA summary for Azure services](https://azure.microsoft.com/en-us/support/legal/sla/summary/) 28 | 29 | ## Chapter 4: Design A Rate Limiter: 30 | 31 | [[1] Rate-limiting strategies and techniques](https://cloud.google.com/solutions/rate-limiting-strategies-techniques) 32 | [[2] Twitter rate limits](https://developer.twitter.com/en/docs/basics/rate-limits) 33 | [[3] Google docs usage limits](https://developers.google.com/docs/api/limits) 34 | [[4] IBM microservices](https://www.ibm.com/cloud/learn/microservices) 35 | [[5] Throttle API requests for better throughput](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) 36 | [[6] Stripe rate limiters](https://stripe.com/blog/rate-limiters) 37 | [[7] Shopify REST Admin API rate limits](https://help.shopify.com/en/api/reference/rest-admin-api-rate-limits) 38 | [[8] Better Rate Limiting With Redis Sorted Sets](https://engineering.classdojo.com/blog/2015/02/06/rolling-rate-limiter/) 39 | [[9] System Design - Rate limiter and Data modelling](https://medium.com/@saisandeepmopuri/system-design-rate-limiter-and-data-modelling-9304b0d18250) 40 | [[10] How we built rate limiting capable of scaling to millions of domains](https://blog.cloudflare.com/counting-things-a-lot-of-different-things/) 41 | [[11] Redis website](https://redis.io/) 42 | [[12] Lyft rate limiting](https://github.com/lyft/ratelimit) 43 | [[13] Scaling your API with rate limiters](https://gist.github.com/ptarjan/e38f45f2dfe601419ca3af937fff574d#request-rate-limiter) 44 | [[14] What is edge computing](https://www.cloudflare.com/learning/serverless/glossary/what-is-edge-computing/) 45 | [[15] Rate Limit Requests with Iptables](https://blog.programster.org/rate-limit-requests-with-iptables) 46 | [[16] OSI model](https://en.wikipedia.org/wiki/OSI_model#Layer_architecture) 47 | 48 | ## Chapter 5: Design Consistent Hashing 49 | 50 | [[1] Consistent hashing wiki](https://en.wikipedia.org/wiki/Consistent_hashing) 51 | [[2] Consistent Hashing](https://tom-e-white.com/2007/11/consistent-hashing.html) 52 | [[3] Dynamo - Amazon's Highly Available Key-value Store](https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf) 53 | [[4] Cassandra - A Decentralized Structured Storage System](http://www.cs.cornell.edu/Projects/ladis2009/papers/Lakshman-ladis2009.PDF) 54 | [[5] How Discord Scaled Elixir to 5,000,000 Concurrent Users](https://blog.discord.com/scaling-elixir-f9b8e1e7c29b) 55 | [[6] CS168 - The Modern Algorithmic Toolbox Lecture #1: Introduction and Consistent Hashing](http://theory.stanford.edu/~tim/s16/l/l1.pdf) 56 | [[7] Maglev - A Fast and Reliable Software Network Load Balancer](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44824.pdf) 57 | 58 | ## Chapter 6: Design A Key-value Store 59 | 60 | [[1] Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 61 | [[2] memcached](https://memcached.org/) 62 | [[3] Redis](https://redis.io/) 63 | [[4] Dynamo: Amazon's Highly Available Key-value Store](https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf) 64 | [[5] Cassandra](https://cassandra.apache.org/) 65 | [[6] Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) 66 | [[7] Merkle tree](https://en.wikipedia.org/wiki/Merkle_tree) 67 | [[8] Cassandra architecture](https://cassandra.apache.org/doc/latest/architecture/) 68 | [[9] SStable](https://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/) 69 | [[10] Bloom filter](https://en.wikipedia.org/wiki/Bloom_filter) 70 | 71 | ## Chapter 7: Design A Unique Id Generator In Distributed Systems 72 | 73 | [[1] Universally unique identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier) 74 | [[2] Ticket Servers - Distributed Unique Primary Keys on the Cheap](https://code.flickr.net/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/) 75 | [[3] Announcing Snowflake](https://blog.twitter.com/engineering/en_us/a/2010/announcing-snowflake.html) 76 | [[4] Network time protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) 77 | 78 | ## Chapter 8: Design A Url Shortener 79 | 80 | [[1] A RESTful Tutorial](https://www.restapitutorial.com/index.html) 81 | [[2] Bloom filter](https://en.wikipedia.org/wiki/Bloom_filter) 82 | 83 | ## Chapter 9: Design A Web Crawler 84 | 85 | [[1] US Library of Congress](https://www.loc.gov/websites/) 86 | [[2] EU Web Archive](http://data.europa.eu/webarchive) 87 | [[3] Digimarc](https://www.digimarc.com/products/digimarc-services/piracy-intelligence) 88 | [[4] Mercator: A scalable, extensible web crawler](https://courses.cs.washington.edu/courses/cse454/15wi/papers/mercator.pdf) 89 | [[5] Web Crawling](http://infolab.stanford.edu/~olston/publications/crawling_survey.pdf) 90 | [[6] 29% Of Sites Face Duplicate Content Issues](https://tinyurl.com/y6tmh55y) 91 | [7] Rabin M.O., et al. Fingerprinting by random polynomials Center for Research in Computing Techn., Aiken Computation Laboratory, Univ. (1981) 92 | [8] B. H. Bloom, Space/time trade-offs in hash coding with allowable errors, Communications of the ACM, vol. 13, no. 7, pp. 422-426, 1970. 93 | [[9] Donald J. Patterson, Web Crawling](https://www.ics.uci.edu/~lopes/teaching/cs221W12/slides/Lecture05.pdf) 94 | [10] L. Page, S. Brin, R. Motwani, and T. Winograd, The PageRank citation ranking: Bringing order to the web, Technical Report, Stanford University, 1998. 95 | [11] Burton Bloom. Space/time trade-offs in hash coding with allowable errors. Communications of the ACM, 13(7), pages 422--426, July 1970. 96 | [[12] Google Dynamic Rendering](https://developers.google.com/search/docs/guides/dynamic-rendering) 97 | [13] T. Urvoy, T. Lavergne, and P. Filoche, Tracking web spam with hidden style similarity, in Proceedings of the 2nd International Workshop on Adversarial Information Retrieval on the Web, 2006. 98 | [[14] IRLbot: Scaling to 6 billion pages and beyond](http://irl.cs.tamu.edu/people/hsin-tsang/papers/tweb2009.pdf) 99 | 100 | ## Chapter 10: Design A Notification System 101 | 102 | [[1] Twilio SMS](https://www.twilio.com/sms) 103 | [[2] Nexmo SMS](https://www.nexmo.com/products/sms) 104 | [[3] Sendgrid](https://sendgrid.com/) 105 | [[4] Mailchimp](https://mailchimp.com/) 106 | [[5] You Cannot Have Exactly-Once Delivery](https://bravenewgeek.com/you-cannot-have-exactly-once-delivery/) 107 | [[6] App Keys & Secrets: Security](https://bit.ly/36txfnV) 108 | [[7] RadditMQ](https://bit.ly/2sotIa6) 109 | 110 | ## Chapter 11: Design A News Feed System 111 | 112 | [[1] How News Feed Works](https://www.facebook.com/help/327131014036297/) 113 | [[2] Friend of Friend recommendations Neo4j and SQL Sever](https://bit.ly/3rcNPlO) 114 | 115 | ## Chapter 12: Design A Chat System 116 | 117 | [[1] Erlang at Facebook](https://www.erlang-factory.com/upload/presentations/31/EugeneLetuchy-ErlangatFacebook.pdf) 118 | [[2] Messenger and WhatsApp process 60 billion messages a day](https://www.theverge.com/2016/4/12/11415198/facebook-messenger-whatsapp-number-messages-vs-sms-f8-2016) 119 | [[3] Long tail](https://en.wikipedia.org/wiki/Long_tail) 120 | [[4] The Underlying Technology of Messages](https://www.facebook.com/notes/facebook-engineering/the-underlying-technology-of-messages/454991608919/) 121 | [[5] How Discord Stores Billions of Messages](https://blog.discordapp.com/how-discord-stores-billions-of-messages-7fa6ec7ee4c7) 122 | [[6] Announcing Snowflake](https://blog.twitter.com/engineering/en_us/a/2010/announcing-snowflake.html) 123 | [[7] Apache ZooKeeper](https://zookeeper.apache.org/) 124 | [[8] From nothing: the evolution of WeChat background system (Article in Chinese)](https://www.infoq.cn/article/the-road-of-the-growth-weixin-background) 125 | [[9] End-to-end encryption](https://faq.whatsapp.com/en/android/28030015/) 126 | [[10] Flannel: An Application-Level Edge Cache to Make Slack Scale](https://slack.engineering/flannel-an-application-level-edge-cache-to-make-slack-scale-b8a6400e2f6b) 127 | 128 | ## 13: Design A Search Autocomplete System 129 | 130 | [[1] The Life of a Typeahead Query](https://www.facebook.com/notes/facebook-engineering/the-life-of-a-typeahead-query/389105248919/) 131 | [[2] How We Built Prefixy: A Scalable Prefix Search Service for Powering Autocomplete](https://medium.com/@prefixyteam/how-we-built-prefixy-a-scalable-prefix-search-service-for-powering-autocomplete-c20f98e2eff1) 132 | [[3] Prefix Hash Tree An Indexing Data Structure over Distributed Hash Tables](https://people.eecs.berkeley.edu/~sylvia/papers/pht.pdf) 133 | [[4] MongoDB wikipedia](https://en.wikipedia.org/wiki/MongoDB) 134 | [[5] Unicode frequently asked questions](https://www.unicode.org/faq/basic_q.html) 135 | [[6] Apache hadoop](https://hadoop.apache.org/) 136 | [[7] Spark streaming](https://spark.apache.org/streaming/) 137 | [[8] Apache storm](https://storm.apache.org/) 138 | [[9] Apache kafka](https://kafka.apache.org/documentation/) 139 | 140 | ## Chapter 14: Design Youtube 141 | 142 | [[1] YouTube by the numbers](https://www.omnicoreagency.com/youtube-statistics/) 143 | [[2] 2019 YouTube Demographics](https://blog.hubspot.com/marketing/youtube-demographics) 144 | [[3] Cloudfront Pricing](https://aws.amazon.com/cloudfront/pricing/) 145 | [[4] Netflix on AWS](https://aws.amazon.com/solutions/case-studies/netflix/) 146 | [[5] Akamai homepage](https://www.akamai.com/) 147 | [[6] Binary large object](https://en.wikipedia.org/wiki/Binary_large_object) 148 | [[7] Here's What You Need to Know About Streaming Protocols](https://www.dacast.com/blog/streaming-protocols/) 149 | [[8] SVE: Distributed Video Processing at Facebook Scale](https://www.cs.princeton.edu/~wlloyd/papers/sve-sosp17.pdf) 150 | [[9] Weibo video processing architecture (in Chinese)](https://www.upyun.com/opentalk/399.html) 151 | [[10] Delegate access with a shared access signature](https://docs.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature) 152 | [[11] YouTube scalability talk by early YouTube employee](https://www.youtube.com/watch?v=w5WVu624fY8) 153 | [[12] Understanding the characteristics of internet short video sharing: A youtube-based measurement study](https://arxiv.org/pdf/0707.3670.pdf) 154 | [[13] Content Popularity for Open Connect](https://netflixtechblog.com/content-popularity-for-open-connect-b86d56f613b) 155 | 156 | ## Chapter 15: Design Google Drive 157 | 158 | [[1] Google Drive](https://www.google.com/drive/) 159 | [[2] Upload file data](https://developers.google.com/drive/api/v2/manage-uploads) 160 | [[3] Amazon S3](https://aws.amazon.com/s3) 161 | [[4] Differential Synchronization](https://neil.fraser.name/writing/sync/) 162 | [[5] Differential Synchronization youtube talk](https://www.youtube.com/watch?v=S2Hp_1jqpY8) 163 | [[6] How We've Scaled Dropbox](https://youtu.be/PE4gwstWhmc) 164 | [[7] The rsync algorithm](https://www.andrew.cmu.edu/course/15-749/READINGS/required/cas/tridgell96.pdf) 165 | [[8] Librsync. (n.d.). Retrieved April 18, 2015, from](https://github.com/librsync/librsync) 166 | [[9] ACID](https://en.wikipedia.org/wiki/ACID) 167 | [[10] Dropbox security white paper](https://www.dropbox.com/static/business/resources/Security_Whitepaper.pdf) 168 | [[11] Amazon S3 Glacier](https://aws.amazon.com/glacier/faqs/) 169 | 170 | ### Real-world systems 171 | 172 | The following materials can help you understand general design ideas of real system architectures behind different companies. 173 | [Facebook Timeline: Brought To You By The Power Of Denormalization](https://goo.gl/FCNrbm) 174 | [Scale at Facebook](https://www.infoq.com/presentations/Scale-at-Facebook/) 175 | [Building Timeline: Scaling up to hold your life story](https://goo.gl/8p5wDV) 176 | [Erlang at Facebook (Facebook chat)](https://goo.gl/zSLHrj) 177 | [Finding a needle in Haystack: Facebook's photo storage](https://goo.gl/edj4FL) 178 | [Serving Facebook Multifeed: Efficiency, performance gains through redesign](https://goo.gl/adFVMQ) 179 | [Scaling Memcache at Facebook](https://goo.gl/rZiAhX) 180 | [TAO: Facebook's Distributed Data Store for the Social Graph](https://goo.gl/Tk1DyH) 181 | [Amazon Architecture](https://goo.gl/k4feoW) 182 | [Dynamo: Amazon's Highly Available Key-value Store](https://goo.gl/C7zxDL) 183 | [A 360 Degree View Of The Entire Netflix Stack](https://goo.gl/rYSDTz) 184 | [It's All A/Bout Testing: The Netflix Experimentation Platform](https://goo.gl/agbA4K) 185 | [Netflix Recommendations: Beyond the 5 stars (Part 1)](https://goo.gl/A4FkYi) 186 | [Netflix Recommendations: Beyond the 5 stars (Part 2)](https://goo.gl/XNPMXm) 187 | [Google Architecture](https://goo.gl/dvkDiY) 188 | [The Google File System (Google Docs)](https://goo.gl/xj5n9R) 189 | [Differential Synchronization (Google Docs)](https://goo.gl/9zqG7x) 190 | [YouTube Architecture](https://goo.gl/mCPRUF) 191 | [Seattle Conference on Scalability: YouTube Scalability](https://goo.gl/dH3zYq) 192 | [Bigtable: A Distributed Storage System for Structured Data](https://goo.gl/6NaZca) 193 | [Instagram Architecture: 14 Million Users, Terabytes Of Photos, 100s Of Instances, Dozens Of Technologies](https://goo.gl/s1VcW5) 194 | [The Architecture Twitter Uses To Deal With 150M Active Users](https://goo.gl/EwvfRd) 195 | [Scaling Twitter: Making Twitter 10000 Percent Faster](https://goo.gl/nYGC1k) 196 | [Announcing Snowflake (Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees)](https://goo.gl/GzVWYm) 197 | [Timelines at Scale](https://goo.gl/8KbqTy) 198 | [How Uber Scales Their Real-Time Market Platform](https://goo.gl/kGZuVy) 199 | [Scaling Pinterest](https://goo.gl/KtmjW3) 200 | [Pinterest Architecture Update](https://goo.gl/w6rRsf) 201 | [A Brief History of Scaling LinkedIn](https://goo.gl/8A1Pi8) 202 | [Flickr Architecture](https://goo.gl/dWtgYa) 203 | [How We've Scaled Dropbox](https://goo.gl/NjBDtC) 204 | [The WhatsApp Architecture Facebook Bought For $19 Billion](https://bit.ly/2AHJnFn) 205 | 206 | ### Company engineering blogs 207 | 208 | [Airbnb](https://medium.com/airbnb-engineering) 209 | [Amazon](https://developer.amazon.com/blogs) 210 | [Asana](https://blog.asana.com/category/eng) 211 | [Atlassian](https://developer.atlassian.com/blog) 212 | [Bittorrent](http://engineering.bittorrent.com) 213 | [Cloudera](https://blog.cloudera.com) 214 | [Docker](https://blog.docker.com) 215 | [Dropbox](https://blogs.dropbox.com/tech) 216 | [eBay](http://www.ebaytechblog.com) 217 | [Facebook](https://code.facebook.com/posts) 218 | [GitHub](https://githubengineering.com) 219 | [Google](https://developers.googleblog.com) 220 | [Groupon](https://engineering.groupon.com) 221 | [Highscalability](http://highscalability.com) 222 | [Instacart](https://tech.instacart.com) 223 | [Instagram](https://engineering.instagram.com) 224 | [Linkedin](https://engineering.linkedin.com/blog) 225 | [Mixpanel](https://mixpanel.com/blog) 226 | [Netflix](https://medium.com/netflix-techblog) 227 | [Nextdoor](https://engblog.nextdoor.com) 228 | [PayPal](https://www.paypal-engineering.com) 229 | [Pinterest](https://engineering.pinterest.com) 230 | [Quora](https://engineering.quora.com) 231 | [Reddit](https://redditblog.com) 232 | [Salesforce](https://developer.salesforce.com/blogs/engineering) 233 | [Shopify](https://engineering.shopify.com) 234 | [Slack](https://slack.engineering) 235 | [Soundcloud](https://developers.soundcloud.com/blog) 236 | [Spotify](https://labs.spotify.com) 237 | [Stripe](https://stripe.com/blog/engineering) 238 | [System design primer](https://github.com/donnemartin/system-design-primer) 239 | [Twitter](https://blog.twitter.com/engineering/en_us.html) 240 | [Thumbtack](https://www.thumbtack.com/engineering) 241 | [Uber](http://eng.uber.com) 242 | [Yahoo](https://yahooeng.tumblr.com) 243 | [Yelp](https://engineeringblog.yelp.com) 244 | [Zoom](https://medium.com/zoom-developer-blog) 245 | -------------------------------------------------------------------------------- /system_design_links_vol2.md: -------------------------------------------------------------------------------- 1 | Reference Materials for System Design Interview - An Insider's Guide (Volume 2) book (https://amzn.to/34G2vmC) 2 | 3 | ## Chapter 1. Proximity Service 4 | 5 | [1] Yelp. https://www.yelp.com/. 6 | [2] Map tiles by Stamen Design. http://maps.stamen.com/. 7 | [3] OpenStreetMap. https://www.openstreetmap.org. 8 | [4] GDPR. https://en.wikipedia.org/wiki/General_Data_Protection_Regulation. 9 | [5] CCPA. https://en.wikipedia.org/wiki/California_Consumer_Privacy_Act. 10 | [6] Pagination in the REST API. https://developer.atlassian.com/server/confluence/pagination-in-the-rest-api/. 11 | [7] Google places API. https://developers.google.com/maps/documentation/places/web-service/search. 12 | [8] Yelp business endpoints. https://www.yelp.com/developers/documentation/v3/business_search. 13 | [9] Regions and Zones. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html. 14 | [10] Redis GEOHASH. https://redis.io/commands/GEOHASH. 15 | [11] POSTGIS. https://postgis.net/. 16 | [12] Cartesian tiers. http://www.nsshutdown.com/projects/lucene/whitepaper/locallucene_v2.html. 17 | [13] R-tree. https://en.wikipedia.org/wiki/R-tree. 18 | [14] Global map in a Geographic Coordinate Reference System. https://bit.ly/3DsjAwg. 19 | [15] Base32. https://en.wikipedia.org/wiki/Base32. 20 | [16] Geohash grid aggregation. https://bit.ly/3kKl4e6. 21 | [17] Geohash. https://www.movable-type.co.uk/scripts/geohash.html. 22 | [18] Quadtree. https://en.wikipedia.org/wiki/Quadtree. 23 | [19] How many leaves has a quadtree. https://stackoverflow.com/questions/35976444/how-many-leaves-has-a-quadtree. 24 | [20] Blue green deployment. https://martinfowler.com/bliki/BlueGreenDeployment.html. 25 | [21] Improved Location Caching with Quadtrees. https://engblog.yext.com/post/geolocation-caching. 26 | [22] S2. https://s2geometry.io/. 27 | [23] Hilbert curve. https://en.wikipedia.org/wiki/Hilbert_curve. 28 | [24] Hilbert mapping. http://bit-player.org/extras/hilbert/hilbert-mapping.html. 29 | [25] Geo-fence. https://en.wikipedia.org/wiki/Geo-fence. 30 | [26] Region cover. https://s2.sidewalklabs.com/regioncoverer/. 31 | [27] Bing map. https://bit.ly/30ytSfG. 32 | [28] MongoDB. https://docs.mongodb.com/manual/tutorial/build-a-2d-index/. 33 | [29] Geospatial Indexing: The 10 Million QPS Redis Architecture Powering Lyft. https://www.youtube.com/watch?v=cSFWlF96Sds&t=2155s. 34 | [30] Geo Shape Type. https://www.elastic.co/guide/en/elasticsearch/reference/1.6/mapping-geo-shape-type.html. 35 | [31] Geosharded Recommendations Part 1: Sharding Approach. https://medium.com/tinder-engineering/geosharded-recommendations-part-1-sharding-approach-d5d54e0ec77a. 36 | [32] Get the last known location. https://developer.android.com/training/location/retrieve-current#Challenges. 37 | 38 | ## Chapter 2. Nearby Friends 39 | 40 | [1] Facebook Launches “Nearby Friends”. https://techcrunch.com/2014/04/17/facebook-nearby-friends/. 41 | [2] Redis Pub/Sub. https://redis.io/topics/pubsub. 42 | [3] Redis Pub/Sub under the hood. https://making.pusher.com/redis-pubsub-under-the-hood/. 43 | [4] etcd. https://etcd.io/. 44 | [5] ZooKeeper. https://zookeeper.apache.org/. 45 | [6] Consistent hashingones. https://www.toptal.com/big-data/consistent-hashing. 46 | [7] Erlang. https://www.erlang.org/. 47 | [8] Elixir. https://elixir-lang.org/. 48 | [9] A brief introduction to BEAM. https://www.erlang.org/blog/a-brief-beam-primer/. 49 | [10] OTP. https://www.erlang.org/doc/design_principles/des_princ.html. 50 | 51 | ## Chapter 3. Google Maps 52 | 53 | [1] Google Maps. https://developers.google.com/maps?hl=en_US. 54 | [2] Google Maps Platform. https://cloud.google.com/maps-platform/. 55 | [3] Prototyping a Smoother Map. https://medium.com/google-design/google-maps-cb0326d165f5. 56 | [4] Mercator projection. https://en.wikipedia.org/wiki/Mercator_projection. 57 | [5] Peirce quincuncial projection. https://en.wikipedia.org/wiki/Peirce_quincuncial_projection. 58 | [6] Gall–Peters projection. https://en.wikipedia.org/wiki/Gall–Peters_projection. 59 | [7] Winkel tripel projection. https://en.wikipedia.org/wiki/Winkel_tripel_projection. 60 | [8] Address geocoding. https://en.wikipedia.org/wiki/Address_geocoding. 61 | [9] Geohashing. https://kousiknath.medium.com/system-design-design-a-geo-spatial-index-for-real-time-location-search-10968fe62b9c. 62 | [10] HTTP keep-alive. https://en.wikipedia.org/wiki/HTTP_persistent_connection. 63 | [11] Directions API. https://developers.google.com/maps/documentation/directions/start?hl=en_US. 64 | [12] Adjacency list. https://en.wikipedia.org/wiki/Adjacency_list. 65 | [13] CAP theorem. https://en.wikipedia.org/wiki/CAP_theorem. 66 | [14] Routing Tiles. https://valhalla.readthedocs.io/en/latest/mjolnir/why_tiles/. 67 | [15] ETAs with GNNs. https://deepmind.com/blog/article/traffic-prediction-with-advanced-graph-neural-networks. 68 | [16] Google Maps 101: How AI helps predict traffic and determine routes. https://blog.google/products/maps/google-maps-101-how-ai-helps-predict-traffic-and-determine-routes/. 69 | 70 | ## Chapter 4. Distributed Message Queue 71 | 72 | [1] Queue Length Limit. https://www.rabbitmq.com/maxlength.html. 73 | [2] ApacheZooKeeper-Wikipedia.https://en.wikipedia.org/wiki/Apache_ZooKeeper. 74 | [3] etcd. https://etcd.io/. 75 | [4] MySQL. https://www.mysql.com/. 76 | [5] Comparison of disk and memory performance. https://deliveryimages.acm.org/10.1145/1570000/1563874/jacobs3.jpg. 77 | [6] Push vs. pull. https://kafka.apache.org/documentation/#design_pull. 78 | [7] Kafka 2.0 Documentation. https://kafka.apache.org/20/documentation.html#consumerconfigs. 79 | [8] Kafka No Longer Requires ZooKeeper. https://towardsdatascience.com/kafka-no-longer-requires-zookeeper-ebfbf3862104. 80 | [9] Martin Kleppmann. Replication. In Designing Data-Intensive Applications, pages 151–197. O’Reilly Media, 2017. 81 | [10] ISR in Apache Kafka. https://www.cloudkarafka.com/blog/what-does-in-sync-in-apache-kafka-really-mean.html. 82 | [11] Global map in a geographic Coordinate Reference System. https://cwiki.apache.org/confluence/display/KAFKA/KIP-392%3A+Allow+consumers+to+fetch+from+closest+replica. 83 | [12] Hands-free Kafka Replication. https://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/. 84 | [13] Kafka high watermark. https://rongxinblog.wordpress.com/2016/07/29/kafka-high-watermark/. 85 | [14] Kafka mirroring. https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27846330. 86 | [15] Message filtering in RocketMQdtree. https://partners-intl.aliyun.com/help/doc-detail/29543.htm. 87 | [16] Scheduled messages and delayed messages in Apache RocketMQ. https://partners-intl.aliyun.com/help/doc-detail/43349.htm. 88 | [17] Hashed and hierarchical timing wheels. http://www.cs.columbia.edu/~nahum/w6998/papers/sosp87-timing-wheels.pdf. 89 | [18] Advanced Message Queuing Protocol. https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol. 90 | [19] Kafka protocol guide. https://kafka.apache.org/protocol. 91 | [20] HDFS. https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html. 92 | 93 | ## Chapter 5. Metrics Monitoring 94 | 95 | [1] Datadog. https://www.datadoghq.com/. 96 | [2] Splunk. https://www.splunk.com/. 97 | [3] PagerDuty. https://www.pagerduty.com/. 98 | [4] Elastic stack. https://www.elastic.co/elastic-stack. 99 | [5] Dapper, a Large-Scale Distributed Systems Tracing Infrastructure. https://research.google/pubs/pub36356/. 100 | [6] Distributed Systems Tracing with Zipkin. https://blog.twitter.com/engineering/en_us/a/2012/distributed-systems-tracing-with-zipkin.html. 101 | [7] Prometheus. https://prometheus.io/docs/introduction/overview/. 102 | [8] OpenTSDB - A Distributed, Scalable Monitoring System. http://opentsdb.net/. 103 | [9] Data model. :https://prometheus.io/docs/concepts/data_model/. 104 | [10] MySQL. https://www.mysql.com/. 105 | [11] Schema design for time-series data | Cloud Bigtable Documentation. https://cloud.google.com/bigtable/docs/schema-design-time-series. 106 | [12] TimeSeries Database for storing metrics at Twitter. :https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/metricsdb.html. 107 | [13] Amazon Timestream. https://aws.amazon.com/timestream/. 108 | [14] DB-Engines Ranking of time-series DBMS. https://db-engines.com/en/ranking/time+series+dbms. 109 | [15] InfluxDB. https://www.influxdata.com/. 110 | [16] etcd. https://etcd.io/. 111 | [17] Service Discovery with ZooKeeper. https://cloud.spring.io/spring-cloud-zookeeper/1.2.x/multi/multi_spring-cloud-zookeeper-discovery.html. 112 | [18] Amazon CloudWatch. https://aws.amazon.com/cloudwatch/. 113 | [19] Graphite. https://graphiteapp.org/. 114 | [20] Push vs Pull. http://bit.ly/3aJEPxE. 115 | [21] Pull doesn’t scale - or does it? https://prometheus.io/blog/2016/07/23/pull-does-not-scale-or-does-it/. 116 | [22] Monitoring Architecture. https://developer.lightbend.com/guides/monitoring-at-scale/monitoring-architecture/architecture.html. 117 | [23] Push vs Pull in Monitoring Systems. https://giedrius.blog/2019/05/11/push-vs-pull-in-monitoring-systems/. 118 | [24] Pushgateway. https://github.com/prometheus/pushgateway. 119 | [25] Building Applications with Serverless Architectures. https://aws.amazon.com/lambda/serverless-architectures-learn-more/. 120 | [26] Gorilla. AFast,Scalable,In-MemoryTimeSeriesDatabase:http://www.vldb.org/pvldb/vol8/p1816-teller.pdf. 121 | [27] Why We’re Building Flux, a New Data Scripting and Query Language. https://www.influxdata.com/blog/why-were-building-flux-a-new-data-scripting-and-query-language/. 122 | [28] InfluxDB storage engine. https://docs.influxdata.com/influxdb/v2.0/reference/internals/storage-engine/. 123 | [29] YAML. https://en.wikipedia.org/wiki/YAML. 124 | [30] Grafana Demo. https://play.grafana.org/. 125 | 126 | ## Chapter 6. Ad Click Event Aggregation 127 | 128 | [1] Clickthrough rate (CTR): Definition. https://support.google.com/google-ads/answer/2615875?hl=en. 129 | [2] Conversion rate: Definition. https://support.google.com/google-ads/answer/2684489?hl=en. 130 | [3] OLAP functions. https://docs.oracle.com/database/121/OLAXS/olap_functions.htm#OLAXS169. 131 | [4] Display Advertising with Real-Time Bidding (RTB) and Behavioural Targeting. https://arxiv.org/pdf/1610.03013.pdf. 132 | [5] LanguageManual ORC. https://cwiki.apache.org/confluence/display/hive/languagemanual+orc. 133 | [6] Parquet. https://databricks.com/glossary/what-is-parquet. 134 | [7] What is avro. https://www.ibm.com/topics/avro. 135 | [8] Big Data. https://www.datakwery.com/techniques/big-data/. 136 | [9] An Overview of End-to-End Exactly-Once Processing in Apache Flink. https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html. 137 | [10] DAG model. https://en.wikipedia.org/wiki/Directed_acyclic_graph. 138 | [11] Understand star schema and the importance for Power BI. https://docs.microsoft.com/en-us/power-bi/guidance/star-schema. 139 | [12] Martin Kleppmann. Designing Data-Intensive Applications. O’Reilly Media, 2017. 140 | [13] Apache Flink. https://flink.apache.org/. 141 | [14] Lambda architecture. https://databricks.com/glossary/lambda-architecture. 142 | [15] Kappa architecture. https://hazelcast.com/glossary/kappa-architecture/. 143 | [16] Martin Kleppmann. Stream Processing. In Designing Data-Intensive Applications. O’Reilly Media, 2017. 144 | [17] End-to-end Exactly-once Aggregation Over Ad Streams. https://www.youtube.com/watch?v=hzxytnPcAUM. 145 | [18] Ad traffic quality. https://www.google.com/ads/adtrafficquality/. 146 | [19] Understanding MapReduce in Hadoop. https://www.section.io/engineering-education/understanding-map-reduce-in-hadoop/. 147 | [20] Flink on Apache Yarn. https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/deployment/resource-providers/yarn/. 148 | [21] How data is distributed across a cluster (using virtual nodes). https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/architecture/archDataDistributeDistribute.html. 149 | [22] Flink performance tuning. https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/tuning/. 150 | [23] ClickHouse. https://clickhouse.com/. 151 | [24] Druid. https://druid.apache.org/. 152 | [25] Real-Time Exactly-Once Ad Event Processing with Apache Flink, Kafka, and Pinot. https://eng.uber.com/real-time-exactly-once-ad-event-processing/. 153 | 154 | ## Chapter 7. Hotel Reservation 155 | 156 | [1] What Are The Benefits of Microservices Architecture? https://www.appdynamics.com/topics/benefits-of-microservices. 157 | [2] Microservices. https://en.wikipedia.org/wiki/Microservices. 158 | [3] gRPC. https://www.grpc.io/docs/what-is-grpc/introduction/. 159 | [4] Booking.com iOS app. 160 | [5] Serializability. https://en.wikipedia.org/wiki/Serializability. 161 | [6] Optimistic and pessimistic record locking. https://ibm.co/3Eb293O. 162 | [7] Optimistic concurrency control. https://en.wikipedia.org/wiki/Optimistic_concurrency_control. 163 | [8] Change data capture. https://docs.oracle.com/cd/B10500_01/server.920/a96520/cdc.htm. 164 | [9] Debizium. https://debezium.io/. 165 | [10] Redis sink. https://bit.ly/3r3AEUD. 166 | [11] Monolithic Architecture. https://microservices.io/patterns/monolithic.html. 167 | [12] Two-phase commit protocol. https://en.wikipedia.org/wiki/Two-phase_commit_protocol. 168 | [13] Saga. https://microservices.io/patterns/data/saga.html. 169 | 170 | ## Chapter 8. Distributed Email Service 171 | 172 | [1] Number of Active Gmail Users. https://financesonline.com/number-of-active-gmail-users/. 173 | [2] Outlook. https://en.wikipedia.org/wiki/Outlook.com. 174 | [3] How Many Emails Are Sent Per Day in 2021? https://review42.com/resources/how-many-emails-are-sent-per-day/. 175 | [4] RFC 1939 - Post Office Protocol - Version 3. http://www.faqs.org/rfcs/rfc1939.html. 176 | [5] ActiveSync. https://en.wikipedia.org/wiki/ActiveSync. 177 | [6] Email attachment. https://en.wikipedia.org/wiki/Email_attachment. 178 | [7] MIME. https://en.wikipedia.org/wiki/MIME. 179 | [8] Threading. https://en.wikipedia.org/wiki/Conversation_threading. 180 | [9] IMAP LIST Extension for Special-Use Mailboxes. https://datatracker.ietf.org/doc/html/rfc6154. 181 | [10] Apache James. https://james.apache.org/. 182 | [11] A JSON Meta Application Protocol (JMAP) Subprotocol for WebSocket. https://tools.ietf.org/id/draft-ietf-jmap-websocket-07.html#RFC7692. 183 | [12] Cassandra Limitations. https://cwiki.apache.org/confluence/display/CASSANDRA2/CassandraLimitations. 184 | [13] Inverted index. https://en.wikipedia.org/wiki/Inverted_index. 185 | [14] Exponential backoff. https://en.wikipedia.org/wiki/Exponential_backoff. 186 | [15] QQ Email System Optimization (in Chinese). https://www.slideshare.net/areyouok/06-qq-5431919. 187 | [16] IOPS. https://en.wikipedia.org/wiki/IOPS. 188 | [17] UUID and timeuuid types. https://docs.datastax.com/en/cql-oss/3.3/cql/cql_reference/uuid_type_r.html. 189 | [18] Message threading. https://www.jwz.org/doc/threading.html. 190 | [19] Global spam volume. https://www.statista.com/statistics/420391/spam-email-traffic-share/. 191 | [20] Warming up dedicated IP addresses. https://docs.aws.amazon.com/ses/latest/dg/dedicated-ip-warming.html. 192 | [21] 2018 Data Breach Investigations Report. https://enterprise.verizon.com/resources/reports/DBIR_2018_Report.pdf. 193 | [22] Sender Policy Framework. https://en.wikipedia.org/wiki/Sender_Policy_Framework. 194 | [23] DomainKeys Identified Mail. https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail. 195 | [24] Domain-based Message Authentication, Reporting & Conformance. https://dmarc.org/. 196 | [25] DB-Engines Ranking of Search Engines. https://db-engines.com/en/ranking/search+engine. 197 | [26] Log-structured merge-tree. https://en.wikipedia.org/wiki/Log-structured_merge-tree. 198 | [27] Microsoft Exchange Conference 2014 Search in Exchange. https://www.youtube.com/watch?v=5EXGCSzzQak&t=2173s. 199 | [28] General Data Protection Regulation. https://en.wikipedia.org/wiki/General_Data_Protection_Regulation. 200 | [29] Lawful interception. https://en.wikipedia.org/wiki/Lawful_interception. 201 | [30] Email safety. https://safety.google/intl/en_us/gmail/. 202 | 203 | ## Chapter 9. S3-like Object Storage 204 | 205 | [1] Fibre channel. https://en.wikipedia.org/wiki/Fibre_Channel. 206 | [2] iSCSI. https://en.wikipedia.org/wiki/ISCSI. 207 | [3] Server Message Block. https://en.wikipedia.org/wiki/Server_Message_Block. 208 | [4] Network File System. https://en.wikipedia.org/wiki/Network_File_System. 209 | [5] Amazon S3 Strong Consistency. https://aws.amazon.com/s3/consistency/. 210 | [6] Serial Attached SCSI. https://en.wikipedia.org/wiki/Serial_Attached_SCSI. 211 | [7] AWSCLIlscommand.https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html. 212 | [8] Amazon S3 Service Level Agreement. https://aws.amazon.com/s3/sla/. 213 | [9] Ambry. LinkedIn’sScalableGeo-DistributedObjectStore:https://assured-cloud-computing.illinois.edu/files/2014/03/Ambry-LinkedIns-Scalable-GeoDistributed-Object-Store.pdf. 214 | [10] inode. https://en.wikipedia.org/wiki/Inode. 215 | [11] Ceph’s Rados Gateway. https://docs.ceph.com/en/pacific/radosgw/index.html. 216 | [12] grpc. https://grpc.io/. 217 | [13] Paxos. https://en.wikipedia.org/wiki/Paxos_(computer_science). 218 | [14] Raft. https://raft.github.io/. 219 | [15] Consistent hashing. https://www.toptal.com/big-data/consistent-hashing. 220 | [16] RocksDB. https://github.com/facebook/rocksdb. 221 | [17] SSTable. https://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/. 222 | [18] B+ tree. https://en.wikipedia.org/wiki/B%2B_tree. 223 | [19] SQLite. https://www.sqlite.org/index.html. 224 | [20] Data Durability Calculation. https://www.backblaze.com/blog/cloud-storage-durability/. 225 | [21] Rack. https://en.wikipedia.org/wiki/19-inch_rack. 226 | [22] Erasure Coding. https://en.wikipedia.org/wiki/Erasure_code. 227 | [23] Reed–Solomon error correction. https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction. 228 | [24] Erasure Coding Demystified. https://www.youtube.com/watch?v=Q5kVuM7zEUI. 229 | [25] Checksum. https://en.wikipedia.org/wiki/Checksum. 230 | [26] Md5. https://en.wikipedia.org/wiki/MD5. 231 | [27] Sha1. https://en.wikipedia.org/wiki/SHA-1. 232 | [28] Hmac. https://en.wikipedia.org/wiki/HMAC. 233 | [29] TIMEUUID. https://docs.datastax.com/en/cql-oss/3.3/cql/cql_reference/timeuuid_functions_r.html. 234 | 235 | ## Chapter 10. Real-time Gaming Leaderboard 236 | 237 | [1] Man-in-the-middle attack. https://en.wikipedia.org/wiki/Man-in-the-middle_attack. 238 | [2] Redis Sorted Set source code. https://github.com/redis/redis/blob/unstable/src/t_zset.c. 239 | [3] Geekbang. https://static001.geekbang.org/resource/image/46/a9/46d283cd82c987153b3fe0c76dfba8a9.jpg. 240 | [4] Building real-time Leaderboard with Redis. https://medium.com/@sandeep4.verma/building-real-time-leaderboard-with-redis-82c98aa47b9f. 241 | [5] Build a real-time gaming leaderboard with Amazon ElastiCache for Redis. https://aws.amazon.com/blogs/database/building-a-real-time-gaming-leaderboard-with-amazon-elasticache-for-redis. 242 | [6] How we created a real-time Leaderboard for a million Users. https://levelup.gitconnected.com/how-we-created-a-real-time-leaderboard-for-a-million-users-555aaa3ccf7b. 243 | [7] Leaderboards. https://redislabs.com/solutions/use-cases/leaderboards/. 244 | [8] Lambda. https://aws.amazon.com/lambda/. 245 | [9] Google Cloud Functions. https://cloud.google.com/functions. 246 | [10] Azure Functions. https://azure.microsoft.com/en-us/services/functions/. 247 | [11] Info command. https://redis.io/commands/INFO. 248 | [12] Why redis cluster only have 16384 slots. https://stackoverflow.com/questions/36203532/why-redis-cluster-only-have-16384-slots. 249 | [13] Cyclic redundancy check. https://en.wikipedia.org/wiki/Cyclic_redundancy_check. 250 | [14] Choosing your node size. https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/nodes-select-size.html. 251 | [15] How fast is Redis? https://redis.io/topics/benchmarks. 252 | [16] Using Global Secondary Indexes in DynamoDB. https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html. 253 | [17] Leaderboard & Write Sharding. https://www.dynamodbguide.com/leaderboard-write-sharding/. 254 | 255 | ## Chapter 11. Payment System 256 | 257 | [1] Payment system. https://en.wikipedia.org/wiki/Payment_system. 258 | [2] AML/CFT. https://en.wikipedia.org/wiki/Money_laundering. 259 | [3] Card scheme. https://en.wikipedia.org/wiki/Card_scheme. 260 | [4] ISO 4217. https://en.wikipedia.org/wiki/ISO_4217. 261 | [5] Stripe API Reference. https://stripe.com/docs/api. 262 | [6] Double-entry bookkeeping. https://en.wikipedia.org/wiki/Double-entry_bookkeeping. 263 | [7] Books, an immutable double-entry accounting database service. https://developer.squareup.com/blog/books-an-immutable-double-entry-accounting-database-service/. 264 | [8] Payment Card Industry Data Security Standard. https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard. 265 | [9] Tipalti. https://tipalti.com/. 266 | [10] Nonce. https://en.wikipedia.org/wiki/Cryptographic_nonce. 267 | [11] Webhooks. https://stripe.com/docs/webhooks. 268 | [12] Customize your success page. https://stripe.com/docs/payments/checkout/custom-success-page. 269 | [13] 3D Secure. https://en.wikipedia.org/wiki/3-D_Secure. 270 | [14] Kafka Connect Deep Dive – Error Handling and Dead Letter Queues. https://www.confluent.io/blog/kafka-connect-deep-dive-error-handling-dead-letter-queues/. 271 | [15] Reliable Processing in a Streaming Payment System. https://www.youtube.com/watch?v=5TD8m7w1xE0&list=PLLEUtp5eGr7Dz3fWGUpiSiG3d_WgJe-KJ. 272 | [16] Chain Services with Exactly-Once Guarantees. https://www.confluent.io/blog/chain-services-exactly-guarantees/. 273 | [17] Exponential backoff. https://en.wikipedia.org/wiki/Exponential_backoff. 274 | [18] Idempotence. https://en.wikipedia.org/wiki/Idempotence. 275 | [19] Stripe idempotent requests. https://stripe.com/docs/api/idempotent_requests. 276 | [20] Idempotency. https://developer.paypal.com/docs/platforms/develop/idempotency/. 277 | [21] Paxos. https://en.wikipedia.org/wiki/Paxos*(computer_science). 278 | [22] Raft. https://raft.github.io/. 279 | [23] YogabyteDB. https://www.yugabyte.com/. 280 | [24] Cockroachdb. https://www.cockroachlabs.com/. 281 | [25] What is DDoS attack. https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/. 282 | [26] How Payment Gateways Can Detect and Prevent Online Fraud. https://www.chargebee.com/blog/optimize-online-billing-stop-online-fraud/. 283 | [27] Advanced Technologies for Detecting and Preventing Fraud at Uber. https://eng.uber.com/advanced-technologies-detecting-preventing-fraud-uber/. 284 | [28] Re-Architecting Cash and Digital Wallet Payments for India with Uber Engineering. https://eng.uber.com/india-payments/. 285 | [29] Scaling Airbnb’s Payment Platform. https://medium.com/airbnb-engineering/scaling-airbnbs-payment-platform-43ebfc99b324. 286 | [30] Payments Integration at Uber: A Case Study – Gergely Orosz. https://www.youtube.com/watch?v=yooCE5B0SRA. 287 | 288 | ## Chapter 12. Digital Wallet 289 | 290 | [1] Transactional guarantees. https://docs.oracle.com/cd/E17275_01/html/programmer_reference/rep_trans.html. 291 | [2] TPC-E Top Price/Performance Results. http://tpc.org/tpce/results/tpce_price_perf_results5.asp?resulttype=all. 292 | [3] ISO 4217 CURRENCY CODES. https://en.wikipedia.org/wiki/ISO_4217. 293 | [4] Apache ZooKeeper. https://zookeeper.apache.org/. 294 | [5] Martin Kleppmann. Designing Data-Intensive Applications. O’Reilly Media, 2017. 295 | [6] X/Open XA. https://en.wikipedia.org/wiki/X/Open_XA. 296 | [7] Compensating transaction. https://en.wikipedia.org/wiki/Compensating_transaction. 297 | [8] SAGAS, HectorGarcia-Molina. https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf. 298 | [9] Eric Evans. Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley Professional, 2003. 299 | [10] Apache Kafka. https://kafka.apache.org/. 300 | [11] CQRS. https://martinfowler.com/bliki/CQRS.html. 301 | [12] Comparing Random and Sequential Access in Disk and Memory. https://deliveryimages.acm.org/10.1145/1570000/1563874/jacobs3.jpg. 302 | [13] mmap. https://man7.org/linux/man-pages/man2/mmap.2.html. 303 | [14] SQLite. https://www.sqlite.org/index.html. 304 | [15] RocksDB. https://rocksdb.org/. 305 | [16] Apache Hadoop. https://hadoop.apache.org/. 306 | [17] Raft. https://raft.github.io/. 307 | [18] Reverse proxy. https://en.wikipedia.org/wiki/Reverse_proxy. 308 | 309 | ## Chapter 13. Stock Exchange 310 | 311 | [1] LMAX exchange was famous for its open-source Disruptor. https://www.lmax.com/exchange. 312 | [2] IEX attracts investors by “playing fair”, also is the “Flash Boys Exchange”. https://en.wikipedia.org/wiki/IEX. 313 | [3] NYSE matched volume. https://www.nyse.com/markets/us-equity-volumes. 314 | [4] HKEX daily trading volume. https://www.hkex.com.hk/Market-Data/Statistics/Consolidated-Reports/Securities-Statistics-Archive/Trading\_Value_Volume_And_Number\_Of\_Deals?sc_lang=en#select1=0. 315 | [5] All of the World’s Stock Exchanges by Size. http://money.visualcapitalist.com/all-of-the-worlds-stock-exchanges-by-size/. 316 | [6] Denial of service attack. https://en.wikipedia.org/wiki/Denial-of-service_attack. 317 | [7] Market impact. https://en.wikipedia.org/wiki/Market_impact. 318 | [8] Fix trading. https://www.fixtrading.org/. 319 | [9] Event Sourcing. https://martinfowler.com/eaaDev/EventSourcing.html. 320 | [10] CME Co-Location and Data Center Services. https://www.cmegroup.com/trading/colocation/co-location-services.html. 321 | [11] Epoch. https://www.epoch101.com/. 322 | [12] Order book. https://www.investopedia.com/terms/o/order-book.asp. 323 | [13] Order book. https://en.wikipedia.org/wiki/Order_book. 324 | [14] How to Build a Fast Limit Order Book. https://bit.ly/3ngMtEO. 325 | [15] Developing with kdb+ and the q language. https://code.kx.com/q/. 326 | [16] Latency Numbers Every Programmer Should Know. https://gist.github.com/jboner/2841832. 327 | [17] mmap. https://en.wikipedia.org/wiki/Memory_map. 328 | [18] Context switch. https://bit.ly/3pva7A6. 329 | [19] Reliable User Datagram Protocol. https://en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol. 330 | [20] Aeron. https://github.com/real-logic/aeron/wiki/Design-Overview. 331 | [21] Chaos engineering. https://en.wikipedia.org/wiki/Chaos_engineering. 332 | [22] Raft. https://raft.github.io/. 333 | [23] Designing for Understandability: the Raft Consensus Algorithm. https://raft.github.io/slides/uiuc2016.pdf. 334 | [24] Supported Matching Algorithms. https://bit.ly/3aYoCEo. 335 | [25] Dark pool. https://www.investopedia.com/terms/d/dark-pool.asp. 336 | [26] HdrHistogram: A High Dynamic Range Histogram. http://hdrhistogram.org/. 337 | [27] HotSpot (virtual machine). https://en.wikipedia.org/wiki/HotSpot\_(virtual_machine). 338 | [28] Cache line padding. https://bit.ly/3lZTFWz. 339 | [29] NACK-Oriented Reliable Multicast. https://en.wikipedia.org/wiki/NACK-Oriented_Reliable_Multicast. 340 | [30] AWS Coinbase Case Study. https://aws.amazon.com/solutions/case-studies/coinbase/. 341 | --------------------------------------------------------------------------------