├── 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 |
--------------------------------------------------------------------------------