<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>tk_sky的博客</title><link>http://mcyou.cc/</link><atom:link href="http://mcyou.cc/rss.xml" rel="self" type="application/rss+xml"/><description>include &lt;faith&gt;</description><generator>Halo v2.22.14</generator><language>zh-cn</language><image><url>http://mcyou.cc/upload/d-2.jpg</url><title>tk_sky的博客</title><link>http://mcyou.cc/</link></image><lastBuildDate>Thu, 18 Jun 2026 06:59:56 GMT</lastBuildDate><item><title><![CDATA[k8s 动手实现资源预占调度器插件]]></title><link>http://mcyou.cc/archives/1769330659172</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=k8s%20%E5%8A%A8%E6%89%8B%E5%AE%9E%E7%8E%B0%E8%B5%84%E6%BA%90%E9%A2%84%E5%8D%A0%E8%B0%83%E5%BA%A6%E5%99%A8%E6%8F%92%E4%BB%B6&amp;url=/archives/1769330659172" width="1" height="1" alt="" style="opacity:0;">k8s 动手实现资源预占调度器插件 本文为 unicore 实现的一部分，为 mcyouyou 提供一些高级 k8s 实践功能。 需求背景 k8s 的资源分配和其他 controller 模式的原理相同，是基于声明spec+控制器控制向目标状态转移的形式实现的。换句话说，创建资源时只是声明了它需要的]]></description><guid isPermaLink="false">/archives/1769330659172</guid><dc:creator>tk_sky</dc:creator><category>云原生</category><pubDate>Sun, 25 Jan 2026 08:44:12 GMT</pubDate></item><item><title><![CDATA[k8s 动手实现成组调度 GangScheduling]]></title><link>http://mcyou.cc/archives/k8s-gangscheduling</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=k8s%20%E5%8A%A8%E6%89%8B%E5%AE%9E%E7%8E%B0%E6%88%90%E7%BB%84%E8%B0%83%E5%BA%A6%20GangScheduling&amp;url=/archives/k8s-gangscheduling" width="1" height="1" alt="" style="opacity:0;">k8s 动手实现成组调度 GangScheduling 本文为 unicore 实现的一部分，为 mcyouyou 提供一些高级 k8s 实践功能。功能设计参考阿里云 coscheduling 插件实现。 需求背景 众所周知 k8s 的调度单位是 pod。然而，现在很多批处理或 ai 任务等负载都由]]></description><guid isPermaLink="false">/archives/k8s-gangscheduling</guid><dc:creator>tk_sky</dc:creator><category>基础架构</category><category>云原生</category><pubDate>Sun, 16 Nov 2025 09:11:02 GMT</pubDate></item><item><title><![CDATA[k8s 从头实现加强版 statefulSet - 下篇]]></title><link>http://mcyou.cc/archives/1739729157909</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=k8s%20%E4%BB%8E%E5%A4%B4%E5%AE%9E%E7%8E%B0%E5%8A%A0%E5%BC%BA%E7%89%88%20statefulSet%20-%20%E4%B8%8B%E7%AF%87&amp;url=/archives/1739729157909" width="1" height="1" alt="" style="opacity:0;">k8s 从头实现加强版 statefulSet - 下篇 这是为 mcyouyou dev team 实现 unicore 的系列笔记，其中关于云原生的内容基本上业务无关，通用性很强，提取出来作为笔记。 上篇实现原版 sts 的基本内容，下篇会实现一些高级实用特性。 上篇：k8s 从头实现加强版 s]]></description><guid isPermaLink="false">/archives/1739729157909</guid><dc:creator>tk_sky</dc:creator><category>云原生</category><pubDate>Sun, 16 Feb 2025 18:06:51 GMT</pubDate></item><item><title><![CDATA[k8s 从头实现加强版 statefulSet - 上篇]]></title><link>http://mcyou.cc/archives/1736392504777</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=k8s%20%E4%BB%8E%E5%A4%B4%E5%AE%9E%E7%8E%B0%E5%8A%A0%E5%BC%BA%E7%89%88%20statefulSet%20-%20%E4%B8%8A%E7%AF%87&amp;url=/archives/1736392504777" width="1" height="1" alt="" style="opacity:0;">k8s 从头实现加强版 statefulSet - 上篇 这是为 mcyouyou dev team 实现 unicore 的系列笔记，其中关于云原生的内容基本上业务无关，通用性很强，提取出来作为笔记。 上篇实现原版 sts 的基本内容，下篇会实现一些高级实用特性。 背景 StatefulSet 是]]></description><guid isPermaLink="false">/archives/1736392504777</guid><dc:creator>tk_sky</dc:creator><category>云原生</category><pubDate>Thu, 9 Jan 2025 03:15:00 GMT</pubDate></item><item><title><![CDATA[linux CFS 调度器及应用扩展]]></title><link>http://mcyou.cc/archives/linux-cfs-diao-du-qi</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=linux%20CFS%20%E8%B0%83%E5%BA%A6%E5%99%A8%E5%8F%8A%E5%BA%94%E7%94%A8%E6%89%A9%E5%B1%95&amp;url=/archives/linux-cfs-diao-du-qi" width="1" height="1" alt="" style="opacity:0;">linux CFS 调度器及应用扩展 简介 CFS 完全公平调度器是 linux 处理普通任务的默认调度器。其主要理念是完全公平理想模型，即有 n 个任务，那么每个调度周期内每个任务都应当获得 1/n 的运行时间。考虑到权重，实际每个任务运行的时间会乘上权重（自己的权重/全局权重和）。 实现上，CF]]></description><guid isPermaLink="false">/archives/linux-cfs-diao-du-qi</guid><dc:creator>tk_sky</dc:creator><category>计科基础</category><pubDate>Wed, 2 Oct 2024 08:32:08 GMT</pubDate></item><item><title><![CDATA[Golang 设计模式：装饰器模式]]></title><link>http://mcyou.cc/archives/golang-she-ji-mo-shi-zhuang-shi-qi-mo-shi</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Golang%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%EF%BC%9A%E8%A3%85%E9%A5%B0%E5%99%A8%E6%A8%A1%E5%BC%8F&amp;url=/archives/golang-she-ji-mo-shi-zhuang-shi-qi-mo-shi" width="1" height="1" alt="" style="opacity:0;">Golang 设计模式：装饰器模式 理论 在设计模式上，人们已经找了很多方式尝试去替代继承以回避其缺点。继承作为一种对对象添加额外职责和属性的方法，具有一个显而易见的缺点，就是继承会引入额外的静态特征，特别是在子类数量膨胀的情况下。 例如，针对一个视频的处理工作，可以分为转码和编辑两部分，而转码工作]]></description><guid isPermaLink="false">/archives/golang-she-ji-mo-shi-zhuang-shi-qi-mo-shi</guid><dc:creator>tk_sky</dc:creator><category>golang</category><pubDate>Sun, 9 Jun 2024 16:26:53 GMT</pubDate></item><item><title><![CDATA[计算机网络面试问题笔记]]></title><link>http://mcyou.cc/archives/1712566461214</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E7%AC%94%E8%AE%B0&amp;url=/archives/1712566461214" width="1" height="1" alt="" style="opacity:0;">计算机网络面试问题笔记 网络模型 TCP/IP 模型？ 从上到下分为四层： 应用层：直接为用户提供的各种服务，定义了应用进程间的通信规则，如 HTTP、FTP 等 传输层：为应用层实体提供端到端、通用的通信功能，保证了数据包的顺序传送及数据的完整性。协议包括 TCP、UDP 等。 网络层：解决主机到]]></description><guid isPermaLink="false">/archives/1712566461214</guid><dc:creator>tk_sky</dc:creator><category>计科基础</category><pubDate>Mon, 8 Apr 2024 08:54:51 GMT</pubDate></item><item><title><![CDATA[操作系统面试问题笔记]]></title><link>http://mcyou.cc/archives/1711869364474</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E7%AC%94%E8%AE%B0&amp;url=/archives/1711869364474" width="1" height="1" alt="" style="opacity:0;">操作系统面试问题笔记 内核态和用户态 为什么要区分内核态和用户态？ 用户不应当直接执行受限操作，如 I/O 请求。内核态只能由操作系统执行，可以执行特权操作。用户程序必须通过系统调用来执行这些特权操作，os 执行前会判断进程是否有权限执行相应的指令。 什么时候会陷入内核态？ 系统调用 trap 、中]]></description><guid isPermaLink="false">/archives/1711869364474</guid><dc:creator>tk_sky</dc:creator><category>计科基础</category><pubDate>Sun, 31 Mar 2024 07:16:19 GMT</pubDate></item><item><title><![CDATA[Linux 内存管理笔记]]></title><link>http://mcyou.cc/archives/1711681663398</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Linux%20%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E7%AC%94%E8%AE%B0&amp;url=/archives/1711681663398" width="1" height="1" alt="" style="opacity:0;">Linux 内存管理笔记 地址 虚拟地址 内存是比较宝贵的资源。为了充分利用和管理系统内存资源，linux 采用虚拟内存管理技术，让每个进程都有 4G （32位）的互不干涉的虚拟空间。进程初始化分配和操作都基于虚拟地址，只有当进程需要实际访问内存资源的时候才会建立虚拟地址和物理地址的映射，调入物理内]]></description><guid isPermaLink="false">/archives/1711681663398</guid><dc:creator>tk_sky</dc:creator><category>计科基础</category><pubDate>Fri, 29 Mar 2024 03:07:54 GMT</pubDate></item><item><title><![CDATA[Golang GMP 并发模型笔记]]></title><link>http://mcyou.cc/archives/1709562806595</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Golang%20GMP%20%E5%B9%B6%E5%8F%91%E6%A8%A1%E5%9E%8B%E7%AC%94%E8%AE%B0&amp;url=/archives/1709562806595" width="1" height="1" alt="" style="opacity:0;">Golang GMP 并发模型笔记 以前看过，但是居然没有记笔记，遂补 背景 线程与协程首先有所区别。一般语义中，线程是： 操作系统的最小调度单元 创建销毁和调度由内核完成，在此期间需要切换内核态 而一般语义中的协程是： 又称为用户级线程 与线程的映射关系是 M : 1 创建销毁和调度在用户态完成]]></description><guid isPermaLink="false">/archives/1709562806595</guid><dc:creator>tk_sky</dc:creator><category>golang</category><pubDate>Mon, 4 Mar 2024 14:33:43 GMT</pubDate></item><item><title><![CDATA[预写日志 Write Ahead Log 笔记]]></title><link>http://mcyou.cc/archives/1709302420908</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=%E9%A2%84%E5%86%99%E6%97%A5%E5%BF%97%20Write%20Ahead%20Log%20%E7%AC%94%E8%AE%B0&amp;url=/archives/1709302420908" width="1" height="1" alt="" style="opacity:0;">预写日志 Write Ahead Log 笔记 概念 预写日志 WAL 是数据库系统和分布式系统元数据同步中采用的一种手段，主要用于确保数据操作的原子性和持久性。 数据库系统使用 WAL 时，所有的修改在提交之前都要先写入 log 文件中，这样如果机器在执行某些操作的时候断电了，我们还可以检查 lo]]></description><guid isPermaLink="false">/archives/1709302420908</guid><dc:creator>tk_sky</dc:creator><category>后端相关</category><pubDate>Fri, 1 Mar 2024 14:13:58 GMT</pubDate></item><item><title><![CDATA[kubernetes 核心内容梳理]]></title><link>http://mcyou.cc/archives/1709221930868</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=kubernetes%20%E6%A0%B8%E5%BF%83%E5%86%85%E5%AE%B9%E6%A2%B3%E7%90%86&amp;url=/archives/1709221930868" width="1" height="1" alt="" style="opacity:0;">kubernetes 核心内容梳理 正向梳理下 k8s 的比较重要的基础内容 背景 k8s 的时代背景：物理机 -&gt; 虚拟机 -&gt; 容器 物理机缺点： 部署慢 成本高 资源浪费 扩展和迁移成本高 虚拟机优点： 易部署 资源池 资源隔离 易扩展 虚拟机缺点：每台虚拟机都要安装操作系统，占用资源 容器优]]></description><guid isPermaLink="false">/archives/1709221930868</guid><dc:creator>tk_sky</dc:creator><category>云原生</category><pubDate>Thu, 29 Feb 2024 15:52:19 GMT</pubDate></item><item><title><![CDATA[k8s 调度器的调度流程和算法笔记]]></title><link>http://mcyou.cc/archives/1709130215246</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=k8s%20%E8%B0%83%E5%BA%A6%E5%99%A8%E7%9A%84%E8%B0%83%E5%BA%A6%E6%B5%81%E7%A8%8B%E5%92%8C%E7%AE%97%E6%B3%95%E7%AC%94%E8%AE%B0&amp;url=/archives/1709130215246" width="1" height="1" alt="" style="opacity:0;">k8s 调度器的调度流程和算法笔记 调度总体设计 k8s 作为一个容器编排引擎，对容器编排和调度是其核心功能。k8s 中用于调度的核心组件是 kube-scheduler。 kube-scheduler 主要分为几大组件： Policy：调度策略，目前支持配置文件、命令行参数、ConfigMap 去]]></description><guid isPermaLink="false">/archives/1709130215246</guid><dc:creator>tk_sky</dc:creator><category>云原生</category><pubDate>Wed, 28 Feb 2024 14:23:46 GMT</pubDate></item><item><title><![CDATA[etcd 分布式 k-v 存储与 raft 应用 上]]></title><link>http://mcyou.cc/archives/1708964438774</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=etcd%20%E5%88%86%E5%B8%83%E5%BC%8F%20k-v%20%E5%AD%98%E5%82%A8%E4%B8%8E%20raft%20%E5%BA%94%E7%94%A8%20%E4%B8%8A&amp;url=/archives/1708964438774" width="1" height="1" alt="" style="opacity:0;">etcd 分布式 k-v 存储与 raft 应用 上 一起读，@CD ( 简介 etcd 是 go 语言实现的 分布式 k-v 存储，通过 raft 协议维护一致性，对外提供强一致性和高可用性。强一致性意味着超过最终一致性的可靠性，它可以有效应对各种类型的网络问题和机器故障问题，常用于提供高可靠要求]]></description><guid isPermaLink="false">/archives/1708964438774</guid><dc:creator>tk_sky</dc:creator><category>云原生</category><pubDate>Mon, 26 Feb 2024 16:20:48 GMT</pubDate></item><item><title><![CDATA[Golang 设计模式：观察者模式]]></title><link>http://mcyou.cc/archives/1708871649481</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Golang%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%EF%BC%9A%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F&amp;url=/archives/1708871649481" width="1" height="1" alt="" style="opacity:0;">Golang 设计模式：观察者模式 理论 观察者模式也是一种经典的设计模式，主要适用于多对一的订阅/发布场景。 什么是多对一的订阅/发布场景： 有多名观察者，观察一个被观察事物 定义了一对多的依赖关系，当一个对象状态发生改变，其依赖者会收到通知并自动更新 这种模式的存在主要是为了降低观察者和目标之间]]></description><guid isPermaLink="false">/archives/1708871649481</guid><dc:creator>tk_sky</dc:creator><category>golang</category><pubDate>Sun, 25 Feb 2024 14:34:00 GMT</pubDate></item><item><title><![CDATA[Golang 设计模式：工厂模式]]></title><link>http://mcyou.cc/archives/1708779955444</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Golang%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%EF%BC%9A%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F&amp;url=/archives/1708779955444" width="1" height="1" alt="" style="opacity:0;">Golang 设计模式：工厂模式 背景 工厂模式也是一种经典的设计模式。特别的，对于 golang 来说，因为没有针对类的构造方法去定义一个统一的规范，如果每次创建一个类的实例时，都需要在业务代码里去执行一遍初始化的细节，就可能导致业务方法与组件类产生非常高的耦合度。如果组件类的定义有改变，那么业务]]></description><guid isPermaLink="false">/archives/1708779955444</guid><dc:creator>tk_sky</dc:creator><category>golang</category><pubDate>Sat, 24 Feb 2024 13:06:00 GMT</pubDate></item><item><title><![CDATA[Golang 设计模式：单例模式]]></title><link>http://mcyou.cc/archives/1708693500063</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Golang%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%EF%BC%9A%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F&amp;url=/archives/1708693500063" width="1" height="1" alt="" style="opacity:0;">Golang 设计模式：单例模式 背景 单例模式可以说是一种最经典最简单的设计模式。顾名思义，这种设计模式下我们声明一个类并保证这个类在全局只存在唯一实例供外部反复调用。 单例模式需要解决的对应场景： 原理上只应该存在一个的类，比如全局的监控模块 实例化时很耗费资源的类，比如连接池、线程池，或者中间]]></description><guid isPermaLink="false">/archives/1708693500063</guid><dc:creator>tk_sky</dc:creator><category>golang</category><pubDate>Fri, 23 Feb 2024 13:05:00 GMT</pubDate></item><item><title><![CDATA[Golang 网络 IO 和 epoll 调用]]></title><link>http://mcyou.cc/archives/1708612250689</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Golang%20%E7%BD%91%E7%BB%9C%20IO%20%E5%92%8C%20epoll%20%E8%B0%83%E7%94%A8&amp;url=/archives/1708612250689" width="1" height="1" alt="" style="opacity:0;">Golang 网络 IO 和 epoll 调用 之前看了 linux 内核关于网络收包和 IO 多路复用相关的原理：Linux 网络收包与 IO 多路复用 - tk_sky的博客 (mcyou.cc) 今天来看看 golang 对网络 IO 模型的包装和向上实现。在 linux 平台上，golang]]></description><guid isPermaLink="false">/archives/1708612250689</guid><dc:creator>tk_sky</dc:creator><category>golang</category><pubDate>Thu, 22 Feb 2024 14:31:00 GMT</pubDate></item><item><title><![CDATA[Golang 垃圾回收原理]]></title><link>http://mcyou.cc/archives/1708532833908</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Golang%20%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E5%8E%9F%E7%90%86&amp;url=/archives/1708532833908" width="1" height="1" alt="" style="opacity:0;">Golang 垃圾回收原理 背景 垃圾回收 GC 是一种内存管理的策略，垃圾收集器基于 runtime 在用户程序之下进行后台运作，根据一定策略回收用户不用的空间。 使用 GC 有下面的优势： 可以向用户屏蔽内存回收的细节，避免手动管理内存 以全局视野管理内存，避免不同模块的临界资源加大开发者的心智]]></description><guid isPermaLink="false">/archives/1708532833908</guid><dc:creator>tk_sky</dc:creator><category>golang</category><pubDate>Wed, 21 Feb 2024 16:27:00 GMT</pubDate></item><item><title><![CDATA[Gossip 分布式一致性协议与 Redis Cluster]]></title><link>http://mcyou.cc/archives/1708437982896</link><description><![CDATA[<img src="http://mcyou.cc/plugins/feed/assets/telemetry.gif?title=Gossip%20%E5%88%86%E5%B8%83%E5%BC%8F%E4%B8%80%E8%87%B4%E6%80%A7%E5%8D%8F%E8%AE%AE%E4%B8%8E%20Redis%20Cluster&amp;url=/archives/1708437982896" width="1" height="1" alt="" style="opacity:0;">Gossip 分布式一致性协议与 Redis Cluster Gossip Protocol Gossip 协议和名字一样，是利用类似流言传播的方式来实现一致性的一种算法。它还有些别名，epidemic protocol 等，都是描述它的一致性传播过程。它的来源是一篇1987年的ACM论文，在现在已]]></description><guid isPermaLink="false">/archives/1708437982896</guid><dc:creator>tk_sky</dc:creator><category>基础架构</category><pubDate>Tue, 20 Feb 2024 14:07:12 GMT</pubDate></item></channel></rss>