本周系统设计复习:
- 主导我们世界的 9 大算法
- API 网关做什么?
- gRPC 如何工作?
- Docker vs. Kubernetes。我们应该使用哪一个?
- 你知道多少种 API 架构风格?
- CI/CD 管道解释
- MVC、MVP、MVVM、VIPER 模式
主导我们世界的 9 大算法
下图显示了我们在日常生活中最常用的算法。它们用于互联网搜索引擎、社交网络、WiFi、手机,甚至卫星。
- 排序(Sorting)
- Dijkstra 算法
- Transformers
- 链接分析(Link Analysis)
- RSA 算法
- 整数分解(Integer Factorization)
- 卷积神经网络(Convolutional Neural Networks)
- 霍夫曼编码(Huffman Coding)
- 安全哈希算法(Secure Hash Algorithm)
API 网关工作原理
下图显示了详细信息。
步骤 1 - 客户端发送 HTTP 请求到 API 网关。
步骤 2 - API 网关解析和验证 HTTP 请求中的属性。
步骤 3 - API 网关执行允许列表/拒绝列表检查。
步骤 4 - API 网关与身份提供商交谈进行身份验证和授权。
步骤 5 - 速率限制规则应用于请求。如果超过限制,请求被拒绝。
步骤 6 和 7 - 现在请求已通过基本检查,API 网关通过路径匹配找到相关服务进行路由。
步骤 8 - API 网关将请求转换为适当的协议并发送到后端微服务。
步骤 9-12:API 网关可以正确处理错误,并在错误需要更长时间恢复时处理故障(断路器)。它还可以利用 ELK(Elastic-Logstash-Kibana)栈进行日志记录和监控。我们有时在 API 网关中缓存数据。
gRPC 如何工作
RPC(远程过程调用)被称为”远程”,因为它在服务部署到微服务架构下不同服务器时启用远程服务之间的通信。从用户角度看,它像本地函数调用。
下图说明了 gRPC 的整体数据流。
步骤 1:从客户端进行 REST 调用。请求体通常是 JSON 格式。
步骤 2-4:订单服务(gRPC 客户端)接收 REST 调用,转换它,并向支付服务进行 RPC 调用。gRPC 将客户端存根编码成二进制格式并发送到低级传输层。
步骤 5:gRPC 通过 HTTP2 通过网络发送数据包。由于二进制编码和网络优化,gRPC 据说比 JSON 快 5 倍。
步骤 6-8:支付服务(gRPC 服务器)从网络接收数据包,解码它们,并调用服务器应用。
步骤 9-11:结果从服务器应用返回,并被编码发送到传输层。
步骤 12-14:订单服务接收数据包,解码它们,并将结果发送到客户端应用。
Docker vs. Kubernetes
什么是 Docker?
Docker 是一个开源平台,允许你在隔离容器中打包、分发和运行应用。它专注于容器化,提供封装应用及其依赖的轻量级环境。
什么是 Kubernetes?
Kubernetes,通常称为 K8s,是一个开源容器编排平台。它提供跨节点集群自动化部署、扩展和管理容器化应用的框架。
两者如何不同?
Docker:Docker 在单个操作系统主机上的单个容器级别操作。你必须手动管理每个主机,为多个相关容器设置网络、安全策略和存储可能很复杂。
Kubernetes:Kubernetes 在集群级别操作。它管理跨多个主机的多个容器化应用,为负载均衡、扩展和确保应用期望状态等任务提供自动化。
简而言之,Docker 专注于容器化和在单个主机上运行容器,而 Kubernetes 专门在集群主机群中管理和编排大规模容器。
API 架构风格
架构风格定义应用程序编程接口(API)的不同组件如何相互交互。因此,它们通过提供设计和构建 API 的标准方法确保效率、可靠性和与其他系统的易集成性。以下是最常用的风格:
- SOAP:成熟、全面、基于 XML。最适合企业应用
- RESTful:流行、易实现、HTTP 方法。最适合 Web 服务
- GraphQL:查询语言、请求特定数据。减少网络开销、更快响应
- gRPC:现代、高性能、Protocol Buffers。适合微服务架构
- WebSocket:实时、双向、持久连接。非常适合低延迟数据交换
- Webhook:事件驱动、HTTP 回调、异步。在事件发生时通知系统
CI/CD 管道解释
CI/CD 管道是自动化构建、测试和部署软件的工具。
它集成软件开发生命周期的不同阶段,包括代码创建和修订、测试和部署,到单个、凝聚的工作流中。
MVC、MVP、MVVM、MVVM-C 和 VIPER 模式
这些架构模式是在应用开发中最常用的,无论是在 iOS 还是 Android 平台上。开发者引入它们是为了克服早期模式的限制。那么,它们如何不同?
- MVC:最老的模式,可追溯到近 50 年前
- 每个模式都有一个”视图”(V)负责显示内容和接收用户输入
- 大多数模式包括一个”模型”(M)来管理业务数据
- “控制器”、“展示器”和”视图模型”是视图和模型之间的翻译器(VIPER 模式中的”实体”)
- 这些翻译器可能相当复杂,所以提出了各种模式使它们更易维护
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP144: The 9 Algorithms That Dominate Our World。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。