当前位置: 首页 > news >正文

华为云环境下LVS/DR架构的故障诊断优化

本文作者:刘涛

文章目录

  • 前言
  • 1.LVS/DR集群的问题
  • 2.华为云环境
  • 3.问题排查
    • 3.1 检查LVS/DR模式配置
      • 3.1.1 RS服务器
      • 3.1.2 DS服务器
    • 3.2 继续分析抓包结果
      • 3.2.1 调整tcpdump抓包过滤条件
      • 3.2.2 client向集群VIP发包
      • 3.2.3 DS服务器arp消息
    • 3.3 查看丢包
      • 3.3.1 监控DS和RS服务器的收发包错误值
      • 3.3.2 查看网卡收发包错误
    • 3.4 Ping抓包
    • 3.5 client发包和DS发包比较
    • 3.6 分析总结
      • 3.6.1 由表中的二层链路可知:
      • 3.6.2 从表中涉及VIP地址可知:
  • 4.尝试LVS/TUN模式
    • 4.1 安装和配置tun模式
    • 4.2 抓包验证

前言

本文针对华为云环境的LVS/DR接收不到数据包的问题, 排查故障, 分析并验证云上二层网络的Ethernet数据包连通性; LVS/DR模式下, 基本确认ip伪装会被华为云物理网络丢弃。

1.LVS/DR集群的问题

问题:
华为云环境下部署LVS/DR后, 后端服务RS收不到数据包.

现象:

  1. client向集群VIP发包, RS服务器没有收到包; 同时tcpdump也没有抓到相应的包.
  2. client直接向RS发包, RS可以收到包.
  3. 在DS服务器上直接向RS发包, RS也可以收到包.

2.华为云环境

使用华为云作为LVS测试环境,四台服务器:

角色IPEIP功能
clientxxx.xxx.1.15xxx.xxx.25.28
DS:VIPxxx.xxx.1.60xxx.xxx.25.5
DS:DIPxxx.xxx.1.59xxx.xxx.25.196
RS1xxx.xxx.1.48xxx.xxx.25.181UDP程序
RS2xxx.xxx.1.98xxx.xxx.25.154UDP程序

其中:

  • DS:Director Server, 指的是前端负载均衡器节点;
  • RS:Real Server, 后端真实的工作服务器;
  • VIP:向外部直接面向用户请求, 作为用户请求的目标的IP地址;
  • DIP:Director Server IP, 主要用于和RS通讯的IP地址;
  • RIP:Real Server IP, 后端服务器RS的IP地址;
  • CIP:Client IP, 客户端的IP地址。

RS服务器上部署的是java udp程序。安装及配置前, DS和RS已经提前关闭防火墙, 以及iptables/selinux/firewalld等服务。

3.问题排查

3.1 检查LVS/DR模式配置

要点:

  1. 虚拟地址VIP配置在DS上;
  2. 虚拟地址VIP配置RS的lo网卡上;
  3. RS服务器上阻止arp应答。

3.1.1 RS服务器

在RS服务器上执行:

# sysctl -ar arp_ignore
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.ens33.arp_ignore = 0
net.ipv4.conf.lo.arp_ignore = 1# sysctl -ar arp_announce
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.ens33.arp_announce = 0
net.ipv4.conf.lo.arp_announce = 2# sysctl -ar rp_filter | grep 1
net.ipv4.conf.all.rp_filter = 1# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet xxx.xxx.1.60/32 brd xxx.xxx.1.60 scope global lo:0valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000inet xxx.xxx.1.48/24 brd xxx.xxx.1.255 scope global noprefixroute ens33valid_lft forever preferred_lft forever

RS1和RS2更新配置:

# echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
# sysctl -p# sysctl -ar rp_filter | grep 1
<无输出>

3.1.2 DS服务器

在DS服务器上执行:

# sysctl -ar rp_filter | grep 1
<无输出># ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000inet xxx.xxx.1.59/24 brd xxx.xxx.1.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet xxx.xxx.1.60/32 brd xxx.xxx.1.60 scope global ens33:0valid_lft forever preferred_lft forever
# LVS规则
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
UDP  xxx.xxx.1.60:52002 rr-> xxx.xxx.1.48:52002         Route   1      0          0-> xxx.xxx.1.98:52002         Route   1      0          0

配置无误

3.2 继续分析抓包结果

Ip地址 + Mac地址:

角色IPMAC地址功能
clientxxx.xxx.1.15fa:16:xx:xx:xx:8c
DS:VIPxxx.xxx.1.60fa:16:xx:xx:xx:8d
DS:DIPxxx.xxx.1.59fa:16:xx:xx:xx:8d
RS1xxx.xxx.1.48fa:16:xx:xx:xx:9audp程序
RS2xxx.xxx.1.98fa:16:xx:xx:xx:d3udp程序

3.2.1 调整tcpdump抓包过滤条件

DS机器上:

tcpdump ether src fa:16:xx:xx:xx:8c
改为:
tcpdump '(udp or arp or icmp)' -en -v -w ds.cap

RS机器上:

tcpdump ether src fa:16:xx:xx:xx:8d
改为:
tcpdump '(udp or arp or icmp)' -en -v -w rs.cap

3.2.2 client向集群VIP发包

DS上tcpdump抓包结果, 这是client向集群VIP发包时的记录:
在这里插入图片描述

Frame-351,mac地址xx:8c ------> xx:8d,即: 1.15 —> 1.59
下一个包:
Mac地址xx:8d ------> xx:9a, 即: 1.59 —> 1.48, 如下图:
在这里插入图片描述
上面两张图中, 标识码都是0x704d, 是同一个包; TTL先是64, 再到63, 过了一跳。表明lvs/DR生效了, 包的mac地址更改成了rs-1.48的, 包也发出了。

3.2.3 DS服务器arp消息

DS服务器上抓包, arp请求和应答:
在这里插入图片描述

1.48收到的arp请求:
在这里插入图片描述
说明DS(1.59/1.60) 到 RS(1.48/1.98) 在二层网络上是通的。

3.3 查看丢包

3.3.1 监控DS和RS服务器的收发包错误值

# udp收发包
watch -d netstat -su
# 链路层收发包
watch -d netstat -i
# 网卡收发包
watch -d ifconfig

没有发现异常信息!

3.3.2 查看网卡收发包错误

1.59网卡:

# ethtool -S ens33 | grep errorrx_errors: 0tx_errors: 0rx_length_errors: 0rx_over_errors: 0rx_crc_errors: 0rx_frame_errors: 0rx_missed_errors: 0tx_aborted_errors: 0tx_carrier_errors: 0tx_fifo_errors: 0tx_heartbeat_errors: 0tx_window_errors: 0rx_long_length_errors: 0rx_short_length_errors: 0rx_align_errors: 0rx_csum_offload_errors: 0
# ethtool -S ens33 | grep droptx_dropped: 0dropped_smbus: 0

1.48和1.98同样没有错误和丢包

3.4 Ping抓包

从DS上ping RS服务器, 查看通讯过程:
在这里插入图片描述

发出的icmp包, 源mac地址和ip地址对应DS服务器, 而目的mac地址和ip地址对应RS1服务器;
在这里插入图片描述
Ping reply包,源mac地址和ip地址对应RS1服务器,目的mac地址和ip地址对应DS服务器。

3.5 client发包和DS发包比较

  1. client发包链路: 1.15 —> 1.59/1.60 —> 1.98
  2. DS直接发包链路: 1.59/1.60 —> 1.98

Client发包, DS上收到的包: 1.15 —> 1.59
在这里插入图片描述

3.6 分析总结

汇总测试和抓包结果:

场景目的是否通过viprs1结果
ping1.59rs1服务器通、tcpdump有数据
arp1.59rs1服务器通、tcpdump有数据
nc发udp包1.151.60rs1收不到包、tcpdump无数据
1.601.60rs1收不到包、tcpdump有数据
1.591.60rs1收到包、tcpdump有数据
1.59rs1服务器rs1收到包、tcpdump有数据
1.60rs1服务器rs1收到包、tcpdump有数据

DS服务器到RS的ethernet数据包情况:

场景源ip目的ip源mac目的macrs结果
Pingds-iprs1-ipds-macrs1-mac通、tcpdump有数据
Arpds-iprs1-ipds-macrs1-mac通、tcpdump有数据
nc发udp包client-ipVIPds-macrs1-macrs收不到包、tcpdump无数据
VIPVIPds-macrs1-macrs收不到包、tcpdump有数据
ds-ipVIPds-macrs1-macrs收到包、tcpdump有数据
ds-iprs1-ipds-macrs1-macrs收到包、tcpdump有数据
VIPrs1-ipds-macrs1-macrs收到包、tcpdump有数据

3.6.1 由表中的二层链路可知:

  1. 从ds-mac到rs-mac, 大部分通, 少部分不通;
  2. arp和ping的结果, 表明DS和RS之间二层链路是通的;
  3. DS和RS上协议栈及网卡没有错误和丢包, 表明DS和RS上发包成功, 从二层链路可以接收到的数据包也都成功入栈。

3.6.2 从表中涉及VIP地址可知:

有问题的包都是涉及VIP的源地址或者目的地址:

  1. 源IP是VIP,目的IP也是VIP:

    RS可以收到包,因为VIP地址在RS上是loopback环回接口,从网卡上收到本身发出去的包,RS默认情况下会拒收,即会丢弃该数据包。

# RS修改内核参数
sysctl -w net.ipv4.conf.all.accept_local=1
# 或者
# echo "net.ipv4.conf.all.accept_local = 1" >> /etc/sysctl.conf
# sysctl -p
  1. 源IP是CIP,目的IP是VIP:

    RS收不到包, tcpdump抓不到包,而且DS/RS协议栈和网卡没有收发包错误和丢包;表明包成功发送出DS,但是没有到达RS,说明包在DS和RS之间丢失。

  2. 结论:
    考虑到华为云环境下, 网络是虚拟网络, 比如构建于vxLan之上的二层链路网络; DS和RS之间还有物理网络设备, 如: VTEP入口。
    考察云环境下的链路:

VTEP目的/源VTEP目的
client发包client-ip通过VIP
client发包client-mac通过ds-mac
DS转发client-ip拒绝VIP
DS转发ds-mac拒绝rs-mac

VTEP入口启用了rp_filter[功能是防止ip伪装和欺骗]。

4.尝试LVS/TUN模式

4.1 安装和配置tun模式

安装和配置tun模式, 并且在RS服务器上关闭rp_filter功能:

# echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
# sysctl -p

从client向集群VIP发包, RS上正常收到udp包。
考察云环境下的链路:

VTEP目的/源VTEP目的
client发包client-ip通过VIP
client发包client-mac通过ds-mac
DS转发ds-ip通过rs-ip、 内含ip包: client-ip —> VIP
DS转发ds-mac通过rs-mac、内含ip包: client-ip —> VIP

VTEP设备看到的数据包, 是ds-ip/ds-mac发送到rs-ip/rs-mac的, 符合rp_filter的验证。
RS服务器接收到数据包后, tunl0网卡及内核ipip模块解封数据包后, 内核协议栈看到的数据包是client-ip发送到VIP的, 而VIP是本地tunl0网卡的IP地址, 并且本地已经关闭rp-filter功能, 可以顺利通过内核ip路由的校验, 进入协议栈及应用层。

4.2 抓包验证

从101.43发包, 链路是:
101.43 —> 101.60/101.41 —> 101.42

在101.60/101.41上抓包, 收到的包:
Frame-53, 2d:d7 —> ce:54, 即101.43至101.60/101.41:
在这里插入图片描述
Frame-54, ce:54 —> 9f:4b, 即101.41至101.42:
在这里插入图片描述
可以看到这个Frame做了IP-over-IP. ip协议层上, ip地址和mac地址一一对应, 可以通过rp-filter检查。

至101.42, 内核IPIP模块解封后:
在这里插入图片描述

相关文章:

华为云环境下LVS/DR架构的故障诊断优化

本文作者&#xff1a;刘涛 文章目录 前言1.LVS/DR集群的问题2.华为云环境3.问题排查3.1 检查LVS/DR模式配置3.1.1 RS服务器3.1.2 DS服务器 3.2 继续分析抓包结果3.2.1 调整tcpdump抓包过滤条件3.2.2 client向集群VIP发包3.2.3 DS服务器arp消息 3.3 查看丢包3.3.1 监控DS和RS服…...

leetcode hot100除自身以外的数组的乘积

238. 除自身以外数组的乘积 已解答 中等 相关标签 相关企业 提示 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在…...

SQL server学习09-数据库编程(上)

目录 一&#xff0c;了解T-SQL语言 1&#xff0c;常量&#xff08;标量值&#xff09; 2&#xff0c;变量 1&#xff09;局部变量 2&#xff09;全局变量 二&#xff0c;内置函数 1&#xff0c;字符串函数 2&#xff0c;数学函数 3&#xff0c;日期时间函数 4&#x…...

什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap

在刚刚过去的 FlutterInProduction 活动里&#xff0c;Flutter 官方除了介绍「历史进程」和「用户案例」之外&#xff0c;也着重提及了未来相关的 roadmap &#xff0c;其中就有 3.27 里的 Swift Package Manager 、 Widget 实时预览 和 Dart 与 native 平台原生语言直接互操作…...

java全栈day19--Web后端实战(java操作数据库3)

一、MyBatis 1.1介绍 前提引入&#xff1a; controller(控制层)作用&#xff1a;接受请求&#xff0c;响应数据 service(业务层)作用&#xff1a;负责具体的逻辑处理 dao(持久层)作用&#xff1a;数据访问层 一般的访问流程&#xff1a;浏览器发起请求过来&#xff0c;先…...

【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页

本文内容来自YashanDB官网&#xff0c;原文内容请见 https://www.yashandb.com/newsinfo/7802958.html?templateId1718516 问题现象 Mybatis-Plus是Mybatis的增强工具&#xff0c;旨在简化开发者的CRUD操作&#xff0c;目前被广泛应用&#xff0c;Mybatis-Plus框架适配了多种…...

Ansible 批量管理华为 CE 交换机

注&#xff1a;本文为 “Ansible 管理华为 CE 交换机” 相关文章合辑。 使用 CloudEngine - Ansible 批量管理华为 CE 交换机 wsf535 IP 属地&#xff1a;贵州 2018.02.05 15:26:05 总体介绍 Ansible 是一个开源的自动化运维工具&#xff0c;AnsibleWorks 成立于 2012 年&a…...

基于自定义注解与 AOP 切面实现接口日志全面数据库存储

基于自定义注解与 AOP 切面实现接口日志全面数据库存储 一、引言 在当今复杂的软件系统开发与运维过程中&#xff0c;详细且精准地记录接口的各项信息对于系统性能监测、问题排查、安全审计以及业务分析都有着极为关键的意义。本文将深入讲解如何运用自定义注解与 AOP&#x…...

GraalVM完全指南:云原生时代下使用GraalVM将Spring Boot 3应用转换为高效Linux可执行文件

一、前言 在现代软件开发中,启动速度和资源利用率常常是衡量应用性能的关键指标。对于基于Spring Boot的应用来说,虽然它们易于开发和部署,但JVM的启动时间有时会成为一个瓶颈。本文介绍如何使用GraalVM将Spring Boot 3应用编译成原生Linux可执行文件,从而显著提高启动速度…...

单片机:实现驱动超声波(附带源码)

单片机实现驱动超声波模块 超声波模块&#xff08;如HC-SR04&#xff09;广泛应用于距离测量、避障系统、自动驾驶等嵌入式项目中。它能够通过发射超声波信号并接收反射波来计算物体的距离。本文将介绍如何使用单片机&#xff08;如51系列单片机&#xff09;驱动超声波模块&am…...

2025.01.15python商业数据分析top2

一、 导入项目 导入项目、准备项目数据 import pandas as pd# 文件路径为python文件位置下的相对路径dwxpd.read_excel("电蚊香套装市场近三年交易额.xlsx") fmfzpd.read_excel("防霉防蛀片市场近三年交易额.xlsx") msmcpd.read_excel("灭鼠杀虫剂市…...

信息系统项目管理-绩效考核

1.1.组织战略 组织的产品和服务战略的类型通常可以分为&#xff1a;技术密集型、&#xff08;&#xff09;、目标动态型。 A市场导向型 B成本导向型 C人力密集型 D产品导向型 答案B 在组织的四项基本能力中&#xff0c;建立战略性奖励措施&#xff0c;根据员工对组织的贡献&am…...

【Linux】数据呈现

一、数据的输入与输出 1、标准文件描述符 Linux系统会将每个对象都当做文件来处理&#xff0c;包括输入和输出。它用文件描述符来标识每个文件对象。 文件描述符是一个非负整数&#xff0c;唯一会标识的是会话中打开的文件。每个进程一次最多可以打开9个文件描述符。bash sh…...

oracle 加字段和字段注释 sql

在 Oracle 数据库中&#xff0c;你可以使用 ALTER TABLE 语句来添加字段&#xff0c;并使用 COMMENT ON COLUMN 语句来添加字段注释。以下是一个示例&#xff1a; 假设你有一个名为 employees 的表&#xff0c;你想要添加一个名为 email 的字段&#xff0c;并为其添加注释。 …...

计算机网络压缩版

计算机网络到现在零零散散也算过了三遍&#xff0c;一些协议大概了解&#xff0c;但总是模模糊糊的印象&#xff0c;现在把自己的整体认识总结一下&#xff0c;&#xff08;本来想去起名叫《看这一篇就够了》&#xff0c;但是发现网上好的文章太多了&#xff0c;还是看这篇吧&a…...

一文了解 gis 相关服务=》及前端地图服务相关总结

文章目录 概要OGC技术名词解释cesium 应用案例openlayers 中应用实例XYZ服务OSM服务WMS服务WMTS服务WFS服务 mapbox 应用实例矢量瓦片服务栅格瓦片服务WMS服务WFS服务 leaflet 中 地图服务实例加载OpenStreetMap瓦片图层加载自定义XYZ瓦片图层加载WMS服务图层加载WFS服务图层加…...

Brocade G610 配置

配置流程 zone创建–>cfg创建–>ip配置–>cfg启动并保存 查看端口信息 G610:admin> switchshow switchName: G610 switchType: 170.5 switchState: Online switchMode: Native switchRole: Principal switchDomain: 1 switchId: ff…...

DuetWebControl 开源项目常见问题解决方案

DuetWebControl 开源项目常见问题解决方案 DuetWebControl A completely new web interface for the Duet electronics [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/du/DuetWebControl 一、项目基础介绍 DuetWebControl 是一个为 RepRapFirmware 设计的完全响…...

亚信安全举办“判大势 悟思想 强实践”主题党日活动

为深入学习和贯彻党的二十届三中全会精神&#xff0c;近日&#xff0c;亚信安全举办了 “学习贯彻党的二十届三中全会精神——‘判大势 悟思想 强实践’党日活动”&#xff0c;并取得圆满成功。 本次活动特邀南京市委宣讲团成员、南京市委党校市情研究中心主任王辉龙教授出席。…...

Go怎么做性能优化工具篇之基准测试

一、什么是基准测试&#xff08;Benchmark&#xff09; 在 Go 中&#xff0c;基准测试是通过创建以 Benchmark 开头的函数&#xff0c;并接收一个 *testing.B 类型的参数来实现的。testing.B 提供了控制基准测试执行的接口&#xff0c;比如设置测试执行的次数、记录每次执行的…...

vue3国际化,主题切换

国际化 安装依赖 pnpm install i18n pnpm install vue-i18n main.js import { createApp } from vue import App from ./App.vue import { i18n } from /i18n/index; const app createApp(App) app.use(i18n); app.mount(#app) 根目录创建i18n文件夹&#xff0c;创建3个文件&…...

Linux Shell 脚本编程基础

打开kali&#xff0c;Xshell连接 一、 vim 1.sh 可利用 #! /bin/bash, #! /bin/dash ,#! bin/sh 这三种脚本解释器不论哪种&#xff0c;最终都是调用 dash 在1.sh内加入内容&#xff0c;尝试执行&#xff0c;./1.sh&#xff0c;但需要加权 或者&#xff0c;在不使用加权的情…...

vuex如何进行状态管理?

**Vuex&#xff1a;是实现组件全局状态&#xff08;数据&#xff09;管理的一种机制&#xff0c;可以方便的实现组件之间数据共享。** (1) 如果是Vue2的环境&#xff0c;不能使用vuex4的版本&#xff0c;所以我们需要安装vuex3以下的版本安装。 创建项目&#xff1a;vue crea…...

嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目

此项目是基于人脸识别的考勤系统开发&#xff0c;包括如下模块&#xff1a; 1、人脸识别考勤系统GUI界面设计&#xff0c;包括&#xff1a; &#xff08;1&#xff09;Qt环境(window环境/linux环境) &#xff1b; &#xff08;2&#xff09;Qt工程创建分析&#xff1b; &am…...

通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统

背景介绍 阿里云向量检索服务Milvus版&#xff08;简称阿里云Milvus&#xff09;是一款云上全托管服务&#xff0c;确保了了与开源Milvus的100%兼容性&#xff0c;并支持无缝迁移。在开源版本的基础上增强了可扩展性&#xff0c;能提供大规模 AI 向量数据的相似性检索服务。相…...

评估大语言模型在药物基因组学问答任务中的表现:PGxQA

​这篇文献主要介绍了一个名为PGxQA的资源&#xff0c;用于评估大语言模型&#xff08;LLM&#xff09;在药物基因组学问答任务中的表现。 研究背景 药物基因组学&#xff08;Pharmacogenomics, PGx&#xff09;是精准医学中最有前景的领域之一&#xff0c;通过基因指导的治疗…...

在本地和远程转储域控制器哈希

更多内网知识课前往无问社区查看http://www.wwlib.cn 无凭据 - ntdsutil 如果您没有凭据&#xff0c;但有权访问 DC&#xff0c;则可以使用 lolbin ntdsutil.exe转储 ntds.dit&#xff1a; powershell "ntdsutil.exe ac i ntds ifm create full c:\temp q q" 我们…...

基于SSM+Vue的心理咨询问诊系统+LW示例参考

1.项目介绍 项目角色&#xff1a;管理员、患者&#xff08;普通用户&#xff09;、医师项目模块&#xff1a;医生管理、患者管理、科室管理、咨询管理、预约管理、急救知识、患者病历等测试环境&#xff1a;idea2024、tomcat8.5、maven3、jdk8、nodeV14.16.1、mysql5.7技术栈&…...

基于TMS320X281X/F28335的DSP入门到精通01_如何开始DSP的学习与开发

本部分开始基于《手把手教你学DSP—基于TMS320X281X》&#xff0c;《手把手教你DSP基于MS320F28335 》、《TMS320X281x DSP原理及C程序开发》&#xff0c;另外结合B站视频进行DSP嵌入式的学习。 《手把手教你学DSP—基于TMS320X281X》介绍的相对更为基础和详细&#xff0c;《手…...

Java爬虫获取1688 item_search_img接口详细解析

概述 1688作为中国领先的B2B电商平台&#xff0c;提供了丰富的API接口供开发者获取商品信息。item_search_img接口允许通过图片搜索商品&#xff0c;这对于需要基于图片进行商品查找的应用场景非常有用。本文将详细介绍如何使用Java爬虫技术获取1688的item_search_img接口数据…...