《后端技术面试 38 讲》学习笔记 Day 08

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
云解析 DNS,旗舰版 1个月
简介: 《后端技术面试 38 讲》学习笔记 Day 08

《后端技术面试 38 讲》学习笔记 Day 08

23 | 异步架构:如何避免互相依赖的系统间耦合?

主要手段就是使用消息队列的异步架构,有时候也被称为事件驱动架构。

消息队列异步架构的主要角色包括消息生产者、消息队列和消息消费者。

根据消息消费方式又分为点对点模式和发布订阅模式两种。

在点对点模式中,多个消息生产者向消息队列发送消息,多个消息消费者消费消息,每个消息只会被一个消息消费者消费。

在发布订阅模式中,开发者可以在消息队列中设置主题,消息生产者的消息按照主题进行发送,多个消息消费者可以订阅同一个主题,每个消费者都可以收到这个主题的消息拷贝,然后按照自己的业务逻辑分别进行处理计算。

好处:改善写操作请求的响应时间、更容易进行伸缩、削峰填谷、隔离失败、降低耦合

心得体会

  1. 异步发送后,生产者直接返回了,提高效率。
  2. 对于失败重试的情况,似乎是消费者更需要关心的一件事,对于生产者默认就是发送成功,一定能被成功消费,只是时间问题,当然遇到极端情况,多次重试还是失败的。不知道这样的理解对吗?

工作体验

  1. 工作中早年接触过IBM MQ、RocketMQ、ActiveMQ,作为一个初级开发者来看的确没有什么大差别,唯一就是IBM MQ部署,创建队列都很麻烦,甚至不能代码创建。
  2. MQ是有多种协议的,也会影响性能。kafka这样的,作为日志发送的场景似乎都是很好的选型,至少多家都是这样的。

24 | 负载均衡架构:如何用10行代码实现一个负载均衡服务?

原文摘抄

HTTP 重定向负载均衡在实践中很少使用。

大型网互联网应用需要两次负载均衡,一次通过 DNS 负载均衡,用户请求访问数据中心负载均衡服务器集群的某台机器,然后这台负载均衡服务器再进行一次负载均衡,将用户请求分发到应用服务器集群的某台服务器上。

反向代理服务器是工作在 HTTP 协议层之上的,所以它代理的也是 HTTP 的请求和响应。作为互联网应用层的一个协议,HTTP 协议相对说来比较重,效率比较低,所以反向代理负载均衡通常用在小规模的互联网系统上,只有几台或者十几台服务器的规模。

IP 负载均衡不需要在 HTTP 协议层工作,可以在操作系统内核直接修改 IP 数据包的地址,因此,效率比应用层的反向代理负载均衡高得多。但是它依然有一个缺陷,不管是请求还是响应的数据包,都要通过负载均衡服务器进行 IP 地址转换,才能够正确地把请求数据分发到应用服务器,或者正确地将响应数据包发送到用户端程序。请求的数据通常比较小,因此负载均衡服务器会成为响应数据的流量瓶颈。

数据链路层负载均衡可以解决响应数据量大而导致的负载均衡服务器输出带宽不足的问题。也就是说,负载均衡服务器并不修改数据包的 IP 地址,而是修改数据链路层里的网卡 mac 地址,在数据链路层实现负载均衡。因为 IP 地址没有修改过,所以这个响应会直接到达用户的浏览器,而不会再经过负载均衡服务器。

Linux 上实现 IP 负载均衡和链路层负载均衡的技术是 LVS,目前 LVS 的功能已经集成到 Linux 中了,通过 Linux 可以直接配置实现这两种负载均衡。

评论区摘抄:

专栏好像没有提到硬件负载均衡 F5 或者 A10,虽然贵,但是性能强大,支持百万以上并发,并且还具备防火墙、防 DDoS 攻击等安全功能。 实现了 IP 负载均衡和链路层负载均衡的 LVS 是 4 层负载均衡,与协议无关,性能是十万级,传说可达 80 万/秒; 应用层负载均衡,Nginx 是 7 层负载均衡,可以支持 HTTP、E-mail 协议,性能大概是 5 万/秒。 大概一般的互联网平台,如果用户的地理分布比较广泛,那么先上 DNS 的地理级别负载均衡(域名商提供,一般免费); 如果流量正的很大,或者土豪,那么就在当地机房上集群级别的硬件负载均衡 F5,在我的印象里面,似乎维基百科也没有使用硬件负载均衡; 进入当地机房以后,可以再使用机器级别的负载均衡 Nginx 将用户请求发送给及群众的某台机器。 也可以采用级联的方式,一级用 F5,二级用 LVS,三级用 Nginx。我觉的一般人用不到这个方案。 参考《从零开始学架构》中有关高性能负载均衡的章节。

  1. 硬件负载均衡:支持百万以上
  2. 软件负载均衡:
    2.1 HTTP重定向:访问HTTP重定向负载均衡服务器获得新的地址后访问
    2.2 DNS负载均衡:访问DNS或者地址后访问
    2.3 反向代理:反向代理有资源则返回,无资源则请求下游服务器。nginx,通过将请求分发来实现。性能是5 万级别
    2.4 LVS:性能是十万级
    2.2.1 IP层:请求到达负载均衡后,负载均衡服务器在操作系统内核修改IP地址
    2.2.2 数据链路层负载均衡:解决响应数据量大而导致的负载均衡服务器输出带宽不足的问题。负载均衡服务器修改mac地址,而服务器和下游应用服务器共享相同的虚拟IP,所以应用服务器处理完之后不用再把response返回负载均衡服务器去修改IP以返回给客户端,而是直接返回给客户端。

心得体会

  1. 越底层的(七层协议)协议进行负载均衡,性能更高,更不容易瓶颈。

工作体验

  1. 首先都是很多层网关进来了,这些网关有负载均衡功能的,软硬件的实现都有。最后配置F5负载均衡,Ngnix负载均衡的都有。可能还是公司并发量并不高吧。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
12天前
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
28天前
|
Kubernetes 持续交付 开发者
探索后端技术的未来:微服务架构与容器化部署的融合
在数字化时代的浪潮中,后端技术正经历着前所未有的变革。本文将深入探讨微服务架构和容器化部署如何共同推动后端技术的发展,提升应用的性能、可扩展性和可靠性。通过分析现代软件开发的需求,我们将揭示这两种技术如何互补,以及它们在未来后端开发中的潜力和挑战。
|
6天前
|
消息中间件 缓存 NoSQL
再也不怕面试官问零拷贝技术
该文章主要讨论了零拷贝技术的相关概念、传统IO读写操作的过程以及零拷贝技术的两种实现方法。
再也不怕面试官问零拷贝技术
|
11天前
|
JavaScript 前端开发 程序员
后端程序员的前端必备-jQuery核心学习笔记
后端程序员的前端必备-jQuery核心学习笔记
37 13
|
14天前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
53 8
|
14天前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
36 4
|
16天前
|
Kubernetes 监控 开发者
探索后端开发的新境界:微服务架构与容器化技术
在数字化时代的浪潮中,后端开发不断演进,涌现出创新的架构与技术。本文深入探讨了微服务架构和容器化技术如何重塑后端开发,提升系统的可维护性、可扩展性和部署效率。通过实际案例分析,我们揭示了这些技术背后的原理,并提供了实施的最佳实践和面临的挑战,为后端开发者提供一条清晰的技术升级路径。
41 3
|
26天前
|
存储 搜索推荐 数据库
面试题MySQL问题之个性化推荐广告系统中ETL技术与Aerospike的结合使用如何解决
面试题MySQL问题之个性化推荐广告系统中ETL技术与Aerospike的结合使用如何解决
30 2
|
28天前
|
Kubernetes 搜索推荐 开发者
探索后端开发的未来之路:微服务架构与容器化技术
随着云计算技术的不断成熟和普及,后端开发领域正经历着前所未有的变革。本文将深入探讨微服务架构和容器化技术如何重塑后端开发的面貌,提升系统的可扩展性、灵活性和可靠性。通过分析现代后端系统面临的挑战,我们将展示微服务和容器化如何提供解决方案,并预测这些技术如何塑造后端开发的未来发展。
46 3

热门文章

最新文章