编程技术分享

  • 首页
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条评论 34点热度 0人点赞 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条评论 2023点热度 8人点赞 jemuel 阅读全文
K8S

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

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

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

K8S Controller开发

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

2024年7月22日 0条评论 2175点热度 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条评论 2927点热度 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条评论 4061点热度 1人点赞 jemuel 阅读全文
Go

GraphQL介绍及使用

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

2023年10月7日 0条评论 3354点热度 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条评论 2283点热度 1人点赞 jemuel 阅读全文
Go

Go内存管理

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

2023年5月18日 0条评论 4087点热度 1人点赞 jemuel 阅读全文
MySQL

大数据平台之binlog采集方案

1、背景 大数据平台的采集功能是从外部数据源采集数据存储到hive,采集方式分为全量采集、增量采集,增量采集适用于数据规模较大情况,有很多使用场景,但是在增量采集时,平台只能感知数据新增、更新,无法感知到数据删除,为了解决这个问题,本文选用了常用的外部数据源mysql为例进行binlog采集方案介绍。 2、方案 针对mysql数据源,可以通过拉取binlog来回放每条SQL语句,这样不管是新增、更新、删除都能进行处理,但是前提条件是需要mysql服务开启binlog,并且模式为row,因为row模式会存储每条记录的…

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

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

THEME KRATOS MADE BY VTROIS

粤ICP备2022006024号

粤公网安备 44030602006568号