本周系统设计复习:
- SSH 如何真正工作
- 代理 vs. 反向代理
- 大公司发起或支持的 20 个流行开源项目
- 生产 Web 应用的 10 个基本组件
代理 vs. 反向代理
正向代理(Forward Proxy)
正向代理是坐在用户设备和互联网之间的服务器。正向代理通常用于:
- 保护客户端
- 避免浏览限制
- 阻止访问某些内容
反向代理(Reverse Proxy)
反向代理是接受来自客户端的请求,将请求转发到 Web 服务器,并将结果返回给客户端的服务器,就像代理服务器处理了请求一样。反向代理适合:
- 保护服务器
- 负载均衡
- 缓存静态内容
- 加密和解密 SSL 通信
大公司的开源项目
- Kubernetes
- TensorFlow
- Go
- Angular
Meta
- React
- PyTorch
- GraphQL
- Cassandra
Microsoft
- VSCode
- TypeScript
- Playwright
Netflix
- Chaos Monkey
- Hystrix
- Zuul
- Kafka
- Samza
- Pinot
RedHat
- Ansible
- OpenShift
- Ceph Storage
生产 Web 应用的 10 个基本组件
CI/CD 管道 一切始于将代码部署到服务器实例的 CI/CD 管道。Jenkins 和 GitHub 等工具在这里帮助。
用户请求 用户请求源自 Web 浏览器。DNS 解析后,请求到达应用服务器。
负载均衡器和反向代理 负载均衡器和反向代理(如 Nginx 和 HAProxy)在 Web 应用服务器之间均匀分发用户请求。
CDN 请求也可以由内容分发网络(CDN)服务。
API 通信 Web 应用通过 API 与后端服务通信。
数据库和缓存 后端服务与数据库服务器或分布式缓存交互以提供数据。
作业队列 资源密集型和长时间运行的任务使用作业队列发送到作业 worker。
全文搜索 全文搜索服务支持搜索功能。Elasticsearch 和 Apache Solr 等工具可以在这里帮助。
监控 监控工具(如 Sentry、Grafana 和 Prometheus)存储日志并帮助分析数据以确保一切正常。
告警 在出现问题的情况下,告警服务通过 Slack 等平台通知开发者以快速解决。
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP137: Proxy Vs Reverse proxy。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。