<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[程序员小潘]]></title><description><![CDATA[专注于Java后端技术分享！]]></description><link>https://blog.youkuaiyun.com/qq_32099833</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_32099833]]></copyright><item><title><![CDATA[Spring Gateway动态路由实现方案]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/152165220</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/152165220</guid><author>qq_32099833</author><pubDate>Sat, 27 Sep 2025 13:29:25 +0800</pubDate><description><![CDATA[本文介绍了Spring Cloud Gateway中动态路由配置的实现思路。通过分析RouteLocator和RouteDefinitionLocator工作机制，提出利用CachingRouteLocator缓存路由对象，并通过监听RefreshRoutesEvent事件来刷新路由。文章建议结合Nacos配置中心实现动态路由，当配置变更时能及时通知Gateway更新路由。核心方案是自定义RouteDefinitionLocator从远程加载配置，在变更时触发RefreshRoutesEvent事件，使Ca]]></description><category></category></item><item><title><![CDATA[Dubbo3序列化安全机制导致的一次生产故障]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/151369366</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/151369366</guid><author>qq_32099833</author><pubDate>Tue, 09 Sep 2025 19:07:03 +0800</pubDate><description><![CDATA[记录一次 Dubbo 线上故障排查和原因分析。线上 Dubbo 消费者启动有错误日志如下，但是不影响服务启动。消费者尝试重启，RPC 调用偶尔成功，偶尔失败，没有规律。]]></description><category></category></item><item><title><![CDATA[Dubbo3.3 Triple协议处理东西向流量]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/151251730</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/151251730</guid><author>qq_32099833</author><pubDate>Sat, 06 Sep 2025 11:29:20 +0800</pubDate><description><![CDATA[Apache Dubbo 3.3 对 Triple 协议做了升级，现在 Dubbo 不仅可以处理东西向流量，也可以处理南北向流量。**东西向流量（East-West Traffic） **指数据中心或网络内部同级设备/服务之间的通信。例如，微服务之间的内部调用。指网络外部用户与内部服务之间的通信。例如，客户端访问微服务。之前的 Dubbo 一般只用来处理服务内部的高性能RPC调用，外部用户要想访问 Dubbo 服务，只能再额外部署一个网关层，网关负责把 HTTP 协议转换成 dubbo 协议。]]></description><category></category></item><item><title><![CDATA[Dubbo3单端口多协议源码分析]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/151158166</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/151158166</guid><author>qq_32099833</author><pubDate>Wed, 03 Sep 2025 22:11:26 +0800</pubDate><description><![CDATA[Dubbo3 发布了基于 HTTP1、HTTP2、HTTP3 的 triple 通信协议，相较于之前的 dubbo 私有化协议，triple 协议在跨语言、云原生、服务治理方面有显著优势。为了方便用户平滑迁移到 triple 协议，Dubbo3 新增了一项能力，，做到协议迁移几乎没有额外负担。]]></description><category></category></item><item><title><![CDATA[Java开发MCP服务器]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/150467551</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/150467551</guid><author>qq_32099833</author><pubDate>Sun, 17 Aug 2025 15:07:44 +0800</pubDate><description><![CDATA[预训练的大语言模型虽然强大，但是知识库停留在训练的那一刻，无法获取实时的数据，导致大模型在某些场景下表现的很不好。例如，你询问大模型关于实时天气、实时新闻的看法，大模型要么无法回答，要么胡乱编造结果，这显然不是我们想看到的结果。好在，MCP 协议的诞生，打通了 AI 应用和外部系统的集成问题，大模型不仅可以获取互联网上公开的最新数据，甚至可以访问企业内部系统的保密数据，只要你开发好相应的MCP服务器即可。本文通过一个“天气MCP服务器”为例。]]></description><category></category></item><item><title><![CDATA[MCP 大模型的扩展坞]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/150448889</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/150448889</guid><author>qq_32099833</author><pubDate>Sat, 16 Aug 2025 16:49:50 +0800</pubDate><description><![CDATA[MCP 是一个标准化的协议，它的作用是解决大模型和外部系统之间集成的难题。在这个大模型和外部系统均百花齐放的时代，如果没有一个统一的标准，要实现上面这个目标简直是天方夜谭。假设大模型厂商有M个，要集成大模型的外部系统有N个，集成二者的工作量就是 M*N 的关系。所以，MCP 设计的出发点，就是为解决大模型和外部系统集成设计一个通用的标准协议。MCP 是 Model Context Protocol 的缩写，中文译为“模型上下文协议”。]]></description><category></category></item><item><title><![CDATA[Dubbo 序列化类检查和自动信任机制]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/149772079</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/149772079</guid><author>qq_32099833</author><pubDate>Wed, 30 Jul 2025 11:06:26 +0800</pubDate><description><![CDATA[本文分析了Dubbo框架中序列化机制的安全性问题，重点探讨如何防范反序列化导致的RCE攻击。文章首先展示了通过Hessian2反序列化危险HashMap子类导致JVM退出的攻击实例，说明序列化漏洞的严重性。随后介绍了Dubbo 3.1.6版本引入的类检查机制，包括DISABLE、WARN和STRICT三种安全等级，以及通过allowlist/blockedlist配置信任类。文章还详细说明了自动信任机制的实现原理，该机制会智能地将Service相关的类加入白名单，既保证安全又简化配置。最后通过源码分析揭示了]]></description><category></category></item><item><title><![CDATA[Kubernetes持久卷实战]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/149298482</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/149298482</guid><author>qq_32099833</author><pubDate>Sat, 12 Jul 2025 18:57:43 +0800</pubDate><description><![CDATA[因为容器有数据持久化、以及容器间共享数据的需求，所以 kubernetes 提供了 Volume 机制。通过将 Volume 挂载到容器的一个目录中，容器便可以读写该目录，随后容器停止或销毁，Volume 数据得以保留。Volume 支持很多类型，接入了大部分的存储后端，例如：基于宿主机目录的、基于 Secret 的、基于网络存储设备的，等等。但是，Volume 还是有明显缺点的。那就是，Volume 不便于管理和维护。]]></description><category></category></item><item><title><![CDATA[Kubernetes Volume存储卷概念]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/149296595</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/149296595</guid><author>qq_32099833</author><pubDate>Sat, 12 Jul 2025 16:50:02 +0800</pubDate><description><![CDATA[应用容器化之后，通过容器可以非常方便地部署应用。但是，容器的数据存储问题怎么解决呢？很少有应用在运行过程中是不产生任何数据的，哪怕是像 Nginx 这种代理应用，运行过程中也会产生日志数据。业务应用更是不用说，比如存储用户上传的头像、上传的文件、数据库的数据等。这显然不是我们想要看到的结果，因此 kubernetes 提供了容器的数据持久化能力，它把容器的数据存储抽象为“Volume”。]]></description><category></category></item><item><title><![CDATA[Kubernetes Deployment 部署无状态应用]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148959954</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148959954</guid><author>qq_32099833</author><pubDate>Fri, 27 Jun 2025 19:54:28 +0800</pubDate><description><![CDATA[尽管 Pod 可以部署应用，但是它没有自愈的能力，崩溃了不会自动恢复。从可用性的角度考虑，很少会直接部署 Pod，而是通过 Pod 控制器来部署。ReplicationController 和 ReplicaSet 是两种相对简单的控制器，它们都可以保证 Pod 始终可用并符合期望。但在生产中，推荐使用另一个更高级的控制器 Deployment，因为它具备诸如 滚动更新、回滚等能力。]]></description><category></category></item><item><title><![CDATA[Kubernetes Pod 控制器 RC&RS]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148959947</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148959947</guid><author>qq_32099833</author><pubDate>Fri, 27 Jun 2025 19:53:57 +0800</pubDate><description><![CDATA[Kubernetes Pod控制器简介 在Kubernetes中，传统直接部署Pod的方式存在可用性问题。为了保证应用的高可用性，生产环境通常使用Pod控制器来部署。控制器主要有两种：Replication Controller(RC)和其升级版ReplicaSet(RS)。RC能确保指定数量的Pod副本始终运行，当Pod数量不足时会自动创建新Pod。RS相比RC增加了集合选择器功能，支持更灵活的标签匹配方式。最佳实践是不再使用RC，而通过更高级的Deployment来间接管理RS。这些控制器解决了应用多实]]></description><category></category></item><item><title><![CDATA[Kubernetes多容器Pod实战]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148806576</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148806576</guid><author>qq_32099833</author><pubDate>Sat, 21 Jun 2025 10:03:15 +0800</pubDate><description><![CDATA[容器受限于“单进程模型”，往往一个容器只运行一个主进程，但是一个复杂任务又需要多个进程相互配合工作，所以推荐给每个进程都启动一个容器。这些相互配合的容器必然存在依赖关系，它们之间往往会发生频繁的基于存储卷或 Socket 的数据交换行为，因此它们其实形成了一个“容器组”的概念，它们必须成组调度到同一台机器上，否则这些数据交换处理起来会很麻烦。kubernetes 中的 Pod 其实就是容器组的概念，一个 Pod 可以包含一个或多个容器，这些容器共享存储卷和网络，可以使用 localhost 直接通信。]]></description><category></category></item><item><title><![CDATA[Kubernetes为啥引入Pod概念？]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148806571</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148806571</guid><author>qq_32099833</author><pubDate>Sat, 21 Jun 2025 10:02:37 +0800</pubDate><description><![CDATA[学习 Docker 时，我们学会了把应用程序封装成镜像，然后基于这个镜像启动容器来部署我们的服务，接着通过端口映射就可以访问我们的服务了。既然单个容器可以部署我们的应用，为什么 Kubernetes 还要额外引入 Pod 概念？直接调度容器不是更简单吗？]]></description><category></category></item><item><title><![CDATA[通过Kubernetes部署应用]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148806522</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148806522</guid><author>qq_32099833</author><pubDate>Sat, 21 Jun 2025 10:02:02 +0800</pubDate><description><![CDATA[Kubernetes 作为容器编排领域的行业标准，其部署方案凭借强大的架构设计解决了传统IT架构在资源利用率、运维复杂度、应用交付效率等方面的痛点。可以预见，通过 Kubernetes 来部署和编排应用已是大势所趋，那么如何通过 Kubernetes 来部署你的应用呢？]]></description><category></category></item><item><title><![CDATA[Kubernetes 架构的两种节点]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148806495</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148806495</guid><author>qq_32099833</author><pubDate>Sat, 21 Jun 2025 10:01:29 +0800</pubDate><description><![CDATA[Kubernetes 采用主从(master-node)架构模式，主要由主节点，也称 控制平面(Control Plane)和工作节点(node)组成。]]></description><category></category></item><item><title><![CDATA[Kubernetes Linux环境安装部署]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148806466</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148806466</guid><author>qq_32099833</author><pubDate>Sat, 21 Jun 2025 10:00:57 +0800</pubDate><description><![CDATA[Kubernetes（后文简称 k8s） 是 Google 在 2014 年开源的容器编排引擎，用于自动化容器化应用程序的部署、扩展和管理。k8s 非常适合管理微服务架构的应用，每个微服务可以作为一个独立的容器运行，k8s 能够方便地实现微服务之间的通信、负载均衡和管理，使得微服务架构的部署和运维更加高效。k8s 强大、好用，为企业和开发者提供了一个高效、灵活、可扩展的平台。但是其学习成本较高，第一关，k8s 的安装部署就成功劝退大批初学者，本文站在一个新手小白的角度，记录从零到一的搭建过程。]]></description><category></category></item><item><title><![CDATA[手写一个简易版容器]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148628431</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148628431</guid><author>qq_32099833</author><pubDate>Fri, 13 Jun 2025 11:14:13 +0800</pubDate><description><![CDATA[Linux容器的本质是一个通过命名空间(Namespaces)实现资源隔离、控制组(Cgroups)实现资源限制的进程。本文介绍了Linux容器三大核心机制，并通过shell脚本实现了一个简易容器。该容器包含独立的文件系统、网络命名空间和资源限制，能够运行nginx服务并进入交互式bash。实现过程包括解压Ubuntu镜像、配置cgroup资源限制、创建虚拟网络设备，最终通过unshare和chroot命令启动容器进程。这个简易容器展示了容器技术的基本原理，包括进程隔离、资源控制和根文件系统切换等核心功能。]]></description><category></category></item><item><title><![CDATA[容器的本质是进程]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148628411</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148628411</guid><author>qq_32099833</author><pubDate>Fri, 13 Jun 2025 11:13:20 +0800</pubDate><description><![CDATA[Linux容器本质上是隔离和限制的进程，比虚拟机更轻量高效。它通过namespaces技术实现资源隔离（如PID、网络、文件系统等），通过cgroups限制资源使用（如CPU、内存等），并通过pivot_root切换根文件系统。不同于虚拟机的完整系统虚拟化，容器共享宿主机内核，隔离不完全，某些资源（如时间）无法隔离。cgroups可精细控制资源分配，防止单一容器耗尽系统资源。这种设计使容器既具备一定隔离性，又保持轻量高效，但开发者需注意其资源限制和共享内核的特性。]]></description><category></category></item><item><title><![CDATA[Linux pivot_root 切换根文件系统]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148628382</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148628382</guid><author>qq_32099833</author><pubDate>Fri, 13 Jun 2025 11:12:30 +0800</pubDate><description><![CDATA[本文介绍了Linux容器技术中实现文件系统隔离的关键工具pivot_root。作为系统调用，它允许进程切换根文件系统，在容器启动和系统引导中发挥重要作用。文章详细阐述了pivot_root的使用流程，包括准备新根文件系统、挂载、切换和卸载旧根等步骤。通过一个基于BusyBox的实操案例，展示了如何利用pivot_root和unshare命令创建完全隔离的文件系统环境，同时解释了新旧根文件系统之间的访问关系。最后指出pivot_root是实现容器文件系统隔离的高效方案。 ]]></description><category></category></item><item><title><![CDATA[Linux cgroup 技术]]></title><link>https://blog.youkuaiyun.com/qq_32099833/article/details/148628360</link><guid>https://blog.youkuaiyun.com/qq_32099833/article/details/148628360</guid><author>qq_32099833</author><pubDate>Fri, 13 Jun 2025 11:11:46 +0800</pubDate><description><![CDATA[Linux cgroup（Control Groups）技术用于限制进程组的CPU、内存、I/O等资源使用，防止资源过度消耗导致系统崩溃。cgroup由子系统（如CPU、内存控制器）、层级结构和文件系统目录组成，支持v1和v2两个版本，其中v2简化了管理并增强资源隔离能力。通过创建控制组并配置对应文件（如cpu.max、memory.max），可动态限制进程资源。例如，限制CPU为0.5核心或内存为10MB时，超限进程会被终止。]]></description><category></category></item></channel></rss>