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

RAG 还是 Lucene:私有化部署客服系统的 AI 知识库架构选型捶

在之前的文章中我们花了大量的篇幅从记录后端pod真实ip开始说起然后引入envoy再解决了各种各样的需求配置自动重载、流量劫持、sidecar自动注入到envoy的各种能力熔断、流控、分流、透明代理、可观测性等等已经可以支撑起一个完整的服务治理框架了而今天介绍的istio正是前面提到的这些所有功能的集大成者从本文开始我们将详细介绍istio并且与之前手搓的功能做一个详细的对比为大家以后选择服务治理的某个功能提供参考istio架构┌──────────────┐│ istiod │ ← 控制面│ (PilotCA) │└──────┬───────┘│ xDS (gRPC / TLS)│┌────────────┐ │ ┌────────────┐│ Envoy │?───┼───?│ Envoy │ ← 数据面│ (Sidecar) │ │ (Sidecar) │└─────▲──────┘ └─────▲──────┘│ iptables ││ │App Pod App Pod数据面就是之前一直在研究的envoy包括4/7代理、熔断、限流、可观测性等等envoy就是执行由控制面下发的配置控制面istiod主要的职责将配置下发到每一个envoy去。由于istio中配置以crd的形式成为了k8s的资源所以要不断的监听k8s apiserver将资源的变化翻译成envoy看得懂的配置并且下发到envoy去至于其余istio的资源我们后面详细介绍istio安装不说废话先把istio安装上去再说首先准备好k8s集群其次下载istio这一步有可能需要上网curl -L https://istio.io/downloadIstio | sh -cd istio-*sudo ln -s $PWD/istioctl /usr/local/bin/istioctl验证兼容性istioctl x precheck开始安装istioctl install --set profiledefault -y由于镜像仓库没法直接使用所以需要一些特殊的方法具体可以看这篇文章 快速拉取docker镜像需要的镜像有docker.io/istio/pilot:1.28.2docker.io/istio/proxyv2:1.28.2安装完成? kubectl -n istio-system get podNAME READY STATUS RESTARTS AGEistio-ingressgateway-865c448856-qs8s2 1/1 Running 0 8sistiod-86c75775bb-j7qbg 1/1 Running 0 12s安装完成要从哪儿开始呢istio的自动注入kubectl label namespace default istio-injectionenabled同之前envoy一样给namespace打上标签之后重启服务即可kubectl rollout restart deploy nginx-test重启之后sidecar已经注入进去了我们来观察一下istio注入到底做了什么事情先describe看看eventsEvents:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 8s default-scheduler Successfully assigned default/nginx-test-6f855b9bb9-9phsv to wilsonNormal Pulled 8s kubelet Container image docker.io/istio/proxyv2:1.28.2 already present on machineNormal Created 8s kubelet Created container: istio-initNormal Started 8s kubelet Started container istio-initNormal Pulled 8s kubelet Container image docker.io/istio/proxyv2:1.28.2 already present on machineNormal Created 8s kubelet Created container: istio-proxyNormal Started 8s kubelet Started container istio-proxyNormal Pulled 6s kubelet Container image registry.cn-beijing.aliyuncs.com/wilsonchai/nginx:latest already present on machineNormal Created 6s kubelet Created container: nginx-testNormal Started 5s kubelet Started container nginx-test1个initContainer1个业务container和1个sidecar其中initContainerInit Containers:istio-init:Container ID: containerd://2bf56cd37703d82a2a43e94e8c8d683ed66b0afe22bf7148a597d67b89a727a8Image: docker.io/istio/proxyv2:1.28.2Image ID: docker.m.daocloud.io/istio/proxyv2sha256:39065152d6bd3e7fbf6bb04be43c7a8bbd16b5c7181c84e3d78fa164a945ae7fPort:Host Port:Args:istio-iptables-p15001-z15006-u1337-mREDIRECT-i*-x-b*-d15090,15021,15020--log_output_leveldefault:info...和之前envoy中劫持流量的做法一样istio依然是使用iptables将端口流量导入到代理之中处理尝试访问一下? curl 10.22.12.178:30785/testi am backend in backend-6d76f54494-g6srz成功再次查看istio-proxy日志。空的为了调试方便将其打开并且输出至控制台kubectl -n istio-system edit cm istioapiVersion: v1data:mesh: |-accessLogFile: /dev/stdout...至此istio的第一个功能探索完毕自动注入sidecar container并且完成了流量劫持Upgrade Required 426 的问题当前的架构是左图现在要前进到右图watermarked-istio_1其实就是在backend注入istio-proxy直接重启就好? kubectl get pod -owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESbackend-5d4d7b598c-f7852 2/2 Running 0 13s 10.244.0.49 wilsonnginx-test-6f855b9bb9-9phsv 2/2 Running 0 58m 10.244.0.48 wilson注入完成测试一下? curl 10.22.12.178:30785/testUpgrade Required? kubectl logs -f -l appnginx-test -c istio-proxy[2026-01-26T07:54:42.977Z] GET /test HTTP/1.1 426 - upstream10.244.0.48:80 duration6ms routedefault[2026-01-26T07:54:42.978Z] - - - 0 - upstream10.105.148.194:10000 duration9ms route-在nginx注入istio-proxybackend没有注入的时候并没有报错。而一旦nginx与backend都注入的时候就会出现Upgrade Required (426)错误Nginx Sidecar 发现目标Backend是一个纯文本服务它会回退到“透明代理”模式简单地把 Nginx 发出的流量透传出去Nginx Sidecar 发现目标也有 Sidecar它会尝试建立一个高度优化的、基于 mTLS 的隧道关于mTLS后面会详细介绍。如果此时 Nginx 发出的请求头比如缺少 Host 字段或者使用了 HTTP/1.0不符合 Envoy 对这种隧道协议的预期Envoy 可能会向 Nginx 发送一个特殊的响应或者 Nginx 在尝试通过这种隧道通信时因为某些 Header 冲突如 Connection: close自发产生了 426 错误想要解决这个问题有两种方法改造nginx中加入标记location /test {proxy_http_version 1.1; # 必须添加这一行proxy_set_header Host $host; # 这一行也是必须的proxy_pass http://backend_ups;}Nginx 的 proxy_pass 默认使用 HTTP/1.0。在 Istio 环境中HTTP/1.0 不支持长连接Keep-Alive以及一些现代的协议协商这与 Istio SidecarEnvoy默认的 L7 代理行为冲突Istio 需要 HTTP/1.1 来支持复杂连接管理问题改造backend service如果nginx改造有难度那也可以尝试改造backend-serviceapiVersion: v1kind: Servicemetadata:name: backend-servicenamespace: defaultspec:ports:- name: tcp-80 # 原为 http-80 改为 tcp-80port: 10000protocol: TCPtargetPort: 10000selector:app: backendIstio 只有在识别到流量是 HTTP 时才会进行深度的协议检查和转换。如果你把这个服务声明为 TCPIstio 就会将其视为原始字节流进行透传不再关心它是 HTTP/1.0 还是 1.1。优点就是彻底解决 426 问题无需改 Nginx。缺点则是你会失去 Istio 针对该服务的 HTTP 监控指标如请求数、4xx/5xx 统计、分布式追踪以及基于路径的路由功能http 1.0 与 http 1.1这里再简单介绍一下两个协议版本的区别连接管理最显著的区别HTTP 1.0短连接 (Short-lived)默认情况下客户端每发起一个请求都要与服务器建立一次 TCP 三次握手。请求结束并收到响应后TCP 连接立即关闭。如果页面有 10 张图片浏览器就要建立 10 次 TCP 连接。这带来了极高的延迟和资源开销。HTTP 1.1持久连接 (Persistent Connection / Keep-Alive)。默认开启 Connection: keep-alive。一个 TCP 连接可以被多个请求复用。只有在明确声明 Connection: close 或连接超时后才会关闭。在 Istio 中 Envoy 极度依赖持久连接来维持高性能的 Sidecar 间隧道。HTTP 1.0 的频繁断开会让 Envoy 感到“压力山大”甚至认为这是一种非标准的协议行为。Host HeaderHTTP 1.0人们认为一个 IP 对应一个网站所以请求头里不需要带域名信息。HTTP 1.1随着虚拟主机一个 IP 跑多个网站的流行HTTP 1.1 规定请求头必须包含 Host 字段。在 K8s/Istio 中 Istio 的路由决策、Service 的匹配完全依赖 Host 头。这也是为什么 Nginx 使用 HTTP 1.0 转发时如果不手动补全 Host 头后端往往会返回 404 或协议错误。以上是istio必须要求HTTP 1.1最主要的两个因素当然还有其他非常重要的区别特性 HTTP 1.0 HTTP 1.1连接模型 默认短连接每次请求新开 TCP 默认持久连接 (Keep-Alive)复用 TCPHost 头部 可选 (导致无法支持虚拟主机) 必须 (支持一 IP 多域名)流水线 (Pipelining) 不支持 支持 (但在实际应用中受限)断点续传 不支持 支持 (通过 Range 头部)缓存控制 简单 (Expires) 复杂且强大 (Cache-Control, ETag)默认协议版本 许多旧软件(如 Nginx proxy)的默认值 现代 Web 应用的基石标准小结本章内容算是一个开胃小菜成功安装了istio并且解决了一个非常常见的426问题至于怎么把之前在envoy的那些最佳实践搬迁到istio那就是后面的内容了敬请期待后记如果整个namespace都已经有了注入标签istio-injectionenabled但是某个deployment不想让istio注入kubectl patch deployment nginx -p {spec:{template:{metadata:{annotations:{sidecar.istio.io/inject:false}}}}}砸车可试

相关文章:

RAG 还是 Lucene:私有化部署客服系统的 AI 知识库架构选型捶

在之前的文章中,我们花了大量的篇幅,从记录后端pod真实ip开始说起,然后引入envoy,再解决了各种各样的需求:配置自动重载、流量劫持、sidecar自动注入,到envoy的各种能力:熔断、流控、分流、透明…...

intv_ai_mk11部署教程:GPU服务器中intv_ai_mk11服务健康检查脚本编写与定时巡检实践

intv_ai_mk11部署教程:GPU服务器中intv_ai_mk11服务健康检查脚本编写与定时巡检实践 1. 环境准备与快速部署 在开始编写健康检查脚本之前,我们需要先确保intv_ai_mk11服务已经正确部署在GPU服务器上。以下是快速部署步骤: 服务器要求&#…...

零样本分类避坑指南:AI万能分类器使用中的注意事项与技巧

零样本分类避坑指南:AI万能分类器使用中的注意事项与技巧 1. 零样本分类技术概述 零样本分类(Zero-Shot Classification)是自然语言处理领域的一项突破性技术,它允许模型在没有特定任务训练数据的情况下,仅凭用户提供…...

Pixel Dimension Fissioner 开发环境配置:Visual Studio Code远程连接GPU服务器

Pixel Dimension Fissioner 开发环境配置:Visual Studio Code远程连接GPU服务器 1. 为什么需要远程开发? 当你开始使用Pixel Dimension Fissioner这类AI模型时,本地电脑的性能可能无法满足需求。GPU服务器提供了强大的计算能力,…...

Qwen3-0.6B-FP8对比实测:轻量级模型部署体验,vLLM+Chainlit方案真香

Qwen3-0.6B-FP8对比实测:轻量级模型部署体验,vLLMChainlit方案真香 1. 轻量级模型部署新选择 在AI应用快速落地的今天,如何在有限的计算资源上高效部署语言模型成为开发者面临的核心挑战。传统大模型动辄数十GB的显存需求让许多中小企业和个…...

Wan2.2-I2V-A14B系统管理:使用Xshell高效管理远程GPU服务器与容器

Wan2.2-I2V-A14B系统管理:使用Xshell高效管理远程GPU服务器与容器 1. 为什么需要专业SSH工具管理GPU服务器 管理远程GPU服务器不同于普通服务器,需要频繁执行资源监控、日志查看和大文件传输等操作。Wan2.2-I2V-A14B这类AI系统运行时会产生大量日志数据…...

像素极光创意引擎:5分钟零基础搭建你的8-BIT像素艺术AI画室

像素极光创意引擎:5分钟零基础搭建你的8-BIT像素艺术AI画室 1. 环境准备与快速部署 1.1 系统要求 操作系统:Linux/Windows/macOSDocker环境:Docker 18.06硬件配置:4GB内存,2核CPU(推荐NVIDIA GPU加速&am…...

基于DSP28335主控的直流有刷电机闭环控制系统:转速PID调控与上位机操作体验

直流有刷电机闭环控制 主控dsp28335,直流有刷电机,采用ab编码器,进行速度闭环。 有转速指令规划处理,速度环pid控制,eqep位置解算、转速解算,可以通过上位机控制电机正反转,发送指令等。 可以直…...

基于2自由度1 4悬架模型的模糊PID控制主动悬架模型及效果对比研究

模糊PID控制主动悬架模型 基于2自由度1/4悬架模型,模糊PID可以自适应调整PID控制的系数,实现更好的控制效果 Simulink模型中对比了被动悬架、PID控制和模糊PID控制主动悬架效果 如图为车身加速度、悬架动挠度和轮胎动载荷的对比结果 (包括被动…...

【AI】从零到一:手把手搭建PyTorch+CUDA深度学习开发环境

1. 深度学习开发环境搭建全景图 刚接触深度学习的同学往往会被各种术语搞晕——显卡驱动、CUDA、cuDNN、PyTorch,这些组件之间到底什么关系?简单来说,它们就像盖房子的四层地基:显卡驱动是地基中的钢筋,CUDA是混凝土框…...

K8s Pod 网络带宽限制配置

Kubernetes Pod网络带宽限制配置指南 在云原生应用中,Kubernetes(K8s)的Pod网络性能直接影响服务质量和资源利用率。随着微服务架构的普及,如何精细控制Pod的带宽成为运维关键。本文将深入探讨K8s中Pod网络带宽限制的配置方法&am…...

Qwen2-VL-2B-Instruct与Vue3集成指南:构建智能前端应用

Qwen2-VL-2B-Instruct与Vue3集成指南:构建智能前端应用 用最简单的方式,让AI视觉能力为你的Vue应用赋能 1. 开篇:为什么要在Vue里集成视觉AI? 最近一直在折腾各种AI模型,发现Qwen2-VL-2B-Instruct这个多模态模型确实有…...

通过爱毕业aibiye的AI辅助,高重复率论文能实现自动润色,包括句式转换和术语优化,有效降低相似度

嘿,大家好!我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题:论文重复率飙到30%以上怎么办?别慌,我这就分享5个实用降重技巧,帮你一次搞定,轻松压到合格线以下。这些方法都是我亲身试验过的&a…...

Hunyuan-MT-7B镜像免配置:支持Webhook回调与翻译结果异步通知

Hunyuan-MT-7B镜像免配置:支持Webhook回调与翻译结果异步通知 想快速部署一个高质量的翻译大模型,但又不想折腾复杂的配置?今天介绍的Hunyuan-MT-7B镜像,让你能一键启动一个支持33种语言互译的翻译服务,并且自带Webho…...

Qwen3-TTS-Tokenizer-12Hz实际项目:语音标注平台音频token化存储与检索优化

Qwen3-TTS-Tokenizer-12Hz实际项目:语音标注平台音频token化存储与检索优化 如果你正在开发一个语音标注平台,或者管理着海量的语音数据,那你一定遇到过这些头疼的问题:音频文件太大,存储成本高得吓人;想找…...

函数式计算:Flink 流处理入门

函数式计算:Flink 流处理入门 在当今数据驱动的时代,实时数据处理成为企业竞争的关键。Apache Flink作为一款开源的流处理框架,凭借其高吞吐、低延迟和精确的状态管理能力,成为大数据领域的明星工具。本文将以函数式编程的视角&a…...

瑜伽女孩形象一致性控制:雯雯的后宫-造相Z-Image-瑜伽女孩LoRA特性解析

瑜伽女孩形象一致性控制:雯雯的后宫-造相Z-Image-瑜伽女孩LoRA特性解析 1. 引言:当AI学会“记住”一个女孩 你有没有遇到过这样的情况?用AI生成图片时,想要一个特定的角色,比如一个固定形象的“瑜伽女孩”。第一次生…...

国产信创库fio破坏主备库以及备份故障处理--惜分飞奈

一、各自优势和对比 这是检索出来的数据,据说是根据第三方评测与企业数据,三款产品在代码生成质量上各有侧重: 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一;Python首生成率达92.3% SQL生成准确率提升35%&…...

万象视界灵坛应用场景:AR内容开发中图像-描述语义对齐验证

万象视界灵坛应用场景:AR内容开发中图像-描述语义对齐验证 1. 技术背景与需求分析 在AR内容开发过程中,图像与文本描述的语义对齐验证是一个关键挑战。传统方法通常依赖人工审核或简单的关键词匹配,存在效率低下、准确性不足等问题。万象视…...

Qwen-Image-Edit-2509开箱即用指南:无需代码,三步完成智能修图

Qwen-Image-Edit-2509开箱即用指南:无需代码,三步完成智能修图 1. 为什么选择Qwen-Image-Edit-2509? 想象一下这样的场景:你刚拍好一组产品照片,却发现背景太杂乱;或者你需要为同一款商品制作不同颜色的展…...

Nunchaku FLUX.1-dev 文生图开发环境搭建:IntelliJ IDEA中的Python插件配置

Nunchaku FLUX.1-dev 文生图开发环境搭建:IntelliJ IDEA中的Python插件配置 如果你是一位习惯了JetBrains全家桶(比如IntelliJ IDEA)的Java或全栈开发者,现在想上手玩玩AI绘画,特别是像Nunchaku FLUX.1-dev这样的文生…...

借助爱毕业aibiye的智能算法,论文中的相似内容可被自动优化,结合学术标准调整,确保低重复率

嘿,大家好!我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题:论文重复率飙到30%以上怎么办?别慌,我这就分享5个实用降重技巧,帮你一次搞定,轻松压到合格线以下。这些方法都是我亲身试验过的&a…...

Qwen3-0.6B-FP8极速对话工具:C盘清理智能方案

Qwen3-0.6B-FP8极速对话工具:C盘清理智能方案 你是不是也遇到过这样的情况:电脑用着用着,C盘就莫名其妙变红了,系统开始卡顿,想清理又不知道从哪下手,生怕删错了东西导致系统崩溃?别担心&#…...

QT图形界面开发:为PyTorch模型打造本地化桌面推理工具

QT图形界面开发:为PyTorch模型打造本地化桌面推理工具 1. 为什么需要本地化AI推理工具 在AI模型实际落地过程中,很多场景对数据隐私和实时性有严格要求。比如医疗影像分析、工业质检等场景,既需要保护敏感数据不外传,又要求快速…...

Qwen3-VL-2B图文理解系统备份方案:数据安全实战部署

Qwen3-VL-2B图文理解系统备份方案:数据安全实战部署 1. 引言 想象一下,你花了好几天时间,终于把一个能看懂图片、识别文字的AI服务部署上线了。它不仅能帮你分析商品图,还能从复杂的图表里提取数据,甚至辅导孩子做作…...

Z-Image-Turbo-辉夜巫女辅助JDK新特性学习:为抽象概念生成可视化示例

Z-Image-Turbo-辉夜巫女辅助JDK新特性学习:为抽象概念生成可视化示例 对于Java开发者来说,学习新版JDK引入的特性,比如虚拟线程、模式匹配这些概念,有时候就像是在读一本没有插图的说明书。文字描述很详细,但脑子里就…...

AgentCPM模型内存与显存优化详解:低成本GPU部署方案

AgentCPM模型内存与显存优化详解:低成本GPU部署方案 想在自己的电脑上跑一个像AgentCPM这样的大模型,是不是总被“爆显存”的提示搞得头疼?看着动辄几十GB的显存需求,再看看自己显卡上那可怜的8GB、12GB,是不是感觉梦…...

nli-distilroberta-base应用案例:智能客服中的句子逻辑判断

nli-distilroberta-base应用案例:智能客服中的句子逻辑判断 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务,专门用于判断两个句子之间的逻辑关系。在智能客服场景中,这项技术可以显著提升对话…...

EVA-02文本重建终端Python爬虫实战:自动化数据采集与智能处理

EVA-02文本重建终端Python爬虫实战:自动化数据采集与智能处理 1. 引言 你有没有遇到过这样的情况?需要从几十个网站上收集产品信息,手动复制粘贴到手软,好不容易整理成表格,却发现格式乱七八糟,关键信息还…...

Fish Speech 1.5 GPU利用率优化:FP16量化+动态批处理提升吞吐量

Fish Speech 1.5 GPU利用率优化:FP16量化动态批处理提升吞吐量 语音合成技术正在改变我们与数字内容交互的方式,而Fish Speech 1.5作为一款支持多语言的高质量文本转语音模型,在实际部署中面临着GPU资源利用率的挑战。本文将分享如何通过FP1…...