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

【Kubernets】K8S内部nginx访问Service资源原理说明

文章目录

    • 原理概述
      • **一、核心概念**
      • **二、Nginx 访问 Service 的流程**
        • **1. Service 的作用**
        • **2. Endpoint 的作用**
        • **3. Nginx Pod 发起请求**
          • **(1) DNS 解析**
          • **(2) 流量到达 kube-proxy**
          • **(3) 后端 Pod 处理请求**
      • **三、不同代理模式的工作原理**
        • **1. iptables 模式**
        • **2. ipvs 模式**
      • **四、Nginx Ingress Controller 的特殊场景**
      • **五、示例**
          • **YAML 示例**
          • **访问流程**
      • **六、总结**
    • 配置说明
      • **1. 网络通信基础**
      • **2. 配置文件中的坑**
      • **3. 健康检查与超时设置**
      • **4. 环境变量与配置注入**
      • **5. 安全性问题**
      • **6. 性能优化**
      • **7. 日志与监控**
      • **8. 常见问题排查**

原理概述

在 Kubernetes 集群中,Nginx 作为 Ingress Controller 或普通 Pod 访问 Service 的过程涉及多个组件和网络机制。以下是详细的访问原理说明:

一、核心概念

  1. Pod:运行应用程序的基本单元。
  2. Service:提供稳定的虚拟 IP(ClusterIP)和负载均衡功能,用于访问一组 Pod。
  3. Endpoint:Service 对应的后端 Pod 列表。
  4. kube-proxy:负责实现 Service 的网络规则,支持三种代理模式:
    • Userspace(已废弃)
    • iptables
    • ipvs
  5. Ingress:定义外部访问集群内服务的规则,通常由 Ingress Controller(如 Nginx Ingress Controller)实现。

二、Nginx 访问 Service 的流程

假设我们有一个 Nginx Pod 想要访问一个名为 my-service 的 Service,以下是详细流程:

1. Service 的作用
  • 当创建一个 Service 时,Kubernetes 会为其分配一个稳定的虚拟 IP(ClusterIP)。
  • kube-proxy 根据 Service 的定义,在节点上设置 iptables 或 ipvs 规则,将流量转发到后端 Pod。
2. Endpoint 的作用
  • Kubernetes API Server 动态维护 Service 和 Pod 的映射关系,生成 Endpoint 资源。
  • Endpoint 包含了所有健康状态的 Pod 的 IP 和端口信息。
3. Nginx Pod 发起请求

当 Nginx Pod 向 my-service 发起请求时,具体流程如下:

(1) DNS 解析
  • Nginx Pod 使用 CoreDNS(Kubernetes 默认的 DNS 服务)解析 my-service 的域名。
  • CoreDNS 返回 my-service 的 ClusterIP 地址。
(2) 流量到达 kube-proxy
  • Nginx Pod 将请求发送到 my-service 的 ClusterIP。
  • kube-proxy 根据 iptables 或 ipvs 规则,将流量负载均衡到后端 Pod。
(3) 后端 Pod 处理请求
  • 流量最终被转发到某个健康状态的 Pod,Pod 处理请求并返回响应。

三、不同代理模式的工作原理

1. iptables 模式
  • kube-proxy 在每个节点上设置 iptables 规则,将流量从 ClusterIP 转发到后端 Pod。
  • 优点:性能较高,适用于大多数场景。
  • 缺点:规则复杂度随 Service 数量增加而增长。
2. ipvs 模式
  • ipvs 是基于 netfilter 的更高效的负载均衡解决方案。
  • kube-proxy 使用 ipvs 模式时,通过调用 ipvs 内核模块实现负载均衡。
  • 优点:更高的性能和更好的扩展性。
  • 缺点:需要内核支持 ipvs。

四、Nginx Ingress Controller 的特殊场景

如果 Nginx 是作为 Ingress Controller 运行,则其访问 Service 的流程略有不同:

  1. Ingress 资源定义

    • 用户通过 Ingress 资源定义外部访问规则,例如 /api 路径映射到 my-service
  2. Nginx 配置同步

    • Nginx Ingress Controller 监听 Kubernetes API,动态更新自身的配置文件。
    • 配置文件中包含将外部请求转发到指定 Service 的规则。
  3. 外部流量进入集群

    • 外部客户端通过 LoadBalancer 或 NodePort 访问 Nginx Ingress Controller。
    • Nginx 根据 Ingress 规则将流量转发到目标 Service。
  4. Service 转发到 Pod

    • 流量经过 Service 的 ClusterIP,最终被转发到后端 Pod。

五、示例

假设我们有以下资源:

  • 一个 Nginx Pod(作为普通 Pod)。
  • 一个 Service 名为 my-service,类型为 ClusterIP。
  • 两个后端 Pod 提供服务。
YAML 示例
# my-service.yaml
apiVersion: v1
kind: Service
metadata:name: my-service
spec:selector:app: my-appports:- protocol: TCPport: 80targetPort: 8080
访问流程
  1. Nginx Pod 发起请求:curl http://my-service.
  2. CoreDNS 解析 my-service 为 ClusterIP(例如 10.96.0.1)。
  3. 流量到达 kube-proxy,根据 iptables 或 ipvs 规则,转发到后端 Pod(例如 10.244.1.5:8080)。
  4. 后端 Pod 处理请求并返回响应。

六、总结

Kubernetes 中 Nginx 访问 Service 的原理可以概括为以下几个步骤:

  1. DNS 解析:通过 CoreDNS 将 Service 名称解析为 ClusterIP。
  2. 流量转发:kube-proxy 根据 iptables 或 ipvs 规则,将流量负载均衡到后端 Pod。
  3. Pod 处理:后端 Pod 接收并处理请求。

对于 Nginx Ingress Controller 场景,还需要额外考虑 Ingress 资源的定义和 Nginx 配置的动态更新。
理解这些原理有助于更好地设计和调试 Kubernetes 网络架构。

配置说明

在 Kubernetes 集群中,使用 Nginx 访问 Service(svc)时需要注意以下几点,并避免可能存在的问题和陷阱:

1. 网络通信基础

  • ClusterIP 和 DNS 解析

    • 在 Kubernetes 中,Service 通过 ClusterIP 提供集群内部的网络访问。Nginx 如果需要访问某个 Service,通常会通过其 DNS 名称(如 service-name.namespace.svc.cluster.local)来解析。
    • 确保 Nginx 的配置文件中正确引用了 Service 的 DNS 名称,而不是硬编码 IP 地址,因为 ClusterIP 是动态分配的。
  • Namespace 区分

    • 如果 Nginx 和目标 Service 不在同一个 Namespace 下,记得指定完整的 DNS 名称(如 service-name.other-namespace.svc.cluster.local),否则可能会导致解析失败。

2. 配置文件中的坑

  • 反向代理配置

    • 如果 Nginx 作为反向代理访问 Service,确保 proxy_pass 或类似的指令中正确指定了目标地址。
    • 示例:
      location / {proxy_pass http://service-name.namespace.svc.cluster.local;
      }
      
  • 路径匹配问题

    • 注意路径匹配规则是否正确。例如,如果目标 Service 的 API 路径为 /api/v1,而 Nginx 配置错误地将所有请求转发到根路径 /,可能导致请求被错误处理。
  • 负载均衡行为

    • 默认情况下,Kubernetes Service 使用的是轮询负载均衡策略。如果 Nginx 需要更复杂的负载均衡逻辑(如一致性哈希),可以通过配置 upstream 来实现:
      upstream backend {hash $request_uri consistent;server service-name.namespace.svc.cluster.local;
      }server {location / {proxy_pass http://backend;}
      }
      

3. 健康检查与超时设置

  • 健康检查

    • 如果目标 Service 的 Pod 存在健康检查失败的情况,Kubernetes 可能会将流量路由到不健康的 Pod。确保目标 Pod 的健康检查配置合理,并且 Nginx 的超时时间与后端服务的响应时间相匹配。
  • 超时设置

    • Nginx 默认的超时时间可能不足以满足某些后端服务的需求。可以通过以下参数调整超时时间:
      proxy_connect_timeout 60s;
      proxy_read_timeout 60s;
      proxy_send_timeout 60s;
      

4. 环境变量与配置注入

  • 环境变量注入

    • 如果 Nginx 配置依赖于环境变量(如目标 Service 的地址或端口),可以通过 Kubernetes 的 ConfigMap 或 Secret 动态注入这些变量。
    • 示例:
      env:- name: SERVICE_HOSTvalueFrom:configMapKeyRef:name: nginx-configkey: service-host
      
  • 动态更新配置

    • 如果 Service 的 ClusterIP 或端口发生变化,Nginx 配置可能需要重新加载。可以通过工具如 configmap-reload 自动检测并热更新 Nginx 配置。

5. 安全性问题

  • TLS/SSL 配置

    • 如果目标 Service 支持 HTTPS,确保 Nginx 正确配置了 TLS/SSL 证书,并启用了双向认证(mTLS)以提高安全性。
    • 示例:
      location / {proxy_pass https://service-name.namespace.svc.cluster.local;proxy_ssl_verify on;proxy_ssl_trusted_certificate /path/to/ca.crt;
      }
      
  • RBAC 权限

    • 如果 Nginx 运行在 Kubernetes 中,确保其 Pod 具有适当的 RBAC 权限,能够访问目标 Service。

6. 性能优化

  • 连接复用

    • 启用 HTTP keep-alive 以减少每次请求的 TCP 连接开销:
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      
  • 缓存策略

    • 对于静态资源或频繁访问的内容,可以启用 Nginx 的缓存功能以减轻后端 Service 的压力。

7. 日志与监控

  • 日志记录

    • 配置详细的访问日志,便于排查问题:
      log_format custom_log '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent"';access_log /var/log/nginx/access.log custom_log;
      
  • 监控指标

    • 使用 Prometheus 和 Grafana 监控 Nginx 和后端 Service 的性能指标,及时发现潜在问题。

8. 常见问题排查

  • DNS 解析失败

    • 检查 Nginx Pod 是否能够解析目标 Service 的 DNS 名称:
      nslookup service-name.namespace.svc.cluster.local
      
  • 网络不通

    • 确保 Nginx Pod 和目标 Service 处于同一网络平面(通常是默认的 CNI 网络)。如果使用了自定义网络插件,检查网络配置是否正确。
  • 防火墙规则

    • 如果集群中有防火墙规则限制了特定端口的流量,可能会导致访问失败。
  • Pod 状态异常

    • 确保目标 Service 的 Pod 正常运行,没有 CrashLoopBackOff 或其他异常状态。

通过以上注意事项和优化建议,可以有效避免 Nginx 访问 Kubernetes Service 时可能出现的问题,同时提升系统的稳定性和性能。

相关文章:

【Kubernets】K8S内部nginx访问Service资源原理说明

文章目录 原理概述**一、核心概念****二、Nginx 访问 Service 的流程****1. Service 的作用****2. Endpoint 的作用****3. Nginx Pod 发起请求****(1) DNS 解析****(2) 流量到达 kube-proxy****(3) 后端 Pod 处理请求** **三、不同代理模式的工作原理****1. iptables 模式****2…...

Markdown HTML 图像语法

插入图片 Markdown ![图片描述](图片链接)一般来说,直接复制粘贴过来就行了,部分网页/应用可以拖拽,没人会真敲图片的链接吧…… 示例图片: ![Creeper?](https://i-blog.csdnimg.cn/direct/f5031c8c4f15421c9882d7eb23540b8…...

2503,D比C更易重构

我发现C程序很少超越其初始设计.问题是,很难重构C程序.如 struct S { int a; }; struct S s; s.a 3; struct S *p; p->a 3;即.用来直接访问,->用来间接访问.假设想把按值传递S改为按指针传递S.现在你必须更新每个使用,而不仅是声明. 这是它在D中的工作方式: struct …...

Scala 中 val 和对象内部状态的关系

在 Scala 中,val 用于声明不可变的变量,这意味着一旦 val 被赋值,它的引用(即指向的内存地址)就不能再改变。然而,这并不影响对象内部的状态(即对象的属性)是否可以改变。具体来说&a…...

疫情管理系统设计与实现(代码+数据库+LW)

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本疫情管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…...

记Android12上一个原生bug引起的system_server crash

一. 现象描述 近日测试上报一个几乎必现的crash,描述如下: 现象: launcher编辑状态与锁屏解锁交互时系统概率性重启 操作步骤: 进入launcher组件编辑状态按电源键灭屏后亮屏,锁屏界面上滑解锁launcher编辑状态向右或向左滑动重复1,2&#x…...

代码随想录算法训练营第六天|Leetcode454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

15. 三数之和 建议:本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下 双指针法的思路,文章中讲解的,没问题 哈希法很麻烦。 题目链接/文章讲…...

大数据环境(单机版) Flume传输数据到Kafka

文章目录 前言一、准备二、安装三、配置环境变量四、修改配置4.1、kafka配置4.2、Flume配置 五、启动程序5.1、启动zk5.2、启动kafka5.3、启动flume 六、测试6.1、启动一个kafka终端,用来消费消息6.2、写入日志 其他 前言 flume监控指定目录,传输数据到…...

计算机毕业设计SpringBoot+Vue.js高校教师科研管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

C++课程设计【宿舍管理查询软件】

宿舍管理查询软件 一、题目描述二、源码以及说明宿舍管理查询软件设计与实现1. 系统设计思路1.1 功能需求1.2 数据结构2. 系统实现3. 代码说明3.1 数据结构3.2 功能实现3.3 文件存储4. 示例运行输入输出5. 总结其他QT文章推荐一、题目描述 (一)问题描述 为宿舍管理人员编写一…...

数据挖掘校招面经一

写在前面:其实数据挖掘、风控、机器学习算法与搜广推的八股还是有重合的部分,毕竟都是面对结构化数据。特别是我自己是做竞赛的,平时LGBM、CatBoost用的挺多的,所以感觉这些八股还是有必要看看,建议大家也可以看一下。…...

迷你世界脚本对象库接口:ObjectLib

对象库接口:ObjectLib 迷你世界 更新时间: 2023-04-26 20:21:09 具体函数名及描述如下: 序号 函数名 函数描述 1 getAreaData(...) 获取区域数据 2 getPositionData(...) 获取位置数据 3 getLivingData(...) 获取生物数据 4 getItemDat…...

VSCode知名主题带毒 安装量900万次

目前微软已经从 Visual Studio Marketplace 中删除非常流行的主题扩展 Material Theme Free 和 Material Theme Icons,微软称这些主题扩展包含恶意代码。 统计显示这些扩展程序的安装总次数近 900 万次,在微软实施删除后现在已安装这些扩展的开发者也会…...

C#—csv文件格式操作实例【在winform表格中操作csv】

C#—csv文件格式操作实例【在winform表格中操作csv】 实例一 实例效果 当在winform界面中点击读取按钮时 将csv中的所有数据读取出来放置在datagridview控件,可以在datagridview控件中编辑数据,当点击保存按钮时 将datagridview控件中的所有数据存储在…...

Redis设计与实现-数据结构

Redis数据结构 1、RedisObject对象2、简单动态字符串2.1 SDS定义2.2 SDS与C语言的区别2.3 SDS的空间分配策略2.3.1 空间预分配2.3.2 惰性空间释放 2.4 SDS的API 3、链表3.1 链表的定义3.2 链表的API 4、字典4.1 字典的定义4.2 哈希算法4.3 哈希表的扩缩4.3.1 哈希表扩缩的判断依…...

Ubuntu20.04双系统安装及软件安装(四):国内版火狐浏览器

Ubuntu20.04双系统安装及软件安装(四):国内版火狐浏览器 Ubuntu系统会自带火狐浏览器,但该浏览器不是国内版的,如果平常有记录书签、浏览记录、并且经常使用浏览器插件的习惯,建议重装火狐浏览器为国内版的…...

C语言100天练习题【记录本】

C语言经典100题(手把手 编程) 可以在哔哩哔哩找到 已解决的天数:一,二,五,六 下面的都是模模糊糊的 可以学学这些算法,我是算法白痴,但是我不是白痴,可以学&#xff…...

基于CURL命令封装的JAVA通用HTTP工具

文章目录 一、简要概述二、封装过程1. 引入依赖2. 定义脚本执行类 三、单元测试四、其他资源 一、简要概述 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具&…...

SQL刷题:自连接(Self-Join)--通过将 同一张表连接两次,比较不同行之间的数据关系

例题: 表:Employee ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | | salary | int | | managerId | int | ---------------------- id 是该表的主键…...

避坑!用Docker搞定PHP开发环境搭建(Mac、Docker、Nginx、PHP-FPM、XDebug、PHPStorm、VSCode)

本次更新主要是对环境版本进行了更新,例如php 7.3.7升级到了7.3.8,另外之前的版本有同学踩了坑,主要是官方docker镜像php:7.3.7-fpm和php:7.3.8-fpm使用了不同版本的debian,后面会提到,请各位同学留意。 因为最近换电脑…...

第七节:基于Winform框架的串口助手小项目---协议解析《C#编程》

介绍 文章上所说的串口助手,工程文件资源-CSDN文库 目标 代码实现 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e){if (isRxShow false) return;// 1,需要读取有效的数据 BytesToReadbyte[] dataTemp new byte[serialPor…...

pt-archiver删除数据库的数据表/各种报错类型

这篇帖子是前面文的一部分延申 mysqlimport导入一亿数据的csv文件/一行命令删除表-CSDN博客 如需转载,标记出处 目录 pt-archiver命令格式 如果执行后出现下面报错 1)Cannot find an ascendable index in table at /usr/bin/pt-archiver line 3233. …...

STM32Cubemx配置E22-xxxT22D lora模块实现定点传输

文章目录 一、STM32Cubemx配置二、定点传输**什么是定点传输?****定点传输的特点****定点传输的工作方式****E22 模块定点传输配置****如何启用定点传输?****示例** **应用场景****总结** **配置 1:C0 00 07 00 02 04 62 00 17 40****解析** …...

模块和端口

1、模块 模块内部的5个组成是:变量声明 数据流语句 低层模块实例 函数和任务 行为语句 SR锁存器 timescale 1ns / 1psmodule SR_latch(input wire Sbar ,input wire Rbar ,output wire Q ,output wire Qbar);nand…...

Android+SpringBoot的老年人健康饮食小程序平台

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 我将从经济、生活节奏、技术融合等方面入手,详细阐述居家养老管理模式兴起的…...

[machine learning] MACS、MACs、FLOPS、FLOPs

本文介绍机器学习中衡量一个模型计算复杂度的四个指标:MACS、MACs、FLOPS、FLOPs。 首先从含义上讲,可以分类两类:MACS/FLOPS和MACs/FLOPs。MACs/FLOPs表示总的操作数(后缀s可以看成是表示复数),MACS/FLOPS表示每秒可以执行的操作…...

PostgreSQL10 物理流复制实战:构建高可用数据库架构!

背景 PostgreSQL 10 在高可用架构中提供了物理复制,也称为流复制(Streaming Replication),用于实现实例级别的数据同步。PostgreSQL 复制机制主要包括物理复制和逻辑复制:物理复制依赖 WAL 日志进行物理块级别的同步&…...

STM32---FreeRTOS中断管理试验

一、实验 实验目的:学会使用FreeRTOS的中断管理 创建两个定时器,一个优先级为4,另一个优先级为6;注意:系统所管理的优先级范围 :5~15 现象:两个定时器每1s,打印一段字符串&#x…...

Linux常见操作命令(1)

(一)常用命令: 1.Tab 键可以实现自动补齐和提示,要合理使用 2.方向键(上下)来切换前后执行过的命令 (二)查看命令 一共有三个:ls, cd , pwd 。 1.ls:列出目录内容,包括参数-l(详细…...

SPI驱动(二) -- SPI驱动程序模型

文章目录 参考资料:一、SPI驱动重要数据结构1.1 SPI控制器数据结构1.2 SPI设备数据结构1.3 SPI驱动数据结构 二、SPI 驱动框架2.1 SPI控制器驱动程序2.2 SPI设备驱动程序 三、总结 参考资料: 内核头文件:include\linux\spi\spi.h 一、SPI驱…...

Qt中txt文件输出为PDF格式

main.cpp PdfReportGenerator pdfReportGenerator;// 加载中文字体if (QFontDatabase::addApplicationFont(":/new/prefix1/simsun.ttf") -1) {QMessageBox::warning(nullptr, "警告", "无法加载中文字体");}// 解析日志文件QVector<LogEntr…...

SpringBoot 校园新闻网站

收藏关注不迷路&#xff01;&#xff01; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多…...

JAVA面经2

ConcurrentHashMap 并发程序出现问题的根本原因 线程池 线程池的执行原理&#xff08;核心参数&#xff09; 线程池的常见阻塞队列 ArrayBlockingQueue插入和删除数据&#xff0c;只采用了一个lock&#xff0c;而LinkedBlockingQueue则是在插入和删除分别采用了putLock和takeL…...

NVIDIA(英伟达) GPU 芯片架构发展史

GPU 性能的关键参数 CUDA 核心数量&#xff08;个&#xff09;&#xff1a;决定了 GPU 并行处理能力&#xff0c;在 AI 等并行计算类业务下&#xff0c;CUDA 核心越多性能越好。 显存容量&#xff08;GB&#xff09;&#xff1a;决定了 GPU 加载数据量的大小&#xff0c;在 AI…...

C++设计一:日期类Date实现

一、引言与概述 1 引言 日期操作是软件开发中的常见需求&#xff0c;如日程管理、数据统计等场景均需处理日期的比较、偏移及合法性校验。为简化此类操作&#xff0c;本文设计了一个高效且类型安全的C日期类Date。 该类通过构造函数内嵌合法性检查&#xff0c;确保对象初始状…...

关于2023新版PyCharm的使用

考虑到大家AI编程的需要&#xff0c;建议大家安装新版Python解释器和新版PyCharm&#xff0c;下载地址都可以官网进行&#xff1a; Python&#xff1a;Download Python | Python.org&#xff08;可以根据需要自行选择&#xff0c;建议选择3.11&#xff0c;保持交流版本一致&am…...

【Azure 架构师学习笔记】- Azure Databricks (15) --Delta Lake 和Data Lake

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (14) – 搭建Medallion Architecture part 2 前言 ADB 除了UC 这个概念之外&#xff0c;前面【Azure 架构师学习笔记】- Azure Databricks (1…...

一文了解Conda使用

一、Conda库频道 conda的软件频道是存储软件包的远程位置&#xff0c;当在Conda中安装软件包时&#xff0c;它会从指定的频道中下载和提取软件包。频道包含了各种软件包&#xff0c;不同的频道可能提供不同版本的软件包&#xff0c;用户可以根据需要选择适合的版本。 常见 Co…...

SP导入智能材质球

智能材质球路径 ...\Adobe Substance 3D Painter\resources\starter_assets\smart-materials 放入之后就会自动刷新...

记录一次Spring事务失效导致的生产问题

一、背景介绍 公司做的是“聚合支付”业务&#xff0c;对接了微信、和包、数字人民币等等多家支付机构&#xff0c;我们提供统一的支付、退款、自动扣款签约、解约等能力给全国的省公司、机构、商户等。 同时&#xff0c;需要做对账功能&#xff0c;即支付机构将对账文件给到…...

腾讯云物联网平台(IoT Explorer)设备端使用

1、直接看图流程 2、跑起来demo,修改产品id,设备名称,设备秘钥。 3、连接部分 4、修改默认地址和端口 sdk里面的地址默认是带着产品ID拼接的,咱们现在中铁没有泛域名解析,要改下这里。把+productID都去掉,然后地址里的.也去掉。...

ML.NET库学习023: ONNX Runtime 中 C++ 辅助函数解析:Span 类与张量操作

文章目录 ML.NET库学习023&#xff1a; ONNX Runtime 中 C 辅助函数解析&#xff1a;Span 类与张量操作主题项目主要目的和原理项目概述实现的主要功能关键函数代码结构 主要功能与步骤Span 类的实现张量大小计算数据加载与处理准确性评估 数据集的使用以下是逐步解释&#xff…...

利用opencv_python(pdf2image、poppler)将pdf每页转为图片

1、安装依赖pdf2image pip install pdf2image 运行.py报错&#xff0c;因为缺少了poppler支持。 2、安装pdf2image的依赖poppler 以上命令直接报错。 改为手工下载&#xff1a; github: Releases oschwartz10612/poppler-windows GitHub 百度网盘&#xff1a; 百度网盘…...

告别GitHub连不上!一分钟快速访问方案

一、当GitHub抽风时&#xff0c;你是否也这样崩溃过&#xff1f; &#x1f621; npm install卡在node-sass半小时不动&#x1f62d; git clone到90%突然fatal: early EOF&#x1f92c; 改了半天hosts文件&#xff0c;第二天又失效了... 根本原因&#xff1a;传统代理需要复杂…...

‌学习DeepSeek V3 与 R1 核心区别(按功能维度分类)

‌一、定位与架构‌ ‌V3&#xff08;通用型模型&#xff09;‌ 定位&#xff1a;多模态通用大模型&#xff0c;擅长文本生成、多语言翻译、智能客服等多样化任务‌12。架构&#xff1a;混合专家&#xff08;MoE&#xff09;架构&#xff0c;总参数 ‌6710 亿‌&#xff0c;每次…...

Linux总结

1 用户与用户组管理 1.1 用户与用户组 //linux用户和用户组 Linux系统是一个多用户多任务的分时操作系统 使用系统资源的用户需要账号进入系统 账号是用户在系统上的标识&#xff0c;系统根据该标识分配不同的权限和资源 一个账号包含用户和用户组 //用户分类 超级管理员 UID…...

web高可用集群项目(数据库主从同步、文件共享存储、nginx动静分离+负载均衡+高可用)

一、项目环境 二、环境准备 主机名IP地址备注openEuler-1192.168.121.11主负载调度器openEuler-2192.168.121.12副负载调度器openEuler-3192.168.121.13web-1&#xff08;静态&#xff09;openEuler-4192.168.121.14web-2&#xff08;静态&#xff09;openEuler-5192.168.121.…...

如何快速上手RabbitMQ 笔记250304

如何快速上手RabbitMQ 要快速上手 RabbitMQ&#xff0c;可以按照以下步骤进行&#xff0c;从安装到基本使用逐步掌握核心概念和操作&#xff1a; 1. 理解核心概念 Producer&#xff08;生产者&#xff09;&#xff1a;发送消息的程序。Consumer&#xff08;消费者&#xff09…...

PPT小黑第26套

对应大猫28 层次级别是错的&#xff0c;看着是十页&#xff0c;导入ppt之后四十多页 选中所有 红色蓝色黑色 文本选择标题&#xff1a;选择 -格式相似文本&#xff08;检查有没有漏选 漏选的话 按住ctrl 点下一个&#xff09; 要求新建幻灯片中不包含原素材中的任何格式&…...

甘特图开发代码(测试版)

场景&#xff1a;要实现的功能就是单行数据能左右拖动。 流程五个&#xff1a;ABCDE。&#xff08;对应&#xff1a;Charter开发、概念和计划、初样开发、正样开发、验证&#xff09; 1、A有开始时间&#xff0c;结束时间。B的开始时间必须是A的结束时间&#xff08;相等或者…...