ZS-Oliver / daily-reading

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Daily Reading

每天一篇英文技术文章。希望通过这个阅读计划可以提升大家与英文阅读能力与技术视野。

规则

  • 要参加 Daily Reading 计划的同学可以添加微信「e7hanz」加入微信群。
  • 群里每天发一篇技术文章,文章链接也会提交到 Github Repo 上。
  • 群里的同学每周至少提交一篇笔记,否则需要在下一周的周一离开这个群,离开的同学也欢迎随时回来。
  • 笔记不限于当周的文章,仓库里的任意一篇文章都可以。

提交笔记

  • 在相应的目录下创建个人名字命名的文件即可,例如「xiaoming.md」。

Index

Distributed System

  • 2020/11/03 - Cache is the Root of All Evil: 深入浅出的讨论了最基本的缓存一致性问题,比如读覆盖、写后读问题等。
  • 2020/11/01 - Strategies Used at Box to Protect MySQL at Scale: Box 关于数据库访问层 (Data Access Layer) 的一些实践。
  • 2020/11/06 - How We Learned to Stop Worrying and Read from Replicas: 针对异步复制导致的主从不一致问题进行了讨论。
  • 2020/11/09 - Time, Clocks, and the Ordering of Events in a Distributed System: 分布式领域必读 Paper。本文审视了在分布式系统中,一个事件发生在另一个事件之前的概念,并用它描述了事件的偏序关系。 给出了一种分布式算法,该算法用于同步逻辑时钟系统。
  • 2020/11/14 - Minimizing read-write MySQL downtime: Yelp 的数据库高可用实践,分享怎么通过一个数据库代理中间层,实现多主切换的能力。
  • 2020/11/18 - The Google File System: GFS,Google 的分布式文件存储系统。
  • 2020/11/20 - Cache coherency primer: CPU 缓存一致性,详细的介绍了在多核、多缓存情况下如何确保 CPU 内的缓存一致性问题。和业务缓存的场景不一样,CPU Cache 是一个强一致性缓存。
  • 2020/11/26 - All things caching- use cases, benefits, strategies, choosing a caching technology, exploring some popular products: 详细的介绍了缓存的适用场景、坑、收益,结合了从 CPU 到浏览器的各个层次缓存的实践分析。
  • 2020/11/29 - Orchestrating Cassandra on Kubernetes with Operators: Yelp 将它们的 Cassandra 集群从虚拟机平台(EC2)上迁移到了 Kubernetes 中,本文分享了这一迁移过程的实践。
  • 2020/12/01 - Immutability Changes Everything: 当计算和存储系统越来越便宜,并发锁同步成了系统瓶颈时,「不可变性」成了架构设计的一个趋势。本文讲述了在分布式系统设计里,「不可变性」是如何改变存储、计算和架构的。
  • 2020/12/06 - A Distributed Algorithm for Deadlock Detection and Resolution: 一篇与死锁检测相关的论文,可以站在抽象的角度去思考,实际上描述的是分布式资源产生环状依赖关系的时候如何探测的问题,在分布式微服务的领域应该也可以运用到。
  • 2020/12/08 - Paxos Made Simple: Lamport 在 2001 年重新写的一篇 Paxos 论文,用简单的语言介绍了共识算法 Paxos。Paxos 及各种变体广泛应用于各种分布式系统中。
  • 2020/12/12 - Scaling Cache Infrastructure at Pinterest: Pinterest 的大规模分布式 Memcached 缓存实践。
  • 2020/12/14 - Scaling Memcache at Facebook: Memcached 是一个非常简单的全内存分布式 KV 缓存系统,本文主要讨论了 Facebook 如何大规模使用分布式内存缓存来支撑其上繁重的网络请求。
  • 2020/12/17 - Structured Concurrency: 本文作者 Martin Sústrik 在 2016 于本文首次提出了结构并发 (Structured Concurrency) 的概念,目前结构并发这一概念在各语言社区都被广泛讨论,有成为下一代编程语言新范式的潜力。OpenJDK 也有个进行中的项目 Loom,旨在 Java 17 中引入这个新的语言特性。本文可以说是结构并发的白皮书。清晰地阐述了这个新概念的起因与设想。

Architecture

  • 2020/10/30 - Building Services at Airbnb, Part 4: Airbnb 的微服务测试实践。
  • 2020/11/07 - Building Airbnb's Internationalization Platform: 讨论了 Airbnb 的国际化平台架构,这是一篇业务架构综述文章,对 i18n 领域的常见问题进行了介绍,以及讲解了 Airbnb 的实现方案。
  • 2020/11/08 - Architecting for Reliable Scalability: 文章讨论了在对架构进行扩展时的一些常见实践,例如模块化、水平扩展、内容缓存等等。内容中有大量的 Reference,是一篇很好的领域综述性文章。
  • 2020/11/11 - Taming Service-Oriented Architecture Using A Data-Oriented Service Mesh: Airbnb 的 Mesh 实践。不同于现在到处都在说的数据面、控制面等概念,Airbnb 一开始就以数据为中心来构建整个服务治理系统。
  • 2020/11/12 - Solid Relevance: 距离 SOLID 原则提出已经过了 30 多年了,这个时间太久以至于不少人认为 SOLID 原则已经不再适用于现代软件工程。但 Uncle Bob 认为并不是这样的,软件工程的根基一直没有变化,SOLID 原则依然适用。在本文中 Bob 重新审视了 SOLID 五条原则在现代软件工程中的适用性。
  • 2020/11/17 - Building Software Systems At Google and Lessons Learned: Jeff Dean 在 2010 年的分享,分享了 Google 从 1999 年到 2010 年间面临的各种不同的挑战,以及架构的演进。
  • 2020/11/24 - On Designing and Deploying Internet-Scale Services: 经典论文,讨论了设计一个后端系统时需要考虑的方方面面,例如面向故障设计、服务健康检查、底层组件零信任、版本管理、消除单点故障等等。架构师必读。
  • 2020/12/04 - How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh: 文章列举了若干种不同的数据分析架构,着重对比了集中式的数据池(Data Lake)与分布式数据网格(Data Mesh)的差异,分析了之间的演进过程,提出了一些数据平台架构建设的建议。
  • 2020/12/13 - Choose Boring Technology: 我们每天都要面对的问题是市面上可选的新技术越来越多,不管我们是否关心它们,新技术总会主动或被动的进入我们的视野中。如何看待新技术?如何在技术选型的时候平衡新技术带来的创造力和风险?本文的建议是,选择那些「无聊」的技术。
  • 2020/12/19 - How Netflix Scales its API with GraphQL Federation: Netflix 是一个典型的微服务架构,微服务架构中,API 聚合层的复杂度会随着业务规模的扩展呈现出指数级增长。Netflix 通过 GraphQL 来解决这个问题,本系列文章介绍了 Netflix 的实践。

Network

Storage

  • 2020/12/11 - Modern storage is plenty fast. It is the APIs that are bad.: 现代 NVMe 设备改变了 I/O 操作的行为,让随机读的成本不再昂贵。作者基于 Intel Optane 设备设计了两个新的读文件 API,并且得到了不错的性能提升。本文讨论了如何设计 API 以适应更快的新型读写设备。

Monitoring

Frontend

  • 2020/10/28 - When is no-code useful?: 讨论了低代码平台存在的问题,以及作者认为低代码平台要解决的问题。文章中对于复杂度、软件工程的本质提出了一些看法。
  • 2020/11/19 - How We Build a Design System: 如何构建一套设计系统。不仅仅介绍了设计系统是什么,还介绍了怎么运营这样一套设计系统。
  • 2020/11/21 - Micro Frontends Pattern Comparison: 微前端框架是近几年比较热门的一个领域,本文讨论了几种常见的微前端框架范式。
  • 2020/12/10 - The End of Cross-Platform as We Know It: 跨平台框架是几十年来新技术层出不穷的一个领域,例如最近几年非常热门的 React Native、Flutter 等。作者认为这些跨平台应用有着无法解决的固有缺陷,要么改进,要么死亡。
  • 2020/12/15 - Errors and Error Handling in JavaScript: 介绍了 JavaScript 错误捕捉的基本概念和实践。
  • 2020/12/23 - How to Evaluate NPM Packages: 分享了作者是如何选择开源组件的,其中通过点赞趋势、开发趋势、性能、安全等多个方向去综合评估的思路值得借鉴。
  • 2020/12/25 - How we built the GitHub globe: GitHub globe 是前一阵子 Github 做的一个 Web 可视化报表,展示了全球开源社区的生产活动。这篇文章分享 Github globe 是如何被实现出来的。

Personal & Team Work

Testing

Operation System

  • 2020/12/20 - Understanding Linux CPU Load - when should you be worried?: CPU Load 是一个既基础又容易被误解的知识点,这篇文章举了一个车过桥的例子,生动、简单的说明了 CPU Load 和 CPU 利用率之间的区别,以及对于不同程度的 CPU Load 我们应该关心什么。

Others

About