编程技术分享

  • 关于作者
Go

K8S源码分析系列3—K8S调度器

1、调度框架 1.1 框架图 K8S从1.15版本开始引入可插拔架构的调度框架,定义了pod调度周期中的一些关键点,通过插件形式对这些关键点进行自定义扩展,从而达到不修改已有代码的情况下调整调度策略。如下为pod调度周期的流程图: 调度框架提供了一些扩展点,包括:QueueSort、PreFilter、Filter、PostFilter、PreScore、Score、Reserve、Permit、PreBind、Bind、PostBind,每个扩展点有明确的调用时机和作用,后面将会详细介绍。 插件分为in-tree…

2025年11月3日 0条评论 26点热度 0人点赞 jemuel 阅读全文
K8S

K8S源码分析系列2—远程调试K8S组件

1、调试环境 (1)部署k8s集群,版本为1.24.2,参考文章:K8S源码分析系列1—搭建K8S调试集群,本文部署了2个节点:master、worker1。 (2)安装golang,版本为1.24.1,下载地址:https://golang.google.cn/dl/。 (3)安装dlv,版本为1.25.0 git clone https://github.com/go-delve/delve cd delve go install github.com/go-delve/delve/cmd/dlv dlv ve…

2025年7月27日 0条评论 224点热度 1人点赞 jemuel 阅读全文
Go

Volcano源码分析系列—调度篇

1、前言 Volcano是一个基于Kubernetes构建的批处理系统,它提供了许多批处理和弹性工作负载通常需要的一套机制,主要用于高性能计算场景,包括机器学习、深度学习、大数据应用等。本文接下来主要从源码层面分析volcano的调度机制。 2、搭建环境 本文使用Volcano 1.9版本搭建运行环境,在运行volcano前需要先搭建好k8s集群,搭建方式可参考这篇文章:http://www.miaozhouguang.com/?p=490。执行如下命令即可启动volcano 1.9版本服务: kubectl ap…

2025年2月4日 0条评论 2473点热度 8人点赞 jemuel 阅读全文
K8S

K8S源码分析系列1—搭建K8S调试集群

1、前言 如今微服务盛行,服务部署几乎离不开K8S,工作中无时无刻不在接触它,秉着知其然还要知其所以然的原则,本系列文章会从源码层面对K8S进行深度剖析,俗话说工欲善其事必先利其器,阅读源码不仅仅是看,还需要去调试,只有调试才能更深入的理解一个庞大系统的运行机制。本系列的第一篇文章将会带你搭建K8S的调试集群。 2、搭建云端K8S集群 搭建K8S集群可以使用一个节点,然而为了更好的观察整个集群的调度特性,我们采用3节点进行部署,在本地没有多台机器的条件下可以租云端的服务器。以下租用了云端的3台服务器进行部署。 K8…

2024年10月7日 0条评论 2215点热度 6人点赞 jemuel 阅读全文
K8S

K8S Controller开发

1、背景 K8S在云原生领域已经成为事实性的任务编排调度标准,在实际开发过程中我们经常会接触到它(除非你仍采用原始的裸机部署应用),随着深入的使用,当K8S提供的原生能力无法满足需求时,就需要进行二次扩展,比如Controller、调度等,本文接下来会介绍Controller原理及如何扩展。 2、Controller原理 K8S采用声明式API方式定义各种资源的预期状态,然后通过一个Reconcile(调谐)过程不断修正状态以达到预期,这个过程就是通过Controller来完成。K8S提供了很多内置Controll…

2024年7月22日 0条评论 2342点热度 6人点赞 jemuel 阅读全文
分布式

6.5840 Lab 1: MapReduce

1、前言 对于后台开发的同学来说,几乎每天都接触分布式系统,如数据库、消息队列、注册中心等各种中间件,那分布式系统的原理是什么?最近学习了MIT 6.824分布式系统课程,感觉不错,也推荐后台开发的同学有兴趣的可以看看,课程主页:https://pdos.csail.mit.edu/6.824/index.html,另外B站上搜索6.824分布式系统可以找到很多视频资源,对英语有困难的同学也可以看看网友整理的课程翻译:https://zhuanlan.zhihu.com/c_1273718607160393728,…

2024年1月13日 0条评论 3225点热度 0人点赞 jemuel 阅读全文
MongoDB

MongoDB源码分析系列1——编译环境搭建

1、背景 MongoDB是主流的NoSQL数据库,其弱化schema的文档存储方式在开发中可以提供很大的便利性,很多项目都将其作为主数据库存储重要的业务数据。作为经常和MongoDB打交道的开发有必要了解其底层原理,这有助于更好的去使用它。本系列会从源码层面介绍MongoDB底层实现,要读懂源码,编译调试是必不可少的,本文先从搭建MongoDB调试环境开始介绍。 2、编译环境 本文介绍的是Ubuntu平台MongoDB编译环境搭建。 2.1 版本说明 本文使用的系统或工具版本号: ubuntu:20.04 gcc:…

2023年11月2日 0条评论 4315点热度 1人点赞 jemuel 阅读全文
Go

GraphQL介绍及使用

1、前言 在目前比较流行的微服务架构中,一般为了将存储和应用解耦,会将存储作为单独的服务提供给应用使用,由存储服务对接底层各种存储引擎,如MySQL、MongoDB、PostgreSQL等。这样可以统一各种存储引擎的差异,使应用对存储引擎无感知。要消除这种差异,需要制定一个统一的接口语言,应用使用该接口语言来操作数据。GraphQL是Facebook开源的一种接口语言,它可以提供灵活、高效的数据操作方式,能够精确的获取指定数据。本文接下来介绍GraphQL及用于构建其Go服务的gqlgen库的使用,最后会涉及到针对…

2023年10月7日 0条评论 3505点热度 1人点赞 jemuel 阅读全文
分布式

分布式共识算法paxos

1、背景 分布式共识算法是指多个参与者针对某件事达成一致,常用于分布式系统中保证多节点间数据一致性,主流的分布式共识算法包括:paxos、raft、zab等。其中paxos是最基础的算法,本文接下来会介绍该算法的流程,以及会用简单的示例说明使用场景,完整示例代码见:https://github.com/jemuelmiao/paxos。 2、算法流程 2.1 概念 提议 proposal:提议 proposal id:提议编号 proposal value:提议值 角色 proposer:提议者 acceptor:…

2023年8月8日 0条评论 2434点热度 1人点赞 jemuel 阅读全文
Go

Go内存管理

1、前言 现在的高级语言为了降低开发难度,都会将内存管理纳入语言特性中,包括内存的申请、回收、释放等极易引起血案的操作。内存操作在程序运行过程中是极其频繁的,而向系统申请、释放内存涉及到系统调用,频繁的系统调用很容易成为性能瓶颈,因此良好的内存管理架构很大程度影响着服务的性能。Go作为新生代热门语言,它的内存管理是如何做的,本文接下来会从源码层面进行详细的介绍。 2、内存结构 Go内存管理借鉴了Google开发的内存管理器tcmalloc的架构。整体架构如下: 内存管理主要分为:系统内存、全局heap内存、每个P管…

2023年5月18日 0条评论 4276点热度 1人点赞 jemuel 阅读全文
123
文章分类
  • Go / 7篇
  • GraphQL / 1篇
  • Java / 2篇
  • K8S / 5篇
  • MongoDB / 1篇
  • MySQL / 6篇
  • 分布式 / 2篇
  • 大数据 / 1篇
最新 热点 随机
最新 热点 随机
K8S源码分析系列3—K8S调度器 K8S源码分析系列2—远程调试K8S组件 Volcano源码分析系列—调度篇 K8S源码分析系列1—搭建K8S调试集群 K8S Controller开发 6.5840 Lab 1: MapReduce
K8S源码分析系列3—K8S调度器
K8S源码分析系列2—远程调试K8S组件 Go channel源码分析 6.5840 Lab 1: MapReduce MongoDB源码分析系列1——编译环境搭建 MySQL源码分析系列3——登录协议解析 GraphQL介绍及使用

COPYRIGHT © 2021 www.miaozhouguang.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

粤ICP备2022006024号

粤公网安备 44030602006568号