本周系统设计复习:

  • SSH 如何真正工作
  • 代理 vs. 反向代理
  • 大公司发起或支持的 20 个流行开源项目
  • 生产 Web 应用的 10 个基本组件

代理 vs. 反向代理

正向代理(Forward Proxy)

正向代理是坐在用户设备和互联网之间的服务器。正向代理通常用于:

  • 保护客户端
  • 避免浏览限制
  • 阻止访问某些内容

反向代理(Reverse Proxy)

反向代理是接受来自客户端的请求,将请求转发到 Web 服务器,并将结果返回给客户端的服务器,就像代理服务器处理了请求一样。反向代理适合:

  • 保护服务器
  • 负载均衡
  • 缓存静态内容
  • 加密和解密 SSL 通信

大公司的开源项目

Google

  • Kubernetes
  • TensorFlow
  • Go
  • Angular

Meta

  • React
  • PyTorch
  • GraphQL
  • Cassandra

Microsoft

  • VSCode
  • TypeScript
  • Playwright

Netflix

  • Chaos Monkey
  • Hystrix
  • Zuul

LinkedIn

  • Kafka
  • Samza
  • Pinot

RedHat

  • Ansible
  • OpenShift
  • Ceph Storage

生产 Web 应用的 10 个基本组件

  1. CI/CD 管道 一切始于将代码部署到服务器实例的 CI/CD 管道。Jenkins 和 GitHub 等工具在这里帮助。

  2. 用户请求 用户请求源自 Web 浏览器。DNS 解析后,请求到达应用服务器。

  3. 负载均衡器和反向代理 负载均衡器和反向代理(如 Nginx 和 HAProxy)在 Web 应用服务器之间均匀分发用户请求。

  4. CDN 请求也可以由内容分发网络(CDN)服务。

  5. API 通信 Web 应用通过 API 与后端服务通信。

  6. 数据库和缓存 后端服务与数据库服务器或分布式缓存交互以提供数据。

  7. 作业队列 资源密集型和长时间运行的任务使用作业队列发送到作业 worker。

  8. 全文搜索 全文搜索服务支持搜索功能。Elasticsearch 和 Apache Solr 等工具可以在这里帮助。

  9. 监控 监控工具(如 Sentry、Grafana 和 Prometheus)存储日志并帮助分析数据以确保一切正常。

  10. 告警 在出现问题的情况下,告警服务通过 Slack 等平台通知开发者以快速解决。

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP137: Proxy Vs Reverse proxy

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。