博客园 - 8小时
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=666051
2020-04-24T06:40:19Z
8小时
https://www.cnblogs.com/buyicoding/
feed.cnblogs.com
https://www.cnblogs.com/buyicoding/p/12767356.html
图解Knative核心组件Serving基础设计 - 8小时
最近闲下来,打算把Knative的核心组件Serving给学习下,会继续采用k8s源码学习的方式,管中窥豹以小击大,学习serving的主要目标: 可观测性基础设施、自动伸缩、流量管理等核心组件的设计与实现,今天先简单臆测下,感兴趣的同学, 一起来学习吧 1. 基于云原生的单体应用构建 大多数公司的
2020-04-24T06:40:00Z
2020-04-24T06:40:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】最近闲下来,打算把Knative的核心组件Serving给学习下,会继续采用k8s源码学习的方式,管中窥豹以小击大,学习serving的主要目标: 可观测性基础设施、自动伸缩、流量管理等核心组件的设计与实现,今天先简单臆测下,感兴趣的同学, 一起来学习吧 1. 基于云原生的单体应用构建 大多数公司的 <a href="https://www.cnblogs.com/buyicoding/p/12767356.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12603909.html
图解kubernetes批处理Job控制器的关键设计 - 8小时
K8s中的批处理任务模块主要是由Job控制器完成,今天我们就来关注下其底层的关键设计,包括完成状态、并行模式、并行策略等关键机制 1. 基础概念 在聊k8s的任务模块的实现的时候,我们先看一下传统的任务系统的设计与实现,然后聊下基于k8s的基础的概念 1.1 传统的任务系统设计 传统的任务系统设计主
2020-03-31T03:24:00Z
2020-03-31T03:24:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】K8s中的批处理任务模块主要是由Job控制器完成,今天我们就来关注下其底层的关键设计,包括完成状态、并行模式、并行策略等关键机制 1. 基础概念 在聊k8s的任务模块的实现的时候,我们先看一下传统的任务系统的设计与实现,然后聊下基于k8s的基础的概念 1.1 传统的任务系统设计 传统的任务系统设计主 <a href="https://www.cnblogs.com/buyicoding/p/12603909.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12591259.html
图解kubernetes控制器StatefulSet核心实现原理 - 8小时
StatefulSet是k8s中有状态应用管理的标准实现,今天就一起来了解下其背后设计的场景与原理,从而了解其适用范围与场景 1. 基础概念 首先介绍有状态应用里面的需要考虑的一些基础的事情,然后在下一章我们再去看statefulSet的关键实现 1.1 有状态与无状态 在日常开发的应用中,通常可以
2020-03-29T03:04:00Z
2020-03-29T03:04:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】StatefulSet是k8s中有状态应用管理的标准实现,今天就一起来了解下其背后设计的场景与原理,从而了解其适用范围与场景 1. 基础概念 首先介绍有状态应用里面的需要考虑的一些基础的事情,然后在下一章我们再去看statefulSet的关键实现 1.1 有状态与无状态 在日常开发的应用中,通常可以 <a href="https://www.cnblogs.com/buyicoding/p/12591259.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12250480.html
图解kubernetes调度器SchedulerExtender扩展 - 8小时
在kubernetes的scheduler调度器的设计中为用户预留了两种扩展机制SchdulerExtender与Framework,本文主要浅谈一下SchdulerExtender的实现, 因为还有一篇Framework, 所以本文的k8s代码切到1.18版本 1. 设计思路 1.1 实现机制 S
2020-02-01T14:20:00Z
2020-02-01T14:20:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】在kubernetes的scheduler调度器的设计中为用户预留了两种扩展机制SchdulerExtender与Framework,本文主要浅谈一下SchdulerExtender的实现, 因为还有一篇Framework, 所以本文的k8s代码切到1.18版本 1. 设计思路 1.1 实现机制 S <a href="https://www.cnblogs.com/buyicoding/p/12250480.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12217062.html
图解kubernetes调度器抢占流程与算法设计 - 8小时
抢占调度是分布式调度中一种常见的设计,其核心目标是当不能为高优先级的任务分配资源的时候,会通过抢占低优先级的任务来进行高优先级的调度,本文主要学习k8s的抢占调度以及里面的一些有趣的算法 1. 抢占调度设计 1.1 抢占原理 抢占调度原理其实很简单就是通过高优先级的pod抢占低优先级的pod资源,从
2020-01-20T02:55:00Z
2020-01-20T02:55:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】抢占调度是分布式调度中一种常见的设计,其核心目标是当不能为高优先级的任务分配资源的时候,会通过抢占低优先级的任务来进行高优先级的调度,本文主要学习k8s的抢占调度以及里面的一些有趣的算法 1. 抢占调度设计 1.1 抢占原理 抢占调度原理其实很简单就是通过高优先级的pod抢占低优先级的pod资源,从 <a href="https://www.cnblogs.com/buyicoding/p/12217062.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12208880.html
图解kubernetes服务打散算法的实现源码 - 8小时
在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,no
2020-01-18T05:54:00Z
2020-01-18T05:54:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,no <a href="https://www.cnblogs.com/buyicoding/p/12208880.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12206536.html
图解kubernetes scheduler基于map/reduce模式实现优选阶段 - 8小时
优选阶段通过分map/reduce模式来实现多个node和多种算法的并行计算,并且通过基于二级索引来设计最终的存储结果,从而达到整个计算过程中的无锁设计,同时为了保证分配的随机性,针对同等优先级的采用了随机的方式来进行最终节点的分配,如果大家后续有类似的需求,不妨可以借鉴借鉴 1. 设计基础 1.1
2020-01-17T08:43:00Z
2020-01-17T08:43:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】优选阶段通过分map/reduce模式来实现多个node和多种算法的并行计算,并且通过基于二级索引来设计最终的存储结果,从而达到整个计算过程中的无锁设计,同时为了保证分配的随机性,针对同等优先级的采用了随机的方式来进行最终节点的分配,如果大家后续有类似的需求,不妨可以借鉴借鉴 1. 设计基础 1.1 <a href="https://www.cnblogs.com/buyicoding/p/12206536.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12202575.html
图解kubernetes调度器预选设计实现学习 - 8小时
Scheduler中在进行node选举的时候会首先进行一轮预选流程,即从当前集群中选择一批node节点,本文主要分析k8s在预选流程上一些优秀的筛选设计思想,欢迎大佬们指正 1. 基础设计 1.1 预选场景 预选顾名思义就是从当前集群中的所有的node中,选择出满足当前pod资源和亲和性等需求的no
2020-01-16T09:59:00Z
2020-01-16T09:59:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】Scheduler中在进行node选举的时候会首先进行一轮预选流程,即从当前集群中选择一批node节点,本文主要分析k8s在预选流程上一些优秀的筛选设计思想,欢迎大佬们指正 1. 基础设计 1.1 预选场景 预选顾名思义就是从当前集群中的所有的node中,选择出满足当前pod资源和亲和性等需求的no <a href="https://www.cnblogs.com/buyicoding/p/12202575.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12195518.html
图解kubernetes调度器ScheduleAlgorithm核心实现学习框架设计 - 8小时
ScheduleAlgorithm是一个接口负责为pod选择一个合适的node节点,本节主要解析如何实现一个可扩展、可配置的通用算法框架来实现通用调度,如何进行算法的统一注册和构建,如何进行metadata和调度流程上下文数据的传递 1. 设计思考 1.1 调度设计 1.1.1 调度与抢占 当接收到
2020-01-15T02:48:00Z
2020-01-15T02:48:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】ScheduleAlgorithm是一个接口负责为pod选择一个合适的node节点,本节主要解析如何实现一个可扩展、可配置的通用算法框架来实现通用调度,如何进行算法的统一注册和构建,如何进行metadata和调度流程上下文数据的传递 1. 设计思考 1.1 调度设计 1.1.1 调度与抢占 当接收到 <a href="https://www.cnblogs.com/buyicoding/p/12195518.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12190532.html
图解kubernetes调度器SchedulerCache核心源码实现 - 8小时
SchedulerCache是kubernetes scheduler中负责本地数据缓存的核心数据结构, 其实现了Cache接口,负责存储从apiserver获取的数据,提供给Scheduler调度器获取Node的信息,然后由调度算法的决策pod的最终node节点,其中Snapshot和节点打散算法
2020-01-14T02:04:00Z
2020-01-14T02:04:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】SchedulerCache是kubernetes scheduler中负责本地数据缓存的核心数据结构, 其实现了Cache接口,负责存储从apiserver获取的数据,提供给Scheduler调度器获取Node的信息,然后由调度算法的决策pod的最终node节点,其中Snapshot和节点打散算法 <a href="https://www.cnblogs.com/buyicoding/p/12190532.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12186315.html
图解kubernetes调度器SchedulingQueue核心源码实现 - 8小时
SchedulingQueue是kubernetes scheduler中负责进行等待调度pod存储的对,Scheduler通过SchedulingQueue来获取当前系统中等待调度的Pod,本文主要讨论SchedulingQueue的设计与实现的各种实现, 了解探究其内部实现与底层源码,本系列代码
2020-01-13T03:04:00Z
2020-01-13T03:04:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】SchedulingQueue是kubernetes scheduler中负责进行等待调度pod存储的对,Scheduler通过SchedulingQueue来获取当前系统中等待调度的Pod,本文主要讨论SchedulingQueue的设计与实现的各种实现, 了解探究其内部实现与底层源码,本系列代码 <a href="https://www.cnblogs.com/buyicoding/p/12186315.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12172520.html
图解 kubernetes scheduler 架构设计系列-初步了解 - 8小时
资源调度基础 scheudler是kubernetes中的核心组件,负责为用户声明的pod资源选择合适的node,同时保证集群资源的最大化利用,这里先介绍下资源调度系统设计里面的一些基础概念 基础任务资源调度 基础的任务资源调度通常包括三部分: | 角色类型 | 功能 | | | | | node
2020-01-09T09:15:00Z
2020-01-09T09:15:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】资源调度基础 scheudler是kubernetes中的核心组件,负责为用户声明的pod资源选择合适的node,同时保证集群资源的最大化利用,这里先介绍下资源调度系统设计里面的一些基础概念 基础任务资源调度 基础的任务资源调度通常包括三部分: | 角色类型 | 功能 | | | | | node <a href="https://www.cnblogs.com/buyicoding/p/12172520.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12155169.html
图解Go语言的context了解编程语言核心实现源码 - 8小时
基础筑基 基于线程的编程语言中的一些设计 ThreadGroup ThreadGroup是基于线程并发的编程语言中常用的一个概念,当一个线程派生出一个子线程后通常会加入父线程的线程组(未指定线程组的情况下)中, 最后可以通过ThreadGroup来控制一组线程的退出等操作, 然后在go语言中goro
2020-01-06T02:41:00Z
2020-01-06T02:41:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】基础筑基 基于线程的编程语言中的一些设计 ThreadGroup ThreadGroup是基于线程并发的编程语言中常用的一个概念,当一个线程派生出一个子线程后通常会加入父线程的线程组(未指定线程组的情况下)中, 最后可以通过ThreadGroup来控制一组线程的退出等操作, 然后在go语言中goro <a href="https://www.cnblogs.com/buyicoding/p/12155169.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12117370.html
图解Go里面的sync.Map了解编程语言核心实现源码 - 8小时
基础筑基 在大多数语言中原始map都不是一个线程安全的数据结构,那如果要在多个线程或者goroutine中对线程进行更改就需要加锁,除了加1个大锁,不同的语言还有不同的优化方式, 像在java和go这种语言其实都采用的是链表法来进行map的实现,本文也主要分析这种场景 并发安全的map实现的三种方式
2019-12-29T17:16:00Z
2019-12-29T17:16:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】基础筑基 在大多数语言中原始map都不是一个线程安全的数据结构,那如果要在多个线程或者goroutine中对线程进行更改就需要加锁,除了加1个大锁,不同的语言还有不同的优化方式, 像在java和go这种语言其实都采用的是链表法来进行map的实现,本文也主要分析这种场景 并发安全的map实现的三种方式 <a href="https://www.cnblogs.com/buyicoding/p/12117370.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/buyicoding/p/12082162.html
图解Go里面的互斥锁mutex了解编程语言核心实现源码 - 8小时
1. 锁的基础概念 1.1 CAS与轮询 1.1.1 cas实现锁 在锁的实现中现在越来越多的采用CAS来进行,通过利用处理器的CAS指令来实现对给定变量的值交换来进行锁的获取 1.1.2 轮询锁 在多线程并发的情况下很有可能会有线程CAS失败,通常就会配合for循环采用轮询的方式去尝试重新获取锁
2019-12-23T01:36:00Z
2019-12-23T01:36:00Z
8小时
https://www.cnblogs.com/buyicoding/
【摘要】1. 锁的基础概念 1.1 CAS与轮询 1.1.1 cas实现锁 在锁的实现中现在越来越多的采用CAS来进行,通过利用处理器的CAS指令来实现对给定变量的值交换来进行锁的获取 1.1.2 轮询锁 在多线程并发的情况下很有可能会有线程CAS失败,通常就会配合for循环采用轮询的方式去尝试重新获取锁 <a href="https://www.cnblogs.com/buyicoding/p/12082162.html" target="_blank">阅读全文</a>