在这篇文章中,我们将讨论以下话题:
- RPC vs. gRPC
- 单体 vs. 微服务架构
- 什么是 k8s
- ChatGPT
RPC vs. gRPC
远程过程调用(RPC)使一台机器能够调用另一台机器上的某些代码,从用户角度来看就像本地函数调用一样。
gRPC 是 Google 于 2016 年创建的开源远程过程调用框架。为什么 gRPC 如此受欢迎?
- gRPC 拥有蓬勃发展的开发者生态系统。这个生态系统的核心是使用 Protocol Buffers 作为其数据交换格式
- gRPC 开箱即用即高性能
单体架构 vs. 微服务架构
下图比较了理想世界中的单体和微服务架构。
假设我们有一个电商网站,需要处理以下功能:
- 用户管理
- 采购管理
- 订单管理
- 库存管理
- 支付
- 物流
单体架构
所有组件都部署在一个实例中。服务调用在同一进程内,无需 RPC。与每个组件相关的数据表通常部署在同一个数据库中。
微服务架构
每个组件成为一个自包含的服务,由专业团队维护。服务之间的边界清晰定义。用户界面与多个服务对话以完成工作流程。这适合在业务大幅增长时扩展业务。
然而,由于有更多实例需要维护,微服务架构需要在 DevOps 方面进行相当多的投资。
在某个时期,微服务架构是黄金标准,因为几乎每家大型科技公司都从单体转向微服务。但现在,公司开始重新思考微服务的利弊。一些最具争议性的微服务定义是:独占使用数据库和在单个客户端请求内进行 1000+ 次 RPC。
什么是 Kubernetes(k8s)
k8s 是一个容器编排系统。它用于容器部署和管理。其设计受到 Google 内部系统 Borg 的很大影响。
k8s 集群由一组工作机器(称为节点)组成,这些节点运行容器化应用。每个集群至少有一个工作节点。
工作节点托管 Pod,Pod 是应用工作负载的组件。控制平面管理工作节点和集群中的 Pod。在生产环境中,控制平面通常在多台计算机上运行,集群通常运行多个节点,提供容错和高可用性。
控制平面组件
API 服务器: API 服务器与 k8s 集群中的所有组件通信。对 Pod 的所有操作都通过与 API 服务器通信执行。
调度器: 调度器监视 Pod 上的工作负载,并在新创建的 Pod 上分配负载。
控制器管理器: 控制器管理器运行控制器,包括节点控制器、作业控制器、EndpointSlice 控制器和服务账户控制器。
etcd: etcd 是一个键值存储,用作 Kubernetes 所有集群数据的后端存储。
节点组件
Pod: Pod 是一组容器,是 k8s 管理的最小单位。Pod 有一个 IP 地址应用于 Pod 内的每个容器。
Kubelet: 在集群中每个节点上运行的代理。它确保容器在 Pod 中运行。
Kube Proxy: kube-proxy 是在集群中每个节点上运行的网络代理。它路由来自服务的进入节点的流量。它将对工作的请求转发到正确的容器。
问题:你知道为什么 Kubernetes 被称为”k8s”吗?(答案:k 和 s 之间有 8 个字母)
ChatGPT
ChatGPT 令人震惊。它能在几秒钟内解决 LeetCode 困难题。代码甚至包含很好的注释。
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP35: What is Kubernetes。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。