当前位置: 首页 > 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的各种能力:熔断、流控、分流、透明…...

RAID性能调优实战:用Arcconf工具最大化ThinkSystem 9350的IOPS(附压力测试对比)

RAID性能调优实战:用Arcconf工具最大化ThinkSystem 9350的IOPS 在企业级存储环境中,RAID卡的性能调优往往是被忽视的关键环节。许多管理员满足于基础配置,却不知道通过精细化的参数调整,能够将存储性能提升30%甚至更高。本文将带你…...

WebExtensions性能优化终极指南:让你的浏览器扩展运行如飞

WebExtensions性能优化终极指南:让你的浏览器扩展运行如飞 【免费下载链接】webextensions-examples Example Firefox add-ons created using the WebExtensions API 项目地址: https://gitcode.com/gh_mirrors/we/webextensions-examples GitHub 加速计划 /…...

5分钟搞定老旧电脑的Windows 11安装:WinDiskWriter让你的Mac变身万能启动盘制作器

5分钟搞定老旧电脑的Windows 11安装:WinDiskWriter让你的Mac变身万能启动盘制作器 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x…...

3分钟掌握猫抓浏览器扩展:网页视频音频一键下载的终极指南

3分钟掌握猫抓浏览器扩展:网页视频音频一键下载的终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到想保存网页视…...

Go: Under The Hood 完全指南:从零开始深入理解 Go 语言源码架构

Go: Under The Hood 完全指南:从零开始深入理解 Go 语言源码架构 【免费下载链接】under-the-hood 📚 Go: Under The Hood | Go 语言原本 | https://golang.design/under-the-hood 项目地址: https://gitcode.com/gh_mirrors/un/under-the-hood G…...

Qwen3-VL-WEBUI作品集:看AI如何理解复杂图片与长视频内容

Qwen3-VL-WEBUI作品集:看AI如何理解复杂图片与长视频内容 1. 引言:当AI开始"看懂"世界 想象一下,你给AI看一张满是文字的截图,它不仅能告诉你上面写了什么,还能分析出哪个是登录按钮、哪个是搜索框&#x…...

深入理解Go编译器:从源码到可执行文件的完整旅程

深入理解Go编译器:从源码到可执行文件的完整旅程 【免费下载链接】under-the-hood 📚 Go: Under The Hood | Go 语言原本 | https://golang.design/under-the-hood 项目地址: https://gitcode.com/gh_mirrors/un/under-the-hood Go语言以其高效的…...

KaTrain围棋AI:三步解锁专业级智能训练,从新手到高手的高效进阶指南

KaTrain围棋AI:三步解锁专业级智能训练,从新手到高手的高效进阶指南 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 你是否曾经在围棋对局中感到迷茫&#…...

如何用lucky-canvas打造个性化转盘抽奖活动 - 前端实战指南

1. 为什么选择lucky-canvas实现转盘抽奖 第一次接触转盘抽奖需求时,我尝试过用原生Canvas手写实现,结果光是绘制扇形区块就折腾了整整两天。后来发现了lucky-canvas这个宝藏插件,它把转盘、九宫格等常见抽奖场景都封装成了开箱即用的组件。最…...

开源CV模型落地启示:MogFace如何平衡顶会算法精度与工业部署效率

开源CV模型落地启示:MogFace如何平衡顶会算法精度与工业部署效率 在计算机视觉领域,人脸检测是许多应用的基础。从手机解锁到安防监控,从美颜滤镜到社交分析,都离不开一个快速、准确的人脸检测模型。然而,一个现实的问…...

Nanbeige 4.1-3B 保姆级教程:VMware虚拟机中部署与测试全流程

Nanbeige 4.1-3B 保姆级教程:VMware虚拟机中部署与测试全流程 想在自己的电脑上,用虚拟机搭建一个和云端GPU服务器类似的环境,来跑跑最新的AI模型,但又担心步骤太复杂?今天,我们就来手把手搞定这件事。我会…...

AI Agent开发实战系列 - LangGraph(8): 构建基于状态路由的动态决策图

1. 动态决策图的核心价值 想象一下你正在设计一个智能客服系统。当用户输入"我的订单怎么还没到?"时,系统需要自动识别这是物流查询问题,然后路由到物流处理模块;而当用户说"我要投诉产品质量"时,…...

c#笔记番外篇同步异步并行串行多线程(以及lambda 表达式)

学习目标: 算是一个一直以来的疑惑点而且ltm老师的视频了没有说这个,只能四处找资料; 先确定一个答案:就是异步和多线程是两种东西,异步可以在单线程里异步也可以在多线程里异步; 同步异步是等不等的问题;比如煮饭和炒菜两件事,同步就是先煮饭等着饭煮好了再做菜;异…...

AIAgent智能体交付流水线重构实录(从月级发布到分钟级灰度上线)

第一章:AIAgent智能体交付流水线重构实录(从月级发布到分钟级灰度上线) 2026奇点智能技术大会(https://ml-summit.org) 传统AI智能体交付长期受限于模型-服务-编排三体割裂:大模型微调需人工调度GPU队列,Agent逻辑变更…...

如何精通Spring设计模式?spring-reading项目中的5大核心模式实战指南

如何精通Spring设计模式?spring-reading项目中的5大核心模式实战指南 【免费下载链接】spring-reading 涵盖了 Spring 框架的核心概念和关键功能,包括控制反转(IOC)容器的使用,面向切面编程(AOP&#xff09…...

OpCore Simplify:让普通用户也能轻松完成黑苹果系统配置的终极指南

OpCore Simplify:让普通用户也能轻松完成黑苹果系统配置的终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify 是一款…...

gh_mirrors/code/code消息总线详解:构建松耦合的事件驱动系统

gh_mirrors/code/code消息总线详解:构建松耦合的事件驱动系统 【免费下载链接】code Example application code for the python architecture book 项目地址: https://gitcode.com/gh_mirrors/code/code 在现代软件开发中,构建灵活、可扩展的系统…...

从零开始掌握ky:基于fetch的轻量级HTTP客户端实战指南

1. 为什么你需要ky这个HTTP客户端? 如果你经常用JavaScript写前端项目,肯定对原生fetch不陌生。这个浏览器自带的API确实解决了XMLHttpRequest的很多痛点,但用久了就会发现它有不少"反人类"设计。比如: 必须手动检查res…...

Open NSynth Super故障排除:常见问题与解决方案

Open NSynth Super故障排除:常见问题与解决方案 【免费下载链接】open-nsynth-super Open NSynth Super is an experimental physical interface for the NSynth algorithm 项目地址: https://gitcode.com/gh_mirrors/op/open-nsynth-super Open NSynth Supe…...

SDD基于规范编程-OpenSpec及SuperPowers坡

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式,即所谓的“工程导向型”开发,要求开发者创建一个复杂的项目结构,包括项目文件(.csproj)、解决方案文件(.sln)、属性设置以及依赖…...

多目标冲突频发?AIAgent性能崩塌、可解释性归零、推理延迟飙升,如何用动态权重蒸馏法48小时内重构优化层

第一章:多目标冲突频发:AIAgent性能崩塌、可解释性归零、推理延迟飙升的系统性症候 2026奇点智能技术大会(https://ml-summit.org) 当一个AI Agent被同时要求“响应快于200ms”、“生成决策链完整可追溯”、“在资源受限边缘设备上运行”且“支持实时多…...

AI视频工具那么多,为什么你还是做不好课程视频?(附工具对比与选型建议)

📌 一、问题:工具越来越多,视频却越来越难做?这两年AI视频工具爆发:文本生成视频(Sora / Veo / Seedance)数字人视频平台自动剪辑工具看起来:做视频应该越来越简单但现实是&#xff…...

从零开始:使用PyTorch 2.7镜像快速运行YOLO项目

从零开始:使用PyTorch 2.7镜像快速运行YOLO项目 1. 环境准备与快速部署 PyTorch 2.7镜像是一个开箱即用的深度学习环境,预装了PyTorch和CUDA工具包,能够直接调用GPU加速模型训练和推理。这个镜像特别适合想要快速上手计算机视觉项目的开发者…...

Calico IPIP 使用指南断

本课概览 Microsoft Agent Framework (MAF) 提供了一套强大的 Workflow(工作流) 框架,用于编排和协调多个智能体(Agent)或处理组件的执行流程。 本课将以通俗易懂的方式,帮助你理解 MAF Workflow 的核心概念…...

如何把PPT做成讲解视频(新手指南)|3种方法一步步教会你

很多人都有这样的需求:做课程讲解做培训视频做知识分享但卡在一个关键问题:👉 怎么把PPT变成“会讲解”的视频?注意,这里不是简单导出视频,而是:✅ 有讲解 ✅ 有节奏 ✅ 有字幕这篇文章&#xf…...

AI应用工程化落地的隐秘痛点:从直连官方到接入聚合网关的实践之路

在2026年的开发语境里,“调用一个大模型”早已不是demo阶段的几行curl命令。当AI功能从原型验证走向生产环境,真正的挑战才浮出水面:如何保证每一次请求的稳定返回?如何在高峰期扛住并发压力?如何在模型更新时让业务代…...

终极ESP32 Arduino开发指南:从零到物联网专家的完整教程

终极ESP32 Arduino开发指南:从零到物联网专家的完整教程 【免费下载链接】arduino-esp32 Arduino core for the ESP32 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 想象一下,你有一个智能家居的想法:一个能自动调…...

【AIAgent架构知识图谱集成终极指南】:20年架构师亲授3大落地陷阱与5步标准化接入法

第一章:AIAgent架构知识图谱集成全景认知 2026奇点智能技术大会(https://ml-summit.org) AI Agent 架构正从单任务响应模型演进为具备持续感知、推理与行动能力的自主认知体。知识图谱作为结构化世界知识的语义中枢,其与 AI Agent 的深度集成&#xff0…...

快速上手 FakeStoreAPI:5分钟学会使用免费电商数据接口

快速上手 FakeStoreAPI:5分钟学会使用免费电商数据接口 【免费下载链接】fake-store-api FakeStoreAPI is a free online REST API that provides you fake e-commerce JSON data 项目地址: https://gitcode.com/gh_mirrors/fa/fake-store-api FakeStoreAPI …...