当后端开发人员在每日站立会议上汇报最新情况时,大多数前端开发人员都对自己正在做的工作一无所知。他们使用了很多在我们前端开发人员看来是胡言乱语的术语。但现在不再是这样了!😎
这篇文章旨在解决一些术语。你可能会问,为什么要学习这些术语?首先,你会开始更深入地了解产品的架构。其次,不要将自己局限于前端——成为一名工程师意味着对其他领域也有全面的了解。
请记住,后端开发人员并不想混淆任何人 — 他们只是在说他们领域的语言。让我们将其分解为更简单的术语,并揭开速率限制、负载平衡、代理等概念的神秘面纱。
准备好了吗?让我们开始吧!💪
1. 限流
限流是一种控制客户端(如用户、应用或系统)在特定时间段内向服务器发出的请求数量的方法。可以将其视为交通警察,确保没有人过度使用或滥用服务器的资源。
例如,服务器可能允许单个客户端每分钟发出 100 个请求。如果客户端超出此限制,服务器将拒绝更多请求,通常会返回 429(请求过多)响应。
限流的使用:
- 防止滥用和过载:速率限制可确保没有单个用户或系统通过发送过多请求而压垮服务器,从而导致服务器崩溃。
- 控制成本:有助于避免意外的高资源使用率(如带宽或计算能力),这可能会造成高昂的成本。例如,将 API 调用限制在免费套餐用户的帐户中,以避免过度使用而不付费。
- 增强安全性:通过阻止攻击者的过多请求,帮助减轻 DDoS(分布式拒绝服务)等攻击。
2.负载均衡
负载均衡是一种在多个服务器之间分配传入请求或流量的方法,以确保没有任何单个服务器不堪重负。可以将其想象成交通警察,指挥车辆(请求)驶往不同的车道(服务器),以保证一切顺利运行。
例如,Instagram 等社交媒体平台有数百万用户同时访问其服务器。负载均衡器不会将所有用户发送到一台服务器,而是确保他们的请求分散到多台服务器上。
负载均衡的使用:
- 避免服务器过载:如果所有流量都流向一台服务器,该服务器可能会因负载过大而崩溃。负载平衡通过均匀分配请求来防止这种情况发生。
- 提高性能和速度:通过分散流量,每个服务器可以处理可管理数量的请求,从而为用户提供更快的响应。
- 扩展应用程序:随着流量的增加,您可以向池中添加更多服务器,负载平衡器将自动开始将流量分配到新服务器。
- 确保高可用性:如果一台服务器出现故障,负载平衡器会将流量重定向到其他正常工作的服务器,确保网站或服务保持在线。
3.缓存
缓存是一种临时存储经常访问的数据的方法,以便可以快速检索这些数据,而无需重复从原始源获取这些数据。
想象一下,这就像将常用的菜谱放在厨房柜台上。每次需要时,您无需在菜谱中寻找,只需从柜台上取用即可,从而节省时间和精力。
大多数后端系统使用缓存来存储常用的数据库查询结果、API 响应或预渲染的网页。Redis是后端开发人员缓存数据的热门选择。
缓存的使用:
- 加快性能:从缓存中获取数据比从原始源(例如数据库或服务器)获取数据要快得多。
- 减少服务器负载:通过从缓存提供数据,您可以减少对后端的请求数量,从而防止其不堪重负。
- 处理高流量:在高峰使用期间,缓存有助于确保系统可以处理许多用户而不会减慢速度。
4. CDN
CDN(内容分发网络)是由分布在不同位置的服务器组成的网络,这些服务器协同工作,以更快地向用户提供内容。它通过从地理位置上更靠近用户的服务器提供服务,帮助加快网站、图片、视频和其他内容的加载过程。
想象一下,一个图书馆的书籍存放在不同的分馆。您不必总是去中央图书馆取书,而是可以访问最近的分馆,更快地取到书。CDN 通过将网站内容的副本存储在多个位置来实现类似的功能。
CDN 的使用:
- 更快的加载时间:通过从更靠近用户的服务器提供内容,CDN 减少了数据传输的距离,从而缩短了加载时间。
- 更好的可扩展性和可靠性:CDN 通过自动处理大量用户,使网站更容易扩展。如果一台服务器出现故障,CDN 可以将流量路由到另一台服务器,而不会影响用户体验。
5. 微服务
微服务是一种架构风格,其中应用程序被划分为更小的独立服务,每个服务负责特定的功能。每个微服务就像一个小构建块,专注于一项任务并与其他服务通信以创建完整的应用程序。
想象一下,一家公司,每个部门(销售、营销、财务等)都独立工作,但又相互协作以运营业务。同样,在微服务架构中,每项服务(如用户管理、支付处理等)都独立工作,但又相互交互以使整个系统正常运行。
微服务的对立面是单片架构,其中应用程序的所有功能都组合成单个统一的服务或代码库。
微服务的使用:
- 可扩展性:由于每项服务都是独立的,因此您可以单独扩展它们。例如,如果支付处理服务的流量增加,您可以只扩展该服务而不影响其他服务。
- 灵活性和技术选择:每个微服务都可以使用不同的技术堆栈构建,从而允许团队为每项工作选择最佳工具。例如,您可以使用 Python 进行数据分析,使用 Node.js 进行实时聊天,而不必担心兼容性。
6. API 网关
API 网关是一种服务器,充当所有客户端请求进入系统的入口点。它将这些请求路由到适当的微服务,处理负载平衡、身份验证、缓存和其他任务。简单来说,它就像一个门卫,引导访客进入大楼里的正确部门。
想象一个拥有许多部门(微服务)的大型组织,访问者(用户)不需要直接前往每个部门,而是需要通过中央接待处(API 网关)将他们发送到正确的位置。
Kong是后端开发人员使用的流行的开源 API 网关。
API网关的使用:
- 单一入口点:通过为所有请求提供单一入口点,而不是让客户端直接与多个微服务通信,简化了客户端与后端服务之间的交互。API 网关根据 URL、方法或其他因素将请求定向到正确的微服务,充当流量控制器。
- 日志记录和监控:它收集所有通过的请求的日志和指标,帮助监控系统和调试问题。
- 安全性:它对传入请求进行速率限制、负载平衡并检查身份验证令牌。
7. Webhook
Webhook 是一种让一个应用程序在特定事件发生时向另一个应用程序发送实时更新或通知的方式。接收应用程序无需反复检查更新(轮询),发送应用程序会在需要时自动发送信息。
例如,当发生重要的事情(如包裹递送)时,发件人(递送服务)会立即向您(收件人)发送短信,而您不必不断检查网站以获取更新。
Webhook 的使用:
- 实时通知:Webhook 提供即时更新,消除定期轮询造成的延迟。
- 自动化:Webhook 支持不同应用程序或系统之间的自动化工作流程。
8. 分片
分片是一种将大型数据库拆分成更小、更易于管理的部分(称为分片)的方法。每个分片保存一部分数据并作为独立的数据库运行。
可以将分片视为根据类型将图书馆的书籍分成多个部分。您无需在整个图书馆中搜索书籍,只需查看相关部分,从而使该过程更快、更高效。
分片的用法:
- 提高性能:通过将数据划分到多个分片中,可以分散工作负载。这可以减少单个数据库的负载,并加快查询处理速度。
- 高可用性:如果一个分片出现故障,只有部分数据会受到影响。系统的其余部分将继续工作,使其更具弹性。
9. 代理
代理服务器是充当客户端(如浏览器)和另一台服务器(如网站)之间的中介的服务器。您的请求不会直接连接到服务器,而是通过代理服务器转发到目的地,然后将响应发回给您。
把它想象成一个中间人:如果你想向某人发送消息,你先将其交给中间人,然后中间人将消息传递给你并带回答复。
代理服务器的使用:
- 隐私和匿名:代理通过屏蔽您的 IP 地址来隐藏您的身份。目标服务器只能看到代理的 IP,看不到您的 IP。
- 绕过限制:代理允许用户通过不同位置的服务器路由请求来访问其所在地区可能被阻止的内容。
10.消息队列
消息队列是一种用于以可靠且有组织的方式在应用程序的不同部分之间(或应用程序之间)发送、存储和检索消息的系统。队列并不直接发送消息,而是充当邮局:
- 系统的一部分(发送者)将消息放入队列中。
- 另一部分(接收器)在准备好处理该数据时就会拾取该数据。
RabbitMQ和Kafka是两种流行的消息队列系统,
消息队列的使用:
- 解耦系统:消息队列允许系统的不同部分独立工作。发送者和接收者不需要互相了解或同时工作。
- 异步处理:消息队列支持后台任务处理,无需用户等待。例如,当您上传照片时,应用会立即确认上传,同时在后台处理调整大小和优化任务。










1129

被折叠的 条评论
为什么被折叠?



