第231023期 – 26.3k star,技术人都应该去看一份开源宝典!!

第231023期 - 26.3k star,技术人都应该去看一份开源宝典!!
26.3k star,技术人都应该去看一份开源宝典!!

开源时间还不长,但是star数确实猛涨,目前已经26.3k

![](/assets/image/231023-26.3k star,技术人都应该去看一份开源宝典!!-1.png)

简单讲下这个项目是干啥的?文末获取开源地址

用作者的话来说,就是用最简单的图像来说明一些系统设计的原理,比如分布式系统、微服务架构、负载均衡等等,涉及类目很多,大概有这么些吧:

![](/assets/image/231023-26.3k star,技术人都应该去看一份开源宝典!!-2.gif)

![部分图例](/assets/image/231023-26.3k star,技术人都应该去看一份开源宝典!!-3.png)

System-design-101 是一个 GitHub 上的开源项目,它的目的是用图像简单的术语来解释复杂的系统。它可以帮助您准备系统设计面试,也可以让您更好地理解系统的内部运作。System-design-101 的特点有:

  • 它涵盖了多个系统设计的主题,如通信协议、数据库、缓存、微服务架构、支付系统、DevOps、云服务、安全等。
  • 它提供了多个系统设计的案例分析,如 Netflix、Google Authenticator、VISA 等。
  • 它使用了多种可视化工具,如流程图、架构图、代码块、表格等,来展示系统的结构和逻辑。
  • 它使用了简单易懂的语言,来解释系统的概念和原理。
  • 它提供了多个参考链接,让您可以进一步学习和探索系统设计的知识。

挑几个比较熟悉的介绍下:

常见的http状态码

![](/assets/image/231023-26.3k star,技术人都应该去看一份开源宝典!!-4.png)

  • 信息性(100-199):表示服务器已收到请求,但还未处理,需要客户端继续等待或发送更多信息。

  • 成功(200-299):表示请求已成功处理,返回了预期的结果。

  • 重定向(300-399):表示请求的资源已被移动或修改,需要客户端重新发送请求或访问其他地址。

  • 客户端错误(400-499):表示请求有错误,无法被服务器处理。常见的错误有:400(请求格式错误),401(未授权),403(禁止访问),404(找不到资源),405(方法不允许)等。

  • 服务器错误(500-599):表示服务器在处理请求时发生了内部错误。常见的错误有:500(服务器内部错误),501(未实现),502(网关错误),503(服务不可用),504(网关超时)等。

CI/CD流水线

![](/assets/image/231023-26.3k star,技术人都应该去看一份开源宝典!!-5.png)

CI/CD 流水线是一个有多个相连阶段的过程:

  • 开发者将代码变更提交到源代码控制
  • CI 服务器检测变更并触发构建
  • 代码被编译和测试(单元测试、集成测试)
  • 测试结果反馈给开发者
  • 成功后,构件被部署到预发布环境
  • 预发布环境可能进行更多测试后才发布
  • CD 系统将通过的变更部署到生产环境

什么是K8s

![](/assets/image/231023-26.3k star,技术人都应该去看一份开源宝典!!-6.png)

K8s 是一个容器编排系统,它用于容器的部署和管理。它的设计受到了谷歌内部系统 Borg 的影响。

K8s 集群由一组运行容器化应用的工作机器组成,称为节点。每个集群至少有一个工作节点。

工作节点托管了 Pod,Pod 是应用负载的组成部分。控制平面管理集群中的工作节点和 Pod。在生产环境中,控制平面通常跨多台计算机运行,而集群通常运行多个节点,提供容错和高可用性。

控制平面组件

API 服务器

API 服务器与集群中的所有组件通信。所有对 Pod 的操作都是通过与 API 服务器交互来执行的。

调度器

调度器监视 Pod 的负载,并为新创建的 Pod 分配负载。

控制器管理器

控制器管理器运行控制器,包括节点控制器、作业控制器、端点切片控制器和服务账户控制器。

Etcd

etcd 是一个键值存储,用作 Kubernetes 的所有集群数据的后备存储。

节点

Pod

Pod 是一组容器,是 K8s 管理的最小单位。Pod 有一个单一的 IP 地址,应用于 Pod 内的每个容器。

Kubelet

Kubelet 是一个在集群中每个节点上运行的代理。它确保 Pod 中的容器正常运行。

Kube Proxy

Kube-proxy 是一个在集群中每个节点上运行的网络代理。它将从服务进入节点的流量路由到正确的容器。

为什么redis这么快?

![](/assets/image/231023-26.3k star,技术人都应该去看一份开源宝典!!-7.png)

Redis和Memcached都是流行的开源内存数据存储,可以用作缓存。它们有以下几点不同:

  • Redis支持更多的数据结构,如列表,集合,哈希,位数组等,而Memcached只支持字符串。
  • Redis是单线程的,而Memcached是多线程的。这意味着Redis可以避免上下文切换的开销,但Memcached可以利用多核处理器。
  • Redis可以持久化数据到磁盘,而Memcached不可以。这使得Redis可以在重启后恢复数据,而Memcached则需要重新填充缓存。
  • Redis支持事务,发布/订阅,Lua脚本等高级功能,而Memcached不支持。
  • Redis支持主从复制和分区容错,而Memcached不支持。

这张图是用来展示Redis的优势的。它说明了以下几点:

  • Redis是基于RAM的数据存储。RAM访问速度至少比随机磁盘访问快1000倍。
  • Redis利用IO多路复用和单线程执行循环来提高执行效率。
  • Redis利用了几种高效的底层数据结构。

System-design-101 是一个适合所有水平的系统设计学习者的项目,无论您是初学者还是专家,都可以从中受益。System-design-101 的开发者是 ByteByteGoHq,他在 GitHub 上发布了 System-design-101 的源代码,并欢迎其他开发者参与贡献。

如果您想要学习和掌握系统设计的技能,那么 System-design-101 可能是您的最佳选择。您可以尝试使用 System-design-101 来查看和理解不同的系统,并享受它带来的乐趣。😊


© 版权声明

相关文章