【Python爬虫(44)】分布式爬虫:筑牢安全防线,守护数据之旅
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。
目录
- 一、引言
- 二、防范分布式爬虫遭受 DDoS 攻击
- 2.1 设置防火墙
- 2.2 使用 CDN 服务
- 三、保护分布式爬虫系统的内部通信安全
- 3.1 加密通信链路的原理
- 3.2 实际应用案例
- 四、防止爬虫被恶意利用
- 4.1 限制爬虫的访问频率
- 4.2 监控异常行为
- 五、总结与展望
一、引言
在大数据时代,数据的价值愈发凸显,而分布式爬虫作为高效获取海量数据的重要工具,在诸多领域,如搜索引擎索引构建、市场情报收集、舆情监测等发挥着关键作用。通过将爬取任务分布到多个节点并行处理,分布式爬虫极大地提高了数据采集的效率和速度,能够应对大规模数据爬取的挑战。
然而,随着分布式爬虫的广泛应用,其面临的安全风险也日益严峻。一方面,分布式爬虫作为数据的主动获取方,容易成为各种攻击的目标,比如 DDoS 攻击,可能导致爬虫系统瘫痪,无法正常工作;另一方面,爬虫系统内部的通信也可能被窃取或篡改,威胁数据的安全性和完整性。此外,若分布式爬虫被恶意利用,还可能对目标网站造成不良影响,引发法律风险。因此,为了确保分布式爬虫的稳定运行和数据的安全,实施有效的安全防护措施显得尤为必要。
二、防范分布式爬虫遭受 DDoS 攻击
2.1 设置防火墙
防火墙作为网络安全的第一道防线,在防范 DDoS 攻击中起着举足轻重的作用。其基本原理是基于一系列预设的规则,对进出网络的流量进行细致的检查和过滤。当 DDoS 攻击发生时,大量异常的攻击流量会试图涌入目标网络,防火墙通过对这些流量的特征分析,如源 IP 地址、目的 IP 地址、端口号、协议类型等信息,来判断流量的合法性 。
在实际应用中,为了有效防范 DDoS 攻击,防火墙通常会设置连接速率限制。例如,限制每秒来自同一源 IP 地址的连接请求数量。假设正常情况下,一个合法用户每秒的连接请求不会超过 10 个,而在 DDoS 攻击时,攻击源可能会每秒发送数百甚至数千个连接请求。通过设置连接速率限制为每秒 15 个,防火墙就可以拦截超出限制的连接请求,从而抵御部分 DDoS 攻击。同时,防火墙还会配置详细的日志记录功能,对所有通过的流量进行记录,以便在攻击发生后进行溯源和分析。
此外,一些高级防火墙还具备智能检测和防御功能,能够实时监测网络流量的变化趋势,通过机器学习算法识别出异常流量模式,进而自动调整防御策略。比如,当检测到某种流量模式与已知的 DDoS 攻击特征相似时,防火墙会自动加强对该流量的过滤和限制。
以华为防火墙为例,配置 DDoS 攻击防范时,首先需要进入防火墙的管理界面,在 “策略” 选项中找到 “安全防护”,再进入 “攻击防范” 下的 “Anti-DDoS” 设置页面。在此页面中,用户可以将连接外网的接口(如 GigabitEthernet 0/0/1)绑定,启用流量统计功能,以便对进入内网的流量进行实时监控。接着,开启阈值学习功能,设置学习时长(如 7 天)、学习模式(单次学习或多次学习)以及学习容忍度(如 100),并启用自动应用功能,让系统根据学习结果自动调整攻击防范阈值。最后,选中需要防范的攻击类型,如 SYN Flood、UDP Flood、HTTP Flood 等,并启用相应的防范功能。完成配置后,防火墙会根据设置的规则对流量进行检测和过滤,有效抵御 DDoS 攻击,保障分布式爬虫系统的网络安全。
2.2 使用 CDN 服务
CDN(Content Delivery Network,内容分发网络)服务在防御 DDoS 攻击方面具有独特的优势,其原理基于广泛分布的节点服务器和智能的流量调度机制。CDN 在全球各地部署了大量的节点服务器,这些节点服务器就像一个个 “小卫士”,分布在不同的地理位置,随时准备为用户提供服务。
当用户向分布式爬虫系统发起请求时,CDN 的智能 DNS 会根据用户的地理位置、网络状况等因素,将用户的请求导向离用户最近且负载较低的节点服务器。这样一来,不仅可以加快用户请求的响应速度,还能分散流量,避免所有请求都集中在源服务器上。在 DDoS 攻击发生时,攻击流量会被分散到各个 CDN 节点上。由于 CDN 节点数量众多,且每个节点都具备一定的承受能力,单个节点所承受的攻击流量相对较小,从而能够有效减轻源服务器的压力,确保分布式爬虫系统的正常运行。
例如,某知名电商网站在使用 CDN 服务后,当遭受 DDoS 攻击时,攻击流量被分散到了全球各地的 CDN 节点上。原本可能会导致源服务器瘫痪的海量攻击流量,在经过 CDN 节点的分散后,每个节点所承受的流量仅为攻击总量的一小部分。这些节点凭借自身的处理能力,成功抵御了攻击流量,使得源服务器能够正常处理用户的请求,保证了网站的正常运营,也保障了分布式爬虫系统在该网站上的数据采集工作不受影响。 此外,CDN 服务提供商通常还配备了专业的流量清洗设备和技术团队。当检测到异常流量时,流量清洗设备会自动对流量进行分析和过滤,将攻击流量拦截在源服务器之外,只将合法的用户请求转发给源服务器,进一步增强了对 DDoS 攻击的防御能力。
三、保护分布式爬虫系统的内部通信安全
3.1 加密通信链路的原理
在分布式爬虫系统中,各节点之间的通信至关重要,而加密通信链路是保障通信安全的关键手段。常见的加密算法可分为对称加密算法和非对称加密算法 ,它们在爬虫系统中都有着各自独特的应用场景。
对称加密算法,如 AES(Advanced Encryption Standard,高级加密标准)和 DES(Data Encryption Standard,数据加密标准),其核心特点是加密和解密使用相同的密钥。以 AES 算法为例,它支持 128 位、192 位和 256 位的密钥长度,由于其安全性较高、计算效率快,在分布式爬虫系统中常用于对大量数据的快速加密传输。比如,在爬虫节点向主节点发送爬取到的数据时,可以使用 AES 算法对数据进行加密,确保数据在传输过程中不被窃取或篡改。假设爬虫节点 A 爬取到了一批用户评论数据,它会使用与主节点事先协商好的 AES 密钥对这些数据进行加密,然后再通过网络发送给主节点。主节点接收到加密数据后,使用相同的密钥进行解密,从而获取到原始的用户评论数据。
DES 算法则是一种相对较早的对称加密算法,它使用 56 位的密钥,虽然在安全性上不如 AES,但由于其算法简单,在一些对安全性要求不是特别高且对计算资源有限制的场景下仍有应用。例如,在一些小型的分布式爬虫项目中,数据的敏感性较低,且硬件设备的计算能力有限,就可以考虑使用 DES 算法来加密通信链路。
非对称加密算法,像 RSA(Rivest-Shamir-Adleman)和 ECC(Elliptic Curve Cryptography,椭圆曲线密码学),与对称加密算法不同,它使用一对密钥,即公钥和私钥。公钥可以公开,用于加密数据;私钥则由持有者妥善保管,用于解密数据。RSA 算法基于大数分解的数学难题,其安全性较高,常用于在分布式爬虫系统中进行密钥交换和数字签名。例如,当爬虫节点需要与主节点建立安全连接时,主节点会将自己的公钥发送给爬虫节点,爬虫节点使用该公钥对会话密钥进行加密,然后发送给主节点。主节点接收到加密的会话密钥后,使用自己的私钥进行解密,从而获取到会话密钥。之后,双方就可以使用这个会话密钥进行对称加密通信,提高通信效率。
ECC 算法则是基于椭圆曲线离散对数问题,它具有密钥长度短、计算效率高、安全性强等优点,在资源受限的环境中,如移动设备参与的分布式爬虫场景中,ECC 算法能够以较短的密钥长度提供与 RSA 算法相当的安全性,同时减少计算资源的消耗。
3.2 实际应用案例
某大型电商数据采集项目中,采用了分布式爬虫系统来收集各大电商平台的商品信息。为了确保系统内部通信的安全,该项目使用了 SSL/TLS 协议来加密通信链路,其底层采用了 AES 对称加密算法和 RSA 非对称加密算法相结合的方式。
在实施过程中,首先由认证机构(CA)为爬虫系统的主节点颁发数字证书,该证书包含了主节点的公钥以及 CA 的签名。当爬虫节点与主节点建立连接时,会进行 SSL/TLS 握手过程。爬虫节点首先向主节点发送一个 “ClientHello” 消息,其中包含它支持的加密算法列表等信息。主节点收到后,从列表中选择一种加密算法,并向爬虫节点发送 “ServerHello” 消息,同时附上自己的数字证书。爬虫节点接收到数字证书后,会验证证书的合法性,包括验证 CA 的签名以及证书是否过期等。如果证书合法,爬虫节点会生成一个随机的会话密钥,使用主节点的公钥对其进行加密,然后发送给主节点。主节点使用自己的私钥解密得到会话密钥,之后双方就使用这个会话密钥通过 AES 算法对通信数据进行加密和解密。
通过采用这种加密通信链路的方式,该电商数据采集项目取得了显著的效果。在数据传输过程中,没有发生任何数据泄露或被篡改的情况,保障了采集到的商品信息的安全性和完整性。即使网络传输过程中存在恶意攻击者监听通信链路,由于数据已经被加密,攻击者也无法获取到明文数据,有效地保护了分布式爬虫系统的内部通信安全,确保了整个数据采集项目的顺利进行。
四、防止爬虫被恶意利用
4.1 限制爬虫的访问频率
限制爬虫的访问频率是防止其被恶意利用的重要手段之一。在实际应用中,这一手段能够有效避免因爬虫过度频繁访问目标网站而导致的一系列问题,如网站服务器负载过高、资源被耗尽等,同时也能降低爬虫被目标网站识别并封禁的风险。
设置每秒钟最大请求数是一种常见的频率限制方式。以 Python 的requests库为例,假设我们要爬取一个电商网站的商品信息,为了避免对该网站造成过大压力,我们可以在代码中设置每秒钟最多发送 3 个请求。具体实现如下:
import requests
import timeurl_list = ['https://example.com/product1', 'https://example.com/product2', 'https://example.com/product3']
for url in url_list:response = requests.get(url)# 处理响应数据time.sleep(1/3) # 每秒钟最多发送3个请求
在这段代码中,通过time.sleep(1/3)函数,确保了在每次发送请求后,程序会暂停 1/3 秒,从而实现了每秒钟最多发送 3 个请求的限制。
限制同一 IP 地址的访问频率也是一种有效的方式。许多网站会根据 IP 地址来统计访问频率,如果发现某个 IP 地址在短时间内发送了大量请求,就可能会将其判定为恶意爬虫并进行封禁。比如,某新闻网站规定,同一个 IP 地址每分钟的访问次数不能超过 20 次。对于分布式爬虫系统而言,可以在每个爬虫节点上设置相应的访问频率限制。例如,使用 Python 的ipython库来获取当前节点的 IP 地址,并记录其访问次数。当访问次数达到限制时,暂停该 IP 地址的访问一段时间,如下所示:
import requests
import time
from ipython import get_ipip = get_ip()
access_count = 0
last_reset_time = time.time()url_list = ['https://news.example.com/article1', 'https://news.example.com/article2', 'https://news.example.com/article3']
for url in url_list:if time.time() - last_reset_time > 60:access_count = 0last_reset_time = time.time()if access_count >= 20:time.sleep(60 - (time.time() - last_reset_time))access_count = 0last_reset_time = time.time()response = requests.get(url)# 处理响应数据access_count += 1
在上述代码中,通过记录每个 IP 地址的访问次数,并根据时间进行重置,当访问次数达到限制时,暂停访问,直到下一个时间周期开始,从而实现了对同一 IP 地址访问频率的限制,有效防止了爬虫被恶意利用对目标网站造成不良影响。
4.2 监控异常行为
监控异常行为是及时发现爬虫被恶意利用的关键措施,通过实时监测爬虫的访问情况,能够迅速察觉异常并采取相应措施,保障爬虫系统和目标网站的正常运行。
使用网站监控工具是实现异常行为监控的有效手段之一。像 Prometheus 和 Grafana 这样的工具,在分布式爬虫监控中发挥着重要作用。Prometheus 是一款开源的系统监控和报警工具包,它可以对分布式爬虫系统中的各种指标进行采集和存储,如请求成功率、响应时间、错误率等。例如,在一个分布式爬虫项目中,通过在每个爬虫节点上部署 Prometheus 的客户端,收集每个节点的请求成功率数据。如果某个节点的请求成功率突然持续低于 80%(正常情况下应保持在 90% 以上),就可能意味着出现了异常情况,如网络故障、目标网站反爬虫机制加强等。
Grafana 则是一款用于数据可视化的工具,它可以与 Prometheus 集成,将采集到的数据以直观的图表形式展示出来。通过创建监控仪表盘,我们可以实时查看各个爬虫节点的运行状态。比如,在 Grafana 的仪表盘上,以折线图的形式展示每个节点的响应时间变化趋势。如果发现某个节点的响应时间突然大幅增加,远远超出正常范围,就可以及时对该节点进行排查,判断是否是因为爬虫被恶意利用导致访问行为异常。
一旦发现异常行为,及时采取封禁 IP 地址或报警等措施至关重要。当监控工具检测到某个 IP 地址的访问行为异常,如短时间内发起大量的无效请求,就可以将该 IP 地址列入封禁列表,阻止其继续访问。以 Nginx 服务器为例,通过配置ngx_http_access_module模块,可以实现对异常 IP 地址的封禁。在nginx.conf配置文件中添加如下内容:
http {#...deny 192.168.1.100; # 封禁IP地址192.168.1.100#...
}
除了封禁 IP 地址,报警也是及时通知相关人员处理异常的重要方式。可以通过邮件、短信或即时通讯工具等方式发送报警信息。例如,使用 Python 的smtplib库和email模块实现邮件报警功能。当监控系统检测到异常行为时,调用邮件发送函数,将异常信息发送给管理员。代码示例如下:
import smtplib
from email.mime.text import MIMETextdef send_email_alert(subject, content):from_addr = 'your_email@example.com'to_addr = 'admin@example.com'password = 'your_email_password'msg = MIMEText(content, 'plain', 'utf-8')msg['Subject'] = subjectmsg['From'] = from_addrmsg['To'] = to_addrserver = smtplib.SMTP('smtp.example.com', 587)server.starttls()server.login(from_addr, password)server.sendmail(from_addr, to_addr, msg.as_string())server.quit()# 模拟异常情况,发送报警邮件
send_email_alert('分布式爬虫异常', '发现某个爬虫节点出现大量无效请求,请及时处理!')
通过上述方式,能够及时发现并处理爬虫的异常行为,有效防止爬虫被恶意利用,保障分布式爬虫系统的安全稳定运行。
五、总结与展望
分布式爬虫的安全防护涵盖了多个关键方面,从防范 DDoS 攻击的防火墙设置与 CDN 服务应用,到保护内部通信安全的加密链路实现,再到防止爬虫被恶意利用的访问频率限制和异常行为监控,每一个环节都紧密相连,共同构建起保障分布式爬虫稳定、安全运行的坚固防线。这些安全防护措施不仅是技术层面的应对策略,更是确保爬虫在合法合规框架内运行,维护网络秩序和数据安全的必要手段。
然而,需要明确的是,安全防护并非一劳永逸,而是一个持续不断的动态过程。随着网络技术的飞速发展,新的攻击手段和安全威胁会不断涌现,这就要求我们时刻保持警惕,密切关注网络安全动态,及时更新和优化安全策略。例如,随着量子计算技术的发展,传统的加密算法可能面临被破解的风险,届时就需要研究和采用更高级别的抗量子加密算法来保障通信安全。
展望未来,分布式爬虫安全防护技术有望朝着智能化、自动化方向迈进。一方面,借助人工智能和机器学习技术,安全防护系统能够更加精准地识别和预测潜在的安全威胁。通过对海量网络数据的学习和分析,系统可以自动建立行为模型,一旦发现异常行为,能够迅速做出响应,实现自动化的安全防护。另一方面,自动化技术将在安全防护策略的部署和更新中发挥更大作用,减少人工干预,提高防护效率和及时性。同时,随着区块链技术的逐渐成熟,其在分布式爬虫安全领域的应用也值得期待,或许可以利用区块链的去中心化、不可篡改等特性,进一步增强数据的安全性和完整性,为分布式爬虫的安全防护开辟新的路径。
相关文章:
【Python爬虫(44)】分布式爬虫:筑牢安全防线,守护数据之旅
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...

微信小程序:多菜单栏设计效果
一、实现效果 二、代码 wxml 编辑前端界面,步骤 菜单逻辑: 逐步取出数组中的项,首先取出顶部菜单项,然后选中后取出选中的底部数据(左侧菜单+右侧内容),然后点击左侧菜单取出选中的左侧菜单对应的右侧内容 ①这里我的数据是全部封装到一个数组对象的,首先我的循环…...

海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
1.首先说了一下为什么要用ISUP协议来取流 ISUP主要就是用来解决摄像头没有公网ip的情况,如果摄像头或者所在局域网的路由器有公网ip的话,其实采用rtsp直接取流是最方便也是性能最好的,但是项目的摄像头没有公网IP所以被迫使用ISUP,ISUP是海康…...
蓝桥杯之阶段考核
📖 Day 7:阶段考核 - 蓝桥杯官方模拟赛(限时 4 小时) 📖 一、如何高效完成模拟赛? 模拟赛是一种接近真实竞赛的训练方式。要高效完成模拟赛,需要掌握以下策略: 1. 赛前准备 ✅ 环…...
Python爬虫基础重要数据类型
重要数据类型 列表数据类型 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。且列表是Python中最基本也是最常用的数据结构之一。什么是数据结构呢?通俗来讲&a…...

乐享数科:供应链金融—三个不同阶段的融资模式
供应链金融是与产业链紧密结合的融资模式,它主要体现在订单采购、存货保管、销售回款这三个不同的业务阶段,并针对这些阶段提供了相应的金融服务。以下是这三个阶段中主要的融资模式及其特点: 供应链金融融资模式主要分为以下几种࿱…...

【AI】openEuler 22.03 LTS SP4安装 docker NVIDIA Container Toolkit
NVIDIA Container Toolkit 打开网址 Unsupported distribution or misconfigured repository settings | NVIDIA Container Toolkit 为方便离线安装,先下载过来 wget https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo mk…...
【2025全网首发B站教程】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测!
【2025全站首发】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测! 文章目录 1. 数据集准备1.1 标签格式转换1.2 数据集划分1.3 yaml配置文件创建 2. 训练验证 1. 数据集准备 示例数据集下载链接:P…...
设计模式教程:中介者模式(Mediator Pattern)
中介者模式是一种行为型设计模式,它用于减少对象之间的直接依赖关系。通过引入一个中介者对象,所有对象的交互都通过中介者进行,而不是直接相互通信。这种模式的主要目的是减少对象之间的耦合,提升系统的灵活性和可维护性。 1. 定…...
编写dockercompose脚本,管理redis,activemq,mysql5.7
编写dockercompose脚本,管理redis,activemq,mysql5.7,mysql的root密码设置Duke2007,redis密码设置duke0591 Docker Compose 多服务编排脚本(安全增强版) yaml 复制 services: # # MySQL 5.7 服务配置 #…...
【编程语言】委托与函数指针
委托与函数指针的相似之处: 指向方法:C# 的委托和 C 的函数指针都可以用来指向一个方法或函数。调用方法:它们都可以通过引用(委托或函数指针)来调用指向的方法。 委托与函数指针的主要区别: 类型安全&am…...

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)
第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…...

数字后端实现之Innovus中open net原因解析及解决方案
数字IC后端设计实现Innovus中我们经常会碰到如下的WARNING警告信息。这个log是在route或ECO Route阶段报的。这个WARNING必须要看,因为这里是报告当前设计存在open的net,即某些pin只有逻辑连接,而没有实际的物理连接。 这里正常工具应该报ERR…...
MATLAB基础学习相关知识
MATLAB安装参考:抖音-记录美好生活 MATLAB基础知识学习参考:【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分:变量定义和基本运算 生成矩阵: % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…...

Mac系统下使用Docker快速部署MaxKB:打造本地知识库问答系统
随着大语言模型的广泛应用,知识库问答系统逐渐成为提升工作效率和个人学习的有力工具。MaxKB是一款基于LLM(Large Language Model)大语言模型的知识库问答系统,支持多模型对接、文档上传和自动爬取等功能。本文将详细介绍如何在Ma…...

RT-Thread+STM32L475VET6——icm20608传感器
文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行配置1.1 使用外部高速时钟,并修改时钟树1.2 打开I2C3,参数默认即可(I2C根据自己需求调整)1.3 打开串口1.4 生成工程 2. 添加icm20608软件包3. 使能传感器,打开动态链接库4.…...

【信息系统项目管理师-案例真题】2022下半年案例分析答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一(24分)【问题1】(6分)【问题2】(10分)【问题3】(8分)试题二(26分)【问题1】(8分)【问题2】(8分)【问题3】(4分)【问题4】(6分)试题三(25分)【问题1】(12分)【问题2】(7分)【问题…...
3D机器视觉工业3D图像格式常见的格式
工业3D图像格式主要用于存储和交换三维模型数据,常见的格式包括: STL (Stereolithography) 用途: 3D打印和快速成型。 特点: 存储三角面片信息,文件较小,但不包含颜色和材质数据。STEP (Standard for the Exchange of Product Data) 用途: CAD数据交换。 特点: 支持几何、拓…...

SkyWalking集成Kafka实现日志异步采集经验总结
SkyWalking日志异步采集架构 【重点知识】 1、【Agent】kafka-reporter-plugin-x.x.x.jar包放plugins目录后必走kafka(kafka没有正确配置就会报错) 2、【Agent】异步如不开启数据压缩,日志数据较大,pod多、业务大时容易造成网络…...
Java知识点——IO流
目录 一、IO流基础概念 二、常见的IO流类 三、字符流 1.字符输入流(Reader)与字符输出流(Writer) 2.常用实现类 3.实例 四、字节流 1.字节输入流(InputStream)与字节输出流(OutputStrea…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...