- 博客(1111)
- 资源 (51)
- 收藏
- 关注
原创 彻底搞懂 K8s 内部 DNS 解析:为什么跨 Namespace 访问不用加 `.svc.cluster.local`?
Kubernetes 内部 DNS 通过 search 域实现跨 Namespace 简化访问。当使用 服务名.命名空间 格式时,因点数少于 ndots:5,系统会自动拼接 .svc.cluster.local,无需手动添加后缀。此方式简洁、可读性强,且不受集群域名变更影响,是官方推荐的跨命名空间调用标准。避免使用 xxx.local 等错误格式,排查连接失败问题应优先检查 Service 的端口与选择器配置。
2026-11-03 15:49:42
268
原创 从 Nacos 3.0.3 启动日志看架构演进:Server API 与 Console 分离实践
Nacos 3.0.3 通过启动日志揭示架构演进:核心 Server、Server API(8848)与 Console(8080)模块分离,实现功能解耦。日志显示三者串行启动,确保注册配置能力优先就绪。集群模式依赖 Headless Service 的 publishNotReadyAddresses: true,健康探针需指向 8080 端口的 /v3/console/health。该设计支持安全隔离与灵活部署,对 K8s 部署提出精准探针配置、端口暴露及资源预留要求,显著提升运维可控性。
2026-10-27 15:03:45
307
原创 ClickHouse 存储策略实战解析:建表不写 storage_policy 会有坑吗?
建表时不写 storage_policy 是否有坑,取决于集群配置。若仅有一个默认策略(default),不写无影响;但在多盘环境(如冷热分离)中,未指定策略可能导致数据错落磁盘,引发存储瓶颈甚至宕机。存储策略与分片键无关,前者决定数据落盘位置,后者决定数据分布节点。建议在分布式集群中显式声明策略以保证一致性。可通过 system.storage_policies 和 system.tables 查看当前配置,必要时使用 ALTER TABLE MODIFY SETTING storage_policy 安
2026-10-26 10:09:56
279
原创 RedisTemplate 序列化:默认值、七个坑与一套生产规范
本文揭示RedisTemplate默认JDK序列化带来的七大隐患:key乱码、keys(pattern)失效、体积膨胀、跨语言不可读、与StringRedisTemplate隔离、Cluster多key操作风险及RCE漏洞。通过剖析序列化机制,提出生产级规范:统一使用GenericJackson2JsonRedisSerializer或StringRedisSerializer,禁用JDK序列化,配置serialVersionUID白名单,关键场景启用hash tag分槽,并强制部署层设置jdk.seria
2026-10-23 10:31:50
245
原创 使用 @SentinelResource 优雅保护第三方统一调用
本文介绍如何使用 Sentinel 的 @SentinelResource 注解,优雅保护第三方接口统一调用。通过在 public 方法上添加注解,结合 Nacos 配置熔断规则,实现异常数触发的快速失败与自动恢复。关键点包括:共享资源名以统一熔断统计、使用 blockHandler 实现降级兜底、避免内部调用导致注解失效,并强调降级应抛出业务异常而非返回空值。实战中可通过制造异常验证熔断生效,确保高并发下服务稳定性。
2026-10-20 16:12:21
334
原创 SSE 实战:在 SpringBoot + Vue 项目中零依赖实现轻量级实时消息推送
本文介绍在SpringBoot + Vue项目中,通过原生SSE实现轻量级实时消息推送的完整实践。基于“管理员发布资讯→用户实时弹窗”的需求,采用无依赖的SseEmitter方案,避开WebSocket与MQ,利用浏览器原生EventSource自动重连机制,实现服务器单向广播。文章详解SSE原理、协议格式、与轮询/WS对比,并重点剖析SseEmitter的线程模型、超时控制及内存泄漏防范,提供防阻塞、心跳保活、连接管理等实战技巧,为系统通知类场景提供高效、低耦合的解决方案。
2026-10-18 12:14:31
186
原创 A2A 与 MCP 双协议网关设计指南
在A2A与MCP共存的项目中,网关设计需根据协议暴露方式选择形态:并列暴露(A)或双端点(B)时,需统一网关按路径分流,分别处理MCP(SSE长连接、工具限流)与A2A(防循环、委派链审计);而内外分工(C)最常见且推荐——Agent对外仅暴露A2A,MCP内调不经过外网关,简化架构,避免过度设计。关键原则:先判断MCP是否对外暴露,再决定网关复杂度。
2026-10-18 11:05:30
216
原创 A2A第 6 篇:企业级 A2A 治理——注册中心、网关、安全、可观测
本文系统阐述企业级A2A治理架构,针对多团队协作中的注册分散、鉴权混乱、审计缺失等痛点,提出“注册中心+网关”双核心方案。通过Agent Registry实现能力发现与健康监控,结合本地缓存与降级机制保障可用性;A2A Gateway统一处理鉴权、限流、路由及防循环委派,支持灰度发布与跨Agent审计。架构强调可扩展性与容错设计,为复杂A2A生态提供稳定治理底座。
2026-10-18 11:03:05
213
原创 A2A第 5 篇:A2A + MCP——Agent 既是 Server 也是 Client
本文阐述Agent在真实系统中同时作为A2A Server(对外协作)与MCP Client(对内调用工具)的组合架构。通过清晰分层:协作层用A2A实现任务委派与多轮交互,工具层用MCP调用数据库、API等,业务层专注领域逻辑。强调“函数能力用MCP,思考能力用A2A”,避免反模式如将工具包装成A2A Agent。双协议下需分别保障安全边界,包括输入校验、权限控制与防循环。为支撑企业级应用,后续将引入注册中心、网关、可观测等治理机制,实现统一发现、鉴权、审计与成本管控。
2026-10-18 11:02:06
292
原创 A2A第 4 篇:多 Agent 协作——多轮、流式、推送、编排
本文详解多 Agent 协作的六大核心能力:多轮交互(input-required)、流式输出、推送通知、Agent 编排及生产级容错机制。通过 taskId 保持上下文,实现跨轮次对话;利用流式事件实时反馈进度;支持超长任务异步回调;以 Orchestrator 实现多 Agent 并行调用与结果汇总,并引入背压、超时、重试等保障机制,构建可扩展、高可用的智能协作系统。
2026-10-18 11:00:59
283
原创 A2A第 3 篇:Java 实战——用官方 SDK 写第一个 A2A Agent
本文基于A2A Java SDK,手把手实现首个A2A Agent:服务端声明销售查询技能,客户端发起任务并获取结果。涵盖代码结构、依赖配置、业务逻辑与测试用例,构建可运行的单任务闭环系统,为后续多轮协作与编排奠定基础。
2026-10-18 10:59:49
206
原创 A2A第 2 篇:A2A 核心概念——Agent Card、Task、Message、Artifact
本文系统阐述A2A协议核心概念:通过Agent Card实现Agent的标准化描述与发现;以Task为单位管理任务生命周期,支持多轮协作;利用Message与Part灵活传递文本、文件、结构化数据;通过Artifact返回任务产出。结合JSON-RPC交互与规范状态机,构建可发现、可协作、可扩展的Agent间通信体系,助力开发者设计高效、兼容的智能代理能力。
2026-10-18 10:58:21
256
原创 A2A第 1 篇:认识 A2A——Agent 之间的 HTTP
A2A(Agent2Agent Protocol)由Google联合50+企业于2025年4月发布,6月捐赠至Linux基金会,旨在标准化AI Agent间的发现、通信与协作。它作为Agent间“通用语言”,与MCP(Agent→工具)形成互补:前者为水平协作(Agent↔Agent),后者为垂直调用(Agent→资源)。核心原语包括Agent Card、Task、Message、Artifact等,基于HTTP+JSON-RPC 2.0实现,支持多轮、流式与编排。适用于多Agent协同场景,避免点对点胶水
2026-10-18 10:55:52
271
原创 MCP第 5 篇:用 Spring AI 写 MCP:注解、自动配置、ChatClient 集成
本文介绍Spring AI如何集成MCP协议,实现注解式工具定义与自动配置。通过@Tool和@ToolParam注解简化工具开发,自动注册并支持多模态返回(如图片URL或Media对象),提升开发效率与多模态能力。相比原生SDK,代码更简洁、生态更完善,适用于Spring Boot项目中的Chat/RAG/Tool一体化应用。
2026-10-17 11:17:26
484
原创 MCP第 4 篇:把 MCP 暴露成 HTTP URL:对方只拿 url + token
本文介绍将MCP服务暴露为HTTP URL的实践,解决stdio模式下代码泄露、版本失控等问题。通过Spring Boot配置域名、上下文路径与端点,实现统一鉴权、限流与升级。推荐使用单端点的Streamable HTTP替代旧版SSE,具备配置简单、自动降级、易扩展等优势,是2025年后新项目的首选方案。
2026-10-17 11:16:00
151
原创 MCP第 3 篇:一个工程多个能力:多 Tool、多 Server、多 module
本文详解一个工程中实现多能力的实践,涵盖单 Server 多 Tool、Resource、Prompt 的注册方式,通过工厂方法批量构建工具以保持代码整洁。强调命名规范(如 领域_动作_对象)避免冲突,提出“一个工程多 Server”与“一个 Host 配多 Server”结合的生产架构,解决上下文膨胀与治理问题,助力设计跨销售、人事、财务等多领域的可扩展系统。
2026-10-17 11:14:59
223
原创 MCP第 2 篇:Java 本地实战:官方 SDK + stdio + 单能力 Server
本文介绍如何用 Java 本地实现一个单能力 MCP Server,基于官方 SDK 构建 query_sales 工具,支持通过 java -jar 启动并接入 Claude Desktop。项目包含数据模型、业务服务、自测 Client 与单元测试,使用 Maven 打包为可执行 JAR,依赖简洁,日志不污染 stdio,提供完整可交付的 README,为后续多能力扩展打下基础。
2026-10-17 11:13:59
168
原创 MCP第 1 篇:认识 MCP:AI 世界的 USB-C
MCP(模型上下文协议)是Anthropic推出的AI工具标准化协议,类比USB-C,解决AI客户端与外部能力连接的“胶水代码”痛点。其核心架构包含Host、Client、Server三角色,强调安全边界:Host控制调用权限,Server必须自主校验输入、控制权限、转义输出。主要暴露Tools、Resources、Prompts三类原语,推荐使用stdio(本地)或Streamable HTTP(远程)传输。本系列从入门到企业治理,逐步深入,助力开发者高效构建可复用、安全可控的AI能力服务。
2026-10-17 11:12:53
167
原创 MCP第 6 篇:Spring AI Alibaba 封装 MCP:注册中心、网关与企业治理
本文介绍Spring AI Alibaba在企业级MCP架构中的应用,通过Nacos实现服务注册发现与配置管理,构建统一MCP网关,解决多团队、多Server场景下的治理难题。核心方案包括:基于Nacos的动态服务发现与本地缓存降级机制,以及具备鉴权、限流、路由、灰度和审计能力的MCP网关。针对MCP协议特性(如JSON-RPC、长连接),提出定制化网关设计,实现跨领域能力的统一接入与治理,支撑企业级AI服务规模化落地。
2026-10-17 10:55:29
490
原创 MCP 实战:从封装 Server 到客户端调用
MCP(模型上下文协议)是Anthropic推出的开放标准,实现AI客户端与外部工具的统一连接。本文以Python为例,演示如何将接口封装为MCP Server,通过FastMCP SDK暴露Tools、Resources和Prompts三类能力。核心要点:使用@mcp.tool()定义可调用函数,@mcp.resource()提供数据源,@mcp.prompt()配置模板;传输方式推荐Streamable HTTP。对比Function Calling与OpenAPI,MCP更聚焦AI场景下的发现与上下文
2026-10-17 10:43:50
589
原创 AI Agent Skill 工程化指南:从可发现能力包到企业级生产规范
本文系统阐述AI Agent技能工程化实践:Skill是可发现、按需加载的任务能力包,由SKILL.md、脚本、参考与资产构成。核心原则为“渐进式披露”——仅在必要时暴露详细信息。生产级技能需具备运行时契约:前置条件、状态管理、错误恢复、权限控制与可观测性。强调脚本输出不可信,必须防御性编程,执行结果仅返回结构化摘要以避免上下文污染。通过规范开发流程、版本管理与评估机制,实现从可发现能力到企业级可靠服务的演进。
2026-10-17 09:18:49
405
原创 ClickHouse 集群建表实战:从引擎选择到本地表 / 分布式表落地
本文系统解析 ClickHouse 集群建表核心问题:从 MergeTree、ReplacingMergeTree 到 ReplicatedReplacingMergeTree 引擎选择,详解版本字段、ZooKeeper 路径与副本名配置逻辑。明确“本地表存数据、分布式表路由查询”的架构原则,结合业务场景推导分区键、排序键及参数设置,提供可复用的“环境+业务→参数”决策链,实现高效、可靠的生产级建表实践。
2026-10-16 17:10:19
407
原创 ClickHouse 集群实战:分片、副本、本地表与分布式表的完整梳理
拓扑是静态的:分片数、副本数由运维预先配置,任何时候查都能看到;写入不会创建分片。分片键只在特定路径生效:只作用于"经分布式表写入"这一条路径;本地写架构下它是摆设,不影响功能和性能。读写策略看基础设施无 LB、应用直连单节点 → 写分布式表(让 CK 帮你路由)有 LB、数据量中等 → 写本地表(避免转发开销)读取无论如何都走分布式表(需要全集群数据)最终架构判断数据量不大 + 有 LB + 查询走分布式表→ 本地写 + 分布式读 = 标准解。
2026-10-16 17:05:39
459
原创 Spring Boot 异常响应被序列化为 XML 的排查与修复
Spring Boot 3.x 中异常响应意外返回 XML 而非 JSON,根源在于 ExceptionHandlerExceptionResolver 持有独立的 HttpMessageConverter 列表,未受 WebMvcConfigurer#extendMessageConverters 影响。尽管正常请求路径通过配置清理了 XML 转换器,但异常路径仍保留 MappingJackson2XmlHttpMessageConverter,导致 Accept: */* 下优先序列化为 XML。修复方
2026-10-16 11:39:50
174
原创 Spring Cloud 微服务 Sentinel 热点参数与授权规则集成指南(附架构建议)
摘要(148字): Sentinel 热点与授权规则应遵循“职责分离”原则。order-service 仅配置流控、熔断等基础规则,禁止引入热点/授权逻辑。所有安全控制(鉴权、防刷)必须由 api-gateway 统一实现:通过全局过滤器注入 X-Sentinel-Origin 标识,配合 RequestOriginParser 实现来源校验;热点规则需在控制器使用 @SentinelResource 并指定参数索引。避免过度设计,确保业务代码纯净,提升系统安全性与可维护性。
2026-10-13 16:49:47
320
原创 ClickHouse Part 机制与写入优化实践指南
摘要(≤150字): ClickHouse 写入风险核心在于单分区 active parts 数量,而非写入速率。每条 INSERT 语句按分区生成一个 part,关键是要“攒批”——多行数据合并为一条 INSERT,避免循环逐条插入。阈值随版本变化(23.6+ 为 1000/3000),需以 system.merge_tree_settings 实测为准。通过统一攒批入口、缓冲窗口聚合与异步削峰,可有效控制 part 生成速率,防止触发限流或拒写。
2026-10-13 10:40:55
286
原创 日志里的 TID 为什么是 N/A:SkyWalking 异步线程池 traceId 传递实战
日志中 TID 显示为 N/A 的根本原因是 SkyWalking 的 trace 上下文依赖 ThreadLocal,异步线程池工作线程无法继承。通过在自定义线程池上配置 setTaskDecorator(RunnableWrapper::of),可自动捕获并恢复 trace 上下文,一行代码即可修复 8 处线程池的 TID 丢失问题,实现全链路追踪闭环。
2026-10-12 15:36:01
455
原创 网关 Sentinel 限流实战:API 分组、规则加载与全量匹配踩坑记
本文详述CHEN网关接入Sentinel网关限流的实战经验,揭示三大核心坑点:① Dashboard UI的“前缀”匹配实际对应ANT模式(非字面意义前缀),导致规则误配;② gw-api数据源JSON格式错误时静默失败,5秒重试机制掩盖问题;③ 自转发架构下全量分组规则导致配额双重消耗。基于1.8.9版本,提供经字节码验证的matchStrategy真实语义表及生产可用配置,强调排障需按“定义加载→路径匹配→规则转换”链路逐层定位。
2026-10-09 18:07:48
379
原创 Spring Cloud Gateway + Nacos 动态路由热更新实战
Spring Cloud Gateway 4.3 与 Nacos 集成实现动态路由热更新,通过桥接类 GatewayRouteRefreshBridge 监听 EnvironmentChangeEvent,基于前缀过滤触发 RefreshRoutesEvent,确保配置变更秒级生效。解决 2025 版本属性前缀迁移(如 spring.cloud.gateway.routes → spring.cloud.gateway.server.webflux.routes)导致的路由未更新问题,提升可观测性与可靠性,
2026-10-09 11:06:57
276
原创 Spring Cloud Gateway 整合 Sentinel 踩坑记:为什么网关限流抛出的是 ParamFlowException?
Route ID 限流(服务级别)API 类型选择Route ID,填入目标路由 ID(下文以demo-route为例)。阈值类型选 QPS,单机阈值设为1,间隔5秒(即 5 秒内只允许 1 次请求)。这种配置对应底层,等价于服务级别的整体限流。API 分组限流(接口级别)在API 管理中创建分组,匹配模式选精确,匹配串填入目标接口路径(如在流控规则中选择API 分组进行限流。同样会转换为。热点参数限流(精细化)勾选“针对请求属性”,参数属性选择Header,填入。
2026-10-08 20:24:16
198
原创 Nacos 3.x 集群落地答疑:六个最容易混淆的概念
Nacos 3.x 集群落地中六个易混淆概念解析:8848为基准端口,其余端口由其推导;9848(客户端gRPC)与9849(节点间gRPC)职责分离;配置变更不走Distro,仅通知重读;Distro是临时实例的AP型同步协议,用于服务发现;FQDN确保K8s内域名全局可解析,避免通信失败。理解本质,方能精准排障。
2026-09-21 10:55:56
194
原创 从单机到三节点:Nacos 3.x 集群在 K8s 上的落地实践
本文介绍Nacos 3.x在K8s上从单机升级为3节点集群的实践,通过共享MySQL存储实现数据零迁移,利用Headless Service实现成员发现,结合集群配置与端口规范(8848/9848/9849/7848/8080)完成平滑切换。采用“新旧并存、逐工程切流、可随时回滚”策略,确保业务连续性。关键点包括:使用FQDN配置member.list、开启鉴权、移除standalone模式、补全数据库表结构,并通过镜像构建暴露全部端口。最终实现高可用、强一致的注册配置中心。
2026-09-21 09:57:41
412
原创 K8s StatefulSet 详解:有状态应用的“身份证”与“固定住址”
StatefulSet 是 Kubernetes 中管理有状态应用的核心控制器,为 Pod 提供稳定的身份、网络标识和存储。与 Deployment 的无状态特性不同,StatefulSet 通过固定序号命名(如 nacos-cluster-0)、Headless Service 提供稳定 DNS、独立 PVC 保证数据持久化,并支持有序或并行编排,适用于数据库、消息队列、注册中心等需成员身份与数据一致性的场景。它不解决应用层一致性问题,仅提供底层基础设施保障,是 Nacos 等集群化服务在 K8s 上稳定
2026-09-21 08:59:28
247
原创 K8s 中 Nacos 集群的 Service 编排:Headless、ClusterIP 与 PDB 全解析
PodDisruptionBudget 用于限制自愿中断(Voluntary Disruption)时同时不可用的 Pod 数量。驱逐节点;集群自动缩容;节点维护。PDB 不能阻止非自愿中断(如节点宕机),但能确保运维操作不会一次性干掉太多 Pod。StatefulSet 给了 Nacos 节点稳定的身份,而 Service 编排给了它们通信的神经网络让节点互相发现,得以解析;让业务客户端有一个稳定入口,无需关心后端节点;保护集群多数派,避免运维操作导致选主失败;正确的 apply 顺序。
2026-09-21 08:51:53
103
原创 K8s 中为什么 Nacos 集群不能只改 replicas?——从 StatefulSet 设计谈起
在K8s中部署Nacos集群时,仅修改replicas会导致集群组建失败,因Nacos为有状态分布式系统,依赖固定网络标识、成员列表和一致性协议。必须使用StatefulSet配合Headless Service实现稳定身份与发现,通过publishNotReadyAddresses、并行启动、镜像内嵌配置等设计保障集群正常运行。扩缩容需同步更新成员列表并重建镜像,不可仅靠副本数调整。
2026-09-21 08:40:29
219
原创 HTTP 连接管理技术梳理:JDK KeepAliveCache 机制与池化选型
本文剖析Spring Boot中RestTemplate底层依赖JDK HttpURLConnection的连接管理机制,重点解析JDK KeepAliveCache的缓存逻辑与http.maxConnections的真实作用——它仅限制空闲连接数,而非并发上限。在串行场景下调大该值无实际收益。对比Apache HttpClient连接池,揭示其“池化”优势:支持连接数量控制、请求排队、健康检查与可观测性,避免因无限制建连导致的资源耗尽、雪崩风险及隐式重试问题,明确指出在高并发或容错需求场景下换用池化客户端
2026-09-10 08:18:07
395
原创 双数据源技术梳理:MySQL(分表)+ ClickHouse 动态路由
本文梳理了Spring Boot工程中同时接入MySQL(分表)与ClickHouse的双数据源方案。采用dynamic-datasource-spring-boot3-starter实现注解式动态路由,结合ShardingSphere-JDBC处理MySQL分表,推荐使用官方clickhouse-jdbc(HTTP协议,8123端口)作为CK驱动,兼顾维护性与代理兼容性。通过ThreadLocal+AOP实现@DS注解切换数据源,业务代码零侵入。配置上统一依赖管理,生产环境优先使用Maven中央仓库的sh
2026-09-09 18:38:59
419
原创 xxl-job 接入 Spring 的两种方式:手动装配与自动装配(含 initMethod 双启动踩坑实录)
本文详解xxl-job在Spring Boot中两种接入方式:手动装配(官方推荐)与自动装配(社区starter)。核心要点为:避免在@Bean中配置initMethod = "start",否则会导致EmbedServer双启动,引发BindException: Address already in use。正确做法是通过XxlJobSpringExecutor的SmartInitializingSingleton机制自动启动,确保执行器仅启动一次。文中结合天宫首次部署踩坑实录,强调配置一致性与启动逻辑理
2026-09-09 18:22:47
316
原创 Sentinel 规则持久化到 Nacos 实践(网关篇 + 普通应用篇)
<think>我们根据要求生成≤150字的摘要。需要提炼核心内容:Sentinel规则持久化到Nacos,网关篇+普通应用,改造dashboard实现push模式,解决重启丢失,关键点如存储格式、接口类型反序列化、全量覆盖等。最后注意字数限制。输出摘要。</think>摘要:本文介绍将Sentinel 1.8.9 dashboard改造为规则Nacos持久化(push模式),覆盖网关流控与API分组规则,并给出普通应用扩展方案。通过新增nacos-client及Provider/Publisher,实现UI
2026-09-08 09:14:01
441
原创 机器学习模型是数学逻辑吗?
机器学习模型是数学逻辑”抓住了核心:模型本质是数学结构。模型是参数化的数学函数或概率模型,由数据通过优化算法确定参数,以完成预测或生成任务。数学逻辑是模型的“骨架”,数据是“血肉”,算法是“训练过程”,三者共同构成完整的机器学习模型。
2026-09-02 10:33:22
371
SpringBoot整合Dubbo和Zookeeper升级版
2018-11-09
DubboOPS项目和管理后台jar包
2018-11-07
Struts2Spring4Hibernate4整合
2018-11-07
bert-base-chinese模型文件,深度学习,自然语言处理
2025-02-02
Netty权威指南 第2版 带书签目录 高清完整版.pdf
2018-11-20
输入一段英文,去掉符号后将英文单词排序输出
2021-12-23
PHP课程设计图书管理系统、学生成绩管理系统、学生宿舍管理系统
2020-11-27
SpringBoot+thymeleaf+UEditor+不修改上传路径.zip
2020-02-04
jdk6-8String类
2019-11-20
dhcp+c3p0.zip
2019-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅