From e1fbf3f4fd846be58a0c41e2629e2b92b8f7557a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Puyet?= Date: Mon, 25 Jul 2022 18:38:25 +0200 Subject: [PATCH] Merge master 25/07/22 (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix Celery URL (#486) * Fixing the indieflashblog address with archive.org since website has been discontinued * Fix LRU cache link (#505) * Fix capitalization of Dropbox (#511) * Update GitHub Engineering Blog link * Fix memcache architecture URL (#631) * Fix # 650: Replace broken weighted round robin link (#651) * Fix typos (#661) Co-authored-by: Abdalla Mohamed Co-authored-by: Laurent Erignoux Co-authored-by: Donne Martin Co-authored-by: Trần Tiến Đức Co-authored-by: ayyjohn Co-authored-by: Lawrence Chou Co-authored-by: Nnachevvv <44066540+Nnachevvv@users.noreply.github.com> Co-authored-by: mleers Co-authored-by: Kian-Meng Ang --- CONTRIBUTING.md | 2 +- README-ja.md | 6 +++--- README-zh-Hans.md | 6 +++--- README-zh-TW.md | 6 +++--- README.md | 16 ++++++++-------- generate-epub.sh | 2 +- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 69348619cf2..c220a52db20 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -61,7 +61,7 @@ See [Translations](TRANSLATIONS.md). ### Adding translations to new languages -Translations to new languages are always welcome! Keep in mind a transation must be maintained. +Translations to new languages are always welcome! Keep in mind a translation must be maintained. * Do you have time to be a maintainer for a new language? Please see the list of [translations](TRANSLATIONS.md) and tell us so we know we can count on you in the future. * Check the [translations](TRANSLATIONS.md), issues, and pull requests to see if a translation is in progress or stalled. If it's in progress, offer to help. If it's stalled, consider becoming the maintainer if you can commit to it. diff --git a/README-ja.md b/README-ja.md index cb6633d50d6..0f003b2d4ab 100644 --- a/README-ja.md +++ b/README-ja.md @@ -966,7 +966,7 @@ NoSQL は **key-value store**、 **document-store**、 **wide column store**、 * [キーバリューデータベース](https://en.wikipedia.org/wiki/Key-value_database) * [キーバリューストアの欠点](http://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or) * [Redisアーキテクチャ](http://qnimate.com/overview-of-redis-architecture/) -* [メムキャッシュアーキテクチャ](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) +* [メムキャッシュアーキテクチャ](https://adayinthelifeof.nl/2011/02/06/memcache-internals/) #### ドキュメントストア @@ -1620,7 +1620,7 @@ Notes | ランダムID発行システムの設計 | [blog.twitter.com](https://blog.twitter.com/2010/announcing-snowflake)
[github.com](https://github.com/twitter/snowflake/) | | 一定のインターバル時間での上位k件を返す | [ucsb.edu](https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf)
[wpi.edu](http://davis.wpi.edu/xmdv/docs/EDBT11-diyang.pdf) | | 複数のデータセンターからデータを配信するサービスの設計 | [highscalability.com](http://highscalability.com/blog/2009/8/24/how-google-serves-data-from-multiple-datacenters.html) | -| オンラインの複数プレイヤーカードゲームの設計 | [indieflashblog.com](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | +| オンラインの複数プレイヤーカードゲームの設計 | [indieflashblog.com](https://web.archive.org/web/20180929181117/http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | | ガーベッジコレクションシステムの設計 | [stuffwithstuff.com](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
[washington.edu](http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf) | | システム設計例題を追加する | [Contribute](#contributing) | @@ -1712,7 +1712,7 @@ Notes * [Facebook Engineering](https://www.facebook.com/Engineering) * [Flickr Code](http://code.flickr.net/) * [Foursquare Engineering Blog](http://engineering.foursquare.com/) -* [GitHub Engineering Blog](http://githubengineering.com/) +* [GitHub Engineering Blog](https://github.blog/category/engineering) * [Google Research Blog](http://googleresearch.blogspot.com/) * [Groupon Engineering Blog](https://engineering.groupon.com/) * [Heroku Engineering Blog](https://engineering.heroku.com/) diff --git a/README-zh-Hans.md b/README-zh-Hans.md index 15de279c8a5..368f588ad78 100644 --- a/README-zh-Hans.md +++ b/README-zh-Hans.md @@ -977,7 +977,7 @@ NoSQL 是**键-值数据库**、**文档型数据库**、**列型数据库**或* - [键-值数据库](https://en.wikipedia.org/wiki/Key-value_database) - [键-值存储的劣势](http://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or) - [Redis 架构](http://qnimate.com/overview-of-redis-architecture/) -- [Memcached 架构](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) +- [Memcached 架构](https://adayinthelifeof.nl/2011/02/06/memcache-internals/) #### 文档类型存储 @@ -1631,7 +1631,7 @@ Notes | 设计一个随机 ID 生成系统 | [blog.twitter.com](https://blog.twitter.com/2010/announcing-snowflake)
[github.com](https://github.com/twitter/snowflake/) | | 返回一定时间段内次数前 k 高的请求 | [ucsb.edu](https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf)
[wpi.edu](http://davis.wpi.edu/xmdv/docs/EDBT11-diyang.pdf) | | 设计一个数据源于多个数据中心的服务系统 | [highscalability.com](http://highscalability.com/blog/2009/8/24/how-google-serves-data-from-multiple-datacenters.html) | -| 设计一个多人网络卡牌游戏 | [indieflashblog.com](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | +| 设计一个多人网络卡牌游戏 | [indieflashblog.com](https://web.archive.org/web/20180929181117/http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | | 设计一个垃圾回收系统 | [stuffwithstuff.com](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
[washington.edu](http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf) | | 添加更多的系统设计问题 | [贡献](#贡献) | @@ -1723,7 +1723,7 @@ Notes * [Facebook Engineering](https://www.facebook.com/Engineering) * [Flickr Code](http://code.flickr.net/) * [Foursquare Engineering Blog](http://engineering.foursquare.com/) -* [GitHub Engineering Blog](http://githubengineering.com/) +* [GitHub Engineering Blog](https://github.blog/category/engineering) * [Google Research Blog](http://googleresearch.blogspot.com/) * [Groupon Engineering Blog](https://engineering.groupon.com/) * [Heroku Engineering Blog](https://engineering.heroku.com/) diff --git a/README-zh-TW.md b/README-zh-TW.md index 8f302155661..d805e7e00c9 100644 --- a/README-zh-TW.md +++ b/README-zh-TW.md @@ -967,7 +967,7 @@ NoSQL 指的是 **鍵-值對的資料庫**、**文件類型資料庫**、**列 * [鍵值對資料庫](https://en.wikipedia.org/wiki/Key-value_database) * [鍵值對資料庫的缺點](http://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or) * [Redis 架構](http://qnimate.com/overview-of-redis-architecture/) -* [Memcached 架構](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) +* [Memcached 架構](https://adayinthelifeof.nl/2011/02/06/memcache-internals/) #### 文件類型資料庫 @@ -1621,7 +1621,7 @@ Notes | 設計一個隨機 ID 生成系統 | [blog.twitter.com](https://blog.twitter.com/2010/announcing-snowflake)
[github.com](https://github.com/twitter/snowflake/) | | 給定一段時間,回傳次數排名前 K 的請求 | [ucsb.edu](https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf)
[wpi.edu](http://davis.wpi.edu/xmdv/docs/EDBT11-diyang.pdf) | | 設計一個資料來源在多個資料中心的系統 | [highscalability.com](http://highscalability.com/blog/2009/8/24/how-google-serves-data-from-multiple-datacenters.html) | -| 設計一個線上多人卡牌遊戲 | [indieflashblog.com](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | +| 設計一個線上多人卡牌遊戲 | [indieflashblog.com](https://web.archive.org/web/20180929181117/http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | | 設計一個垃圾回收系統 | [stuffwithstuff.com](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
[washington.edu](http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf) | | 貢獻更多系統設計問題 | [Contribute](#如何貢獻) | @@ -1713,7 +1713,7 @@ Notes * [Facebook Engineering](https://www.facebook.com/Engineering) * [Flickr Code](http://code.flickr.net/) * [Foursquare Engineering Blog](http://engineering.foursquare.com/) -* [GitHub Engineering Blog](http://githubengineering.com/) +* [GitHub Engineering Blog](https://github.blog/category/engineering) * [Google Research Blog](http://googleresearch.blogspot.com/) * [Groupon Engineering Blog](https://engineering.groupon.com/) * [Heroku Engineering Blog](https://engineering.heroku.com/) diff --git a/README.md b/README.md index 7aa808146af..952c7fbecd1 100644 --- a/README.md +++ b/README.md @@ -597,7 +597,7 @@ DNS is hierarchical, with a few authoritative servers at the top level. Your ro Services such as [CloudFlare](https://www.cloudflare.com/dns/) and [Route 53](https://aws.amazon.com/route53/) provide managed DNS services. Some DNS services can route traffic through various methods: -* [Weighted round robin](https://www.g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb) +* [Weighted round robin](https://www.jscape.com/blog/load-balancing-algorithms) * Prevent traffic from going to servers under maintenance * Balance between varying cluster sizes * A/B testing @@ -1015,7 +1015,7 @@ A key-value store is the basis for more complex systems such as a document store * [Key-value database](https://en.wikipedia.org/wiki/Key-value_database) * [Disadvantages of key-value stores](http://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or) * [Redis architecture](http://qnimate.com/overview-of-redis-architecture/) -* [Memcached architecture](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) +* [Memcached architecture](https://adayinthelifeof.nl/2011/02/06/memcache-internals/) #### Document store @@ -1159,7 +1159,7 @@ Your database usually includes some level of caching in a default configuration, ### Application caching -In-memory caches such as Memcached and Redis are key-value stores between your application and your data storage. Since the data is held in RAM, it is much faster than typical databases where data is stored on disk. RAM is more limited than disk, so [cache invalidation](https://en.wikipedia.org/wiki/Cache_algorithms) algorithms such as [least recently used (LRU)](https://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used) can help invalidate 'cold' entries and keep 'hot' data in RAM. +In-memory caches such as Memcached and Redis are key-value stores between your application and your data storage. Since the data is held in RAM, it is much faster than typical databases where data is stored on disk. RAM is more limited than disk, so [cache invalidation](https://en.wikipedia.org/wiki/Cache_algorithms) algorithms such as [least recently used (LRU)](https://en.wikipedia.org/wiki/Cache_replacement_policies#Least_recently_used_(LRU)) can help invalidate 'cold' entries and keep 'hot' data in RAM. Redis has the following additional features: @@ -1350,7 +1350,7 @@ The user is not blocked and the job is processed in the background. During this Tasks queues receive tasks and their related data, runs them, then delivers their results. They can support scheduling and can be used to run computationally-intensive jobs in the background. -**Celery** has support for scheduling and primarily has python support. +**[Celery](https://docs.celeryproject.org/en/stable/)** has support for scheduling and primarily has python support. ### Back pressure @@ -1670,10 +1670,10 @@ Handy metrics based on numbers above: | Design a random ID generation system | [blog.twitter.com](https://blog.twitter.com/2010/announcing-snowflake)
[github.com](https://github.com/twitter/snowflake/) | | Return the top k requests during a time interval | [cs.ucsb.edu](https://www.cs.ucsb.edu/sites/cs.ucsb.edu/files/docs/reports/2005-23.pdf)
[wpi.edu](http://davis.wpi.edu/xmdv/docs/EDBT11-diyang.pdf) | | Design a system that serves data from multiple data centers | [highscalability.com](http://highscalability.com/blog/2009/8/24/how-google-serves-data-from-multiple-datacenters.html) | -| Design an online multiplayer card game | [indieflashblog.com](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | +| Design an online multiplayer card game | [indieflashblog.com](https://web.archive.org/web/20180929181117/http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
[buildnewgames.com](http://buildnewgames.com/real-time-multiplayer/) | | Design a garbage collection system | [stuffwithstuff.com](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/)
[washington.edu](http://courses.cs.washington.edu/courses/csep521/07wi/prj/rick.pdf) | | Design an API rate limiter | [https://stripe.com/blog/](https://stripe.com/blog/rate-limiters) | -| Design a Stock Exchange (like NASDAQ or Binance) | [Jane Street](https://youtu.be/b1e4t2k2KJY)
[Golang Implementation](https://around25.com/blog/building-a-trading-engine-for-a-crypto-exchange/)
[Go Implemenation](http://bhomnick.net/building-a-simple-limit-order-in-go/) | +| Design a Stock Exchange (like NASDAQ or Binance) | [Jane Street](https://youtu.be/b1e4t2k2KJY)
[Golang Implementation](https://around25.com/blog/building-a-trading-engine-for-a-crypto-exchange/)
[Go Implementation](http://bhomnick.net/building-a-simple-limit-order-in-go/) | | Add a system design question | [Contribute](#contributing) | ### Real world architectures @@ -1723,7 +1723,7 @@ Handy metrics based on numbers above: | Amazon | [Amazon architecture](http://highscalability.com/amazon-architecture) | | Cinchcast | [Producing 1,500 hours of audio every day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) | | DataSift | [Realtime datamining At 120,000 tweets per second](http://highscalability.com/blog/2011/11/29/datasift-architecture-realtime-datamining-at-120000-tweets-p.html) | -| DropBox | [How we've scaled Dropbox](https://www.youtube.com/watch?v=PE4gwstWhmc) | +| Dropbox | [How we've scaled Dropbox](https://www.youtube.com/watch?v=PE4gwstWhmc) | | ESPN | [Operating At 100,000 duh nuh nuhs per second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) | | Google | [Google architecture](http://highscalability.com/google-architecture) | | Instagram | [14 million users, terabytes of photos](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html)
[What powers Instagram](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) | @@ -1764,7 +1764,7 @@ Handy metrics based on numbers above: * [Facebook Engineering](https://www.facebook.com/Engineering) * [Flickr Code](http://code.flickr.net/) * [Foursquare Engineering Blog](http://engineering.foursquare.com/) -* [GitHub Engineering Blog](http://githubengineering.com/) +* [GitHub Engineering Blog](https://github.blog/category/engineering) * [Google Research Blog](http://googleresearch.blogspot.com/) * [Groupon Engineering Blog](https://engineering.groupon.com/) * [Heroku Engineering Blog](https://engineering.heroku.com/) diff --git a/generate-epub.sh b/generate-epub.sh index 18690fbb52f..a6bfe05b50d 100755 --- a/generate-epub.sh +++ b/generate-epub.sh @@ -34,7 +34,7 @@ generate () { cat $name.md | generate_from_stdin $name.epub $language } -# Check if depencies exist +# Check if dependencies exist check_dependencies () { for dependency in "${dependencies[@]}" do