logo

面试题

No.13:为什么需要做负载均衡?

网站、移动应用和小程序的流量可能会随着时间不断增长,但单台虚拟机的性能并不能随着配置的增加而线性增长。

这个单机性能的上限与所采用的 Web 服务器和编程语言有关。以 Apache + mod_php 为例,其单机上限大约为 200QPS。

当服务器的核心数达到一定规模后,性能将不再增长。如果此时系统压力超过了单台服务器的承受极限,我们就不得不将后端服务器拆分成多台,并设计一个负载均衡架构来处理海量的用户请求。

No.14:如何提升系统的横向扩展能力?

要提升系统的横向扩展能力,可以采取以下措施:

  1. 在架构设计上去除单机依赖:确保系统的设计不依赖于单个服务器的资源。多台后端服务器可以连接同一个数据库,使用同一台 Redis 缓存服务器,并避免过度依赖本地文件缓存。如果需要使用本地缓存,可以添加自动刷新机制来保证数据的一致性。
  2. 集群化改造:对后端应用进行集群化改造,将负载均衡器引入系统中。可以使用软件解决方案如 Nginx、HAProxy、LVS,也可以选择硬件解决方案如 F5。在 TCP 层面进行四层负载均衡,或者使用应用网关来进行七层负载均衡。现代负载均衡架构中,HTTPS 通常也会使用应用网关来进行解包和封装,以减轻后端服务器的 CPU 压力,提高系统的总体容量。

No.15:应用网关在架构中的价值在哪里?

应用网关能执行 TLS 卸载、身份验证、指标收集、数据压缩与转换等工作,可以优化后端架构并增强系统容量和鲁棒性。其主要功能包括:

  1. 作为 API 统一入口,简化客户端与后端服务的通信;
  2. 实现灵活路由配置和负载均衡策略,提高系统性能和可扩展性;
  3. 集成认证和授权机制,集中管理和保护后端服务的安全性;
  4. 实现请求协议转换,提高系统灵活性和兼容性;
  5. 实施缓存机制和限流策略,优化后端服务负载和响应速度;
  6. 进行全局请求监控和日志收集,帮助团队发现问题、分析性能瓶颈,优化系统。

No.16:常见应用网关有哪些区别?

不同的应用网关在设计重点上存在差异,对比如下:

  1. OpenResty 是一个高度自定义的应用网关开发框架,允许用户自行编写代码进行开发。它具有较大的自由度,但基础插件较少,需要投入较多的开发资源才能正常使用。
  2. Kong 是一个基于 OpenResty 的商业开源应用网关,拥有丰富的插件和完善的功能。它基于 PostgreSQL 数据库,可以独立部署而无需依赖 Kubernetes 环境,也可以使用云数据库服务。Kong 适合那些开箱即用、流量不是特别高的业务场景。
  3. Zuul 具有最强大的流量过滤能力。它可以对请求进行精细化的路由和过滤,确保请求能够正确地转发到相应的后端服务。
  4. Spring Cloud Gateway 与 Spring Cloud 生态紧密配合,易于开发和扩展。它适用于 Java 生态系统的微服务系统,可以与其他 Spring Cloud 组件无缝集成。

阅读数:2697      字数:1050 最后更新:2023-10-26 00:45:50