2024 年度回顾

开篇与自我定位 年度序言与背景 📅 Hi! 2025 ~ TIP: 这篇文章的信息密度很高,并且带有强烈的主观,我尽可能的尝试少一些观点,多一些经验的描述,包括自己旅居过程中的经验,经历过的一些事情反思,做产品的途中的一些经验,经验是宝贵的,希望留给你触动和思考的空间越广,TOP 中选取自己感兴趣的阅读即可。 曼谷 → 尼泊尔/加德满都 的飞机上,其实心情是豁达的,从小到大做的车太多了,喜欢在车上思考一些问题。一切都是那么自然,前段时间明星王星泰国被骗的事件, 西藏/尼泊尔 地震事件。一个月前曼谷飞首尔航班事件,再到之前 加德满都 -> 博卡拉 的飞机频频失事,喜马拉雅山频繁出现意外,再去用理智和数据去推测自己的后半生的成长曲线,我是怎么也没办法说服自己就这样让自己莫名其妙的离开这个世界。反转一个场景,”世界都这么多突然了,假设我们每一天都会是最后一天,假设我当前乘坐的航班✈️也没办法顺利到达终点,最后一天,你有什么遗憾吗?” 我已经很快乐的度过每一天了,我已经在让每一天都不留遗憾的度过了。哪怕很平常的一天,走在草坪上,看看小朋友和小狗嬉闹的身影我觉得已经很幸福了。最后一天真的那么重要吗,重要的是当下,做自己想做的事情,为自己想要实现的愿望付出自己的时间、经历和生命。是此时此刻,比如说你我在思考这个问题的瞬间,感受到的乐趣,我把每一天都当做最后一天去生活,去做自己想做的事情,去尽可能的创造,为世界创造一些幸福和价值。对于一些自己无能为力,不可控的问题,交给佛祖吧 ~ !https://cdnv2.ruguoapp.com/Fmx1eiSFwVftgjXDxPT9RjdFz2X1v3.jpg?imageMogr2/auto-orient/heic-exif/1/format/jpeg/thumbnail/!120x120r/gravity/Center/crop/!120x120a0a0 又一年过去了, 上一年在维多利亚港跨年写年度小结的场景还历历在目,是什么能力可以在短短几个小时完成一篇年度小结? 结合 AI 的能力快速完成的年度小结就像是 KPI 一样 😅。 去年就已经构思了今年的我年度总结可能会完成那哪些梦想,果然还是不能有太多的期待,结果现在回顾起来全部都是不及格,于是今年就不写年度小结了,反思一下今年的自己为什么是这样的转变。 好我喜欢写随笔,因为自己定义也是一个流浪青年,这篇文章我也会用随笔去写。 写之前想过一些定位,去年在维多利亚港看跨年烟花的时候,2023 跨年夜,我给自己的博客标了一句话: 我叫 Xinwei(bear) Xiong 🤖。我的忠诚是对冒险的忠诚☀️。 我是一个开源的极度爱好者Ⓜ️。我有一个大梦想,并会在明年实现它。 如果是那时候的我,肯定想的是今年如何去写去过哪些地方,实现了哪些的梦想。 因为日常也记录了非常多的随笔,以及当时的思考如何形成之前的我,以及现在的我。当时当下有更想写的一些东西,我很相信今年也尤其喜欢 transformation 这个词,所以这篇博客的核心,我想从 transform 这个词来深度的剖析,如果我的博客和文章是一款好的产品,投入了我大量的经历以及经验的结晶,禁得住市场和监管的考验,最终呈现给你的这款产品,面对你(与众不同且独一无二)的人来说,如何切切实实的感受到这种 transformation。 来之前看过 Reimu 的文章,那就从 Reimu 的文章开始说起,引入 transform 。 Reimu 在 2019 年大学毕业那会写过一篇万字长文《毕业后的一些思考》。我分别在大三大四读过一遍, 两次都是有缘刷到,很高兴第二次我认识了 Reimu。这篇文章讲的是 Reimu 在大学后的大量的思考以及信息攫取后输出,很有批判性思维。它确确实实让两次观看的我有了两次深刻的差异化感受,我理解这个过程就叫做 transformation,是,是我第一次阅读到第二次阅读感受的 transformation, 是我 看着 Reimu 的 transformation ,也是一个以时间为维度,两个普通平凡技术从业者时隔五年思想的 transformation。...

February 12, 2025 · 11 分钟 · 2136 字 · Xinwei Xiong, Me

深入了解Kubernetes Kube apisserver的组件

深入理解Kube-APIServer kube-apiserver是Kubernetes最重要的核心组件之一,主要提供以下的功能 提供集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更等 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd) apiserver 主要功能: 认证:使用集群判断身份。 鉴权:使用操作 CRUD,需要权限。 准入: 对于Kubernetes来说,需要一些额外的 actions,例如写入的值不规范,需要对其进行修改,修改后需要 校验。最后需要 限流,以防止恶意或者漏洞导致拥堵 Mutating Validating Admission 限流 APIServer对象的实现 访问控制 API Server 是所有组件交互的 中间枢纽。 Kubernetes API的每个请求都会经过多阶段的访问控制之后才会被接受,这包括认证、授权以及准入控制(Admission Control)等。 前面的是 Mutating Webhook,可以改一个对象的值,而 Validating Webhook 是不可以修改对象的值,不生效的。 更加详细的请求处理流程: 📜 对上面的解释: 如何处理API请求:API源码存在于kubernetes/pkg/api路径中,会处理集群内以及集群外客户端的请求。 那么,当HTTP请求到达Kubernetes API时,具体会发现什么呢?从上层看,会发现以下交互: HTTP请求由一串过滤器(filters)进行处理,这些过滤器注册在DefaultBuildHandlerChain()(参阅源码:https://github.com/kubernetes/apiserver中的config.go)中,并执行相应的处理。过滤器要么会将信息传递并附加到ctx.RequestInfo上(例如通过了身份认证的用户),要么返回适当的HTTP响应代码。 第二步,复用器(multiplexer,参阅源码:https://github.com/kubernetes/apiserver中的container.go)会根据HTTP路径,将HTTP请求路由到相应的处理程序(handler)。 第三步,routes(在routes/*中定义)会将处理程序(handler)与HTTP路径进行连接。 第四步,按照API Group进行注册的处理程序(参阅源码:https://github.com/kubernetes/apiserver中的groupversion.go和installer.go),会处理HTTP请求和上下文(context,如user、rights等),并将请求的对象从存储中传送出来。 注意,为了简洁,在上图中我们省略了HTTP路径中的$NAMESPACE字段。 现在我们进一步深入的对前文中提到的DefaultBuildHandlerChain()中建立的过滤器(filters)进行介绍: **WithRequestInfo():**在requestinfo.go中定义,将RequestInfo附加到上下文中。...

September 28, 2023 · 7 分钟 · 1326 字 · 熊鑫伟,我

深入了解Kubernetes等组件之ETCD

开始前 ETCD 是 Kubernetes 中所有组件中最难的,因为 ETCD 是有状态的,而不是无状态的。 我在之前做 k3s runtime 设计的时候,了解了一些关于 ETCD 和 Raft 算法相关的概念,作为前奏知识,请分别前往 ETCD 以及 Raft算法 进行前奏学习。 这一篇来深入并且贯穿的讲解 ETCD 和 Raft。并且站在 Kubernetes 的角度来深入 剖析 ETCD。 ETCD 介绍 Etcd是CoreOS基于Raft开发的分布式key-value存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。 包含的功能以及特性 前奏 都有学过,看下 Kubernetes 最关心的 存储: 主要功能 基本的key-value存储 监听机制 key的过期及续约机制,用于监控和服务发现 原子Compare And Swap和Compare And Delete,用于分布式锁和leader选举 使用场景 可以用于键值对存储,应用程序可以读取和写入 etcd 中的数据 etcd 比较多的应用场景是用于服务注册与发现 基于监听机制的分布式异步系统 etcd 是一个键值存储的组件,其他的应用都是基于其键值存储的功能展开。 采用kv型数据存储,一般情况下比关系型数据库快。 支持动态存储(内存)以及静态存储(磁盘)。 分布式存储,可集成为多节点集群。 存储方式,采用类似目录结构。(B+tree) 只有叶子节点才能真正存储数据,相当于文件。 叶子节点的父节点一定是目录,目录不能存储数据。 服务注册与发现:...

September 26, 2023 · 6 分钟 · 1264 字 · 熊鑫伟,我

从理论到实践的项目管理打通

项目管理从理论到实践 理论介绍 瀑布模型: 敏捷模型: Scrum框架: 传统和敏捷差异 传统项目管理方法通常按照线性流程进行,通过预先制定的计划、监督和控制来实现项目目标。敏捷项目管理方法则更加灵活,通过迭代和持续的改进来实现项目目标。敏捷方法强调团队合作、适应变化、快速交付价值。 项目管理十大知识领域 项目管理的十大知识领域包括: 项目范围管理:确定项目的目标和边界,并确保项目在进行过程中不会超出这些范围。 项目时间管理:确定项目的时间计划,并确保项目按时完成。 项目成本管理:确定项目的预算,并确保项目在预算范围内完成。 项目质量管理:确保项目产品、服务或结果符合质量标准。 项目资源管理:确定项目所需的人员、设备和材料,并确保这些资源得到有效利用。 项目沟通管理:确定项目的信息需求,并确保项目信息得到有效传递。 项目风险管理:识别、评估和应对项目中的风险。 项目采购管理:确定项目所需的外部产品、服务或结果,并确保这些外部要素得到有效管理。 项目合同管理:管理项目中的合同,包括签订合同、监督合同履行和结束合同。 项目结项管理: 记录项目成果,并对项目进行评估,以确定未来项目的改进点。 项目管理的五大过程组 项目管理的五大过程组是: 开始过程组:在项目启动之前进行的活动,包括项目的范围、目标、预算和资源的确定。 规划过程组:为项目的成功制定计划,包括项目时间、成本、质量、资源、沟通、风险、采购和合同管理计划。 执行过程组:将计划转化为具体行动,通过项目团队的协作来完成项目的任务。 监控和控制过程组:监督项目的进展,并对变化做出反应,以确保项目按照计划完成。 关闭过程组:完成项目并归档项目文件。 监控负责产品项目的整个生命周期。 启动:项目如何高效启动 项目启动 上面我们看到项目管理的五大过程:启动、规划、执行、监控和收尾,毫无疑问的是,如何高效启动项目的重要性不容置疑~ 先看一下贯穿始终的一个表: 我们针对启动过程中的两个关键过程: 制定项目章程 识别干系人 应用 ⚠️ 项目启动阶段应该要做的事情包括: 确定项目目标:明确项目的目的、范围和成果,确保项目与组织的战略目标一致。 组建项目团队:确定项目团队的成员,并建立合适的团队沟通和协作结构。 制定项目章程:明确项目的责任和权限,并制定项目章程,确保项目运作有序。 确定项目预算:根据项目的范围和目标制定项目预算,并确定项目的资金来源。 确定项目时间表:根据项目的范围和目标制定项目时间表,并确定项目的里程碑。 评估风险: 评估项目中可能存在的风险,并制定风险应对策略。 获取资源: 确定项目所需的人员、设备和材料,并获取这些资源。 审批启动文件: 审批并签署项目启动文件,确保项目有了正式的许可开始进行....

May 7, 2023 · 3 分钟 · 624 字 · Xinwei Xiong, Me