自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 go 算法,两个链表的两数相加

go算法,两个链表的两数相加

2024-05-09 15:09:35 266

原创 go设计LRU算法,实现链表和淘汰

go算法,lru最近最少使用优先。

2024-05-07 14:48:57 410 1

原创 go限流、计数器固定窗口算法/计数器滑动窗口算法

问题1:后端接口只能支撑每10秒1w个请求,要怎么来保护它呢?问题2:发短信的接口,不超过100次/时,1000次/24小时,要怎么实现?

2024-04-16 09:58:57 802

原创 kubelet源码分析 kuberuntime的syncpod、createSandbox/createContainer函数(三)

这篇主要介绍了sandbox容器的创建和init容器和普通容器的创建,如何生成基础配置,并且最终grpc调用CRI创建

2023-06-07 15:24:53 1070

原创 kubelet源码分析 kuberuntime的syncpod、killpod函数(二)

这篇介绍如何killsandbox和删掉容器

2023-06-06 17:07:05 825

原创 kubelet源码分析 kuberuntime的syncpod、killpod函数(一)

在 kubelet 源码中,syncPod 函数位于 kuberuntime 包中,其作用是同步 Pod 的状态和运行状态。它是 kubelet 的核心函数之一,负责监视和管理 Pod 的生命周期。具体而言,syncPod 函数执行以下任务:

2023-06-05 15:19:01 1077

原创 kubelet源码分析 v1.27.x新特性 InPlacePodVerticalScaling(就地垂直伸缩)

InPlacePodVerticalScaling(就地垂直伸缩)是 Kubernetes 中v1.27.1的一个特性,它允许在不重启 Pod 的情况下动态调整 Pod 中容器的资源限制(Resource Limits)。传统上,在 Kubernetes 中更新 Pod 的资源限制需要重新创建 Pod,这会导致应用程序中断和服务不可用的情况。但是,通过使用 InPlacePodVerticalScaling,可以实现对 Pod 进行资源限制的动态更新,而无需重新创建 Pod。

2023-05-30 16:34:28 1404

原创 kubelet源码分析 status_manager状态管理器篇

status_manager(状态管理器)是 Kubernetes 中的一个组件,负责管理 Pod、Node、Endpoint 等资源的状态。状态缓存管理:status_manager 维护一个本地缓存,用于存储集群中各个资源的状态信息,如 Pod 的运行状态、Node的健康状态等。通过定期从 API Server 获取最新的状态,并将其存储在缓存中,可以提高性能和响应速度。状态更新和同步:status_manager 负责从 API Server 获取最新的状态信息,并将其更新到本地缓存中。

2023-05-25 17:39:28 1092

原创 kubelet源码分析 添加 /删除pod (SyncPod、SyncTerminatingPod、SyncTerminatedPod)篇

这篇文章是当pod_workers.go流程结束后,重新触发kubelet.go文件的SyncPod、SyncTerminatingPod、SyncTerminatedPod函数进行处理。这三个函数主要是对kubelet这一层最后的校验,然后将要调用CRI部分进行创建容器了。

2023-05-24 15:19:38 1320

原创 k8s 基于MutatingWebhookConfiguration实现node超卖和sidecar注入

k8s 资源对象实现超卖基于MutatingWebhookConfiguration实现node超卖和sidecar注入

2023-05-19 16:23:13 2198

原创 kubelet源码分析 LIST&WATCH源码

kubelet源码分析 LIST&WATCH 是一种用于监视资源变化的机制使用 List&Watch 可以有效地监视 Kubernetes 中的各种资源,包括 Pod、Service、Deployment、ConfigMap 等等。通过 List&Watch,开发人员可以及时了解 Kubernetes 中各种资源的状态和变化情况,从而更好地管理和维护 Kubernetes 集群。本地开发中,用到它的地方很多,也可以通过这个功能开发很多组件。

2023-04-27 15:35:25 931

原创 k8s 源码分析 informer篇

k8s 源码分析 informer篇informer 是 client-go 中的核心工具包,informer 其实就是一个带有本地缓存和索引机制的,可以注册 EventHandler 的 client 本地缓存被称为 Store,索引被称为 Index。使用 informer 的目的是为了减轻 apiserver 数据交互的压力而抽象出来的一个 cache 层,客户端对 apiserver 数据的 读取和监听操作都通过本地 informer进行。

2023-04-24 17:04:07 1349 1

原创 linux cgroup、kubernetes limit

linux cgroup、kubernetes limitCgroups功能的实现依赖于四个核心概念:子系统、控制组、层级树、任务。kubernets设置limit最终设置在了哪里

2023-01-11 16:12:51 600

原创 kubelet源码分析 housekeeping 定时清理

kubelet源码分析 housekeeping 定时清理。housekeeping定时清理所有pod,两秒触发一次清理

2023-01-10 15:21:57 827

原创 kubelet源码分析 syncLoopIteration(二) plegCh、syncCh、relist

kubelet源码分析 syncLoopIteration(二) plegChconfigCh、syncCh、plegCh管道的由来和执行流程

2022-12-16 17:30:22 885

原创 kubelet源码分析 syncLoopIteration(一) configCh

kubelet源码分析 syncLoopIteration函数有四个chan管道。分别是configCh、plegCh、syncCh、housekeepingCh。这篇主要聊一下这四个管道的由来。

2022-12-16 16:25:06 834 2

原创 kubelet源码分析 添加 pod

kubelet源码分析,添加新的pod,syncpod,addPod

2022-12-01 17:21:41 767

原创 kubelet源码分析 更新/调谐/移除/探针 pod

kubelet源码分析 kubelet.go更新/调谐/移除/探针 pod updatePod

2022-11-25 17:59:52 761

原创 kubelet源码 删除pod pod_workers.go(三)

kubelet源码 pod_workers.go分析

2022-11-24 17:02:42 962

原创 kubelet源码 删除pod pod_workers.go(二)

kubelet源码 删除pod(二)

2022-11-22 14:49:58 714

原创 kubelet源码 删除pod(一)

kubelet删除pod源码分析

2022-11-22 14:41:53 2445

原创 dlv调试kubelet

dlv调式kubelet

2022-11-22 14:35:15 639

原创 controller-informer

informer流程

2022-11-22 14:33:05 435

原创 SSL/TLS 协议过程

概念:SSL/TLS 协议位于网络 OSI 七层模型的会话层,用来加密通信一、对称加密和非对称加密1.加密概念A想对B说我喜欢你,这时候C在中间截获了数据,改成了我不喜欢你发送给了B。这样就会导致数据的破坏2.对称加密A和B都通过公钥的方式进行数据传输。A讲要发送的“我喜欢你”通过公钥加密成一股密文发送给B,B在通过公钥解密密文进行传输。这时候如果第三方C用户在中间截取了公钥,就会跟上面一样,随意更改密文传送给C,所以有了非对称加密3.非对称加密非对称加密是用B给A的公钥进行加密,解密只

2022-04-20 14:55:08 1019

原创 go 使用configmap通过自建抢占式锁实现 主备

组件背景程序内已经使用了k8s的client端,为了减少其他组件的依赖,所以不使用redis和etcd。采用configmap实现。因为configmap没有锁机制,所以要自己写这个机制,同样ttl机制也需要代码实现。通过corn定时任务,每50秒所有组件抢占一次锁,如果原有leader是default或已经50秒没有更新ttl时间。则进行抢占。否则退出此次任务。每20秒进行一次ttl的更新。确保主一直在工作,同时有备进行争抢。需要实现的功能抢占式锁主备ttl检查每次验证后确保服务只启动一个,

2022-03-22 16:49:17 485

原创 TCP为什么三次握手四次挥手

TCP为什么三次握手四次挥手。为什么不是四次握手或者五次挥手TCP 中的连接是什么,我们简单总结一下:用于保证可靠性和流控制机制的信息,包括 Socket、序列号以及窗口大小叫做连接。所以,建立 TCP 连接就是通信的双方需要对上述的三种信息达成共识,连接中的一对 Socket 是由互联网地址标志符和端口组成的,窗口大小主要用来做流控制,最后的序列号是用来追踪通信发起方发送的数据包序号,接收方可以通过序列号向发送方确认某个数据包的成功接收1.为什么三次握手三次握手只是tcp中的约束,原因为了解决三个问

2021-08-04 10:34:03 794 1

原创 虚拟内存介绍

**虚拟内存**操作系统中的 CPU 和主内存(Main memory)都是稀缺资源,所有运行在当前操作系统的进程会共享系统中的 CPU 和内存资源,操作系统会使用 CPU 调度器分配 CPU 时间并引入虚拟内存系统以管理物理内存。虚拟内存就是物理内存的一种映射。每个进程在创建时都会绑定一块虚拟内存,需要访问内存时需要虚拟内存的翻译映射到物理内存。如果操作系统发现访问的数据不再内存中,操作系统将以页的方式将数据加载到内存。虚拟内存的三个关键作用:缓存,隔离权限,进程独立1.缓存可以理解为虚拟内存

2021-08-04 09:37:06 322

原创 golang GC垃圾回收机制

**golang GC垃圾回收**垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。Golang中的垃圾回收主要应用三色标记法,GC过程和其他用户goroutine可并发运行,但需要一定时间的STW(stop the world),STW的过程中,CPU不执行用户代码,全部用于垃圾回收,这个过程的影响很大,Golang进行了多次的迭代优化来解决这个问题。一、Go 历史各个版本在 GC 方面的改进

2021-08-03 13:50:12 710

原创 tp5 oss上传

**tp5 oss上传**1进入项目后,安装扩展composer require aliyuncs/oss-sdk-php2.上传文件 public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('image'); // 移动到框架应用根目录/public/uploads/ 目录下 $return =['Code'=>'','Msg'=>''];

2021-05-26 11:03:14 341

原创 php 冒泡排序,插入排序,快速排序,计数排序,反转链表

冒泡排序,插入排序,快速排序。反转链表1.冒泡排序复杂度o(n²),稳定排序,原地排序不需要额外空间从第一个数据和下一个数据比较,如果第一个大于第二个,进行交换。以此类推$arr = ['1', '5', '6', '3', '2', '4', '4', '7', '8', '2']; for ($i = 0; $i <= count($arr); $i++) { for ($j = 0; $j <= 5 - $i - 1; $j++) { if

2020-12-18 14:20:14 242

原创 dockerfile编译安装php74+nginx1.17+supervisord启动

dockerfile编译安装php74+nginx1.17+supervisord启动一些注意事项 注:纯属个人理解1.使用过镜像生成容器,在commit生成镜像,这样的做法闲的臃肿,切无法在镜像启动时候使用一些命令2.docker是后台运行,所以docker里的服务不可以后台运行,应设置前台运行,只要保证服务的生命周期和docker声明周期一样即可保持运行3.dockerfile就是linux下安装过程的命令复制到dockerfile中好下面直接上dockerfile1.Dockerfile(

2020-12-10 15:19:43 1479 4

原创 编译安装php7.4+nginx1.17

编译安装php7.4和nginx1.17. php-fpm.sock监听系统环境centos71.设置时区ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime2.下载wget工具yum -y install wgetyum -y :-y代表全部输入y安装(否则安装时一步已输入y)3.下载php74wget https://www.php.net/distributions/php-7.4.0.tar.gzemm这个过程…漫长的

2020-12-10 14:53:09 725

原创 php验证是否为图片

**php验证是否为图片**需求:前端传过来个图片/语音/视频。存到同一个表。他那里直接传给我路径,后端判断是什么格式需要到函数substr:substr() 函数返回字符串的一部分。strrchr:搜索 “” 在字符串中的位置,并返回从该位置到字符串结尾的所有字符:strpos:查找 “” 在字符串中第一次出现的位置:1、先获取到传过来的路径,进行遍历(伪代码)$file = 接受到的路径foreach ($file as &$row) { $types = '.gif

2020-05-19 14:45:11 343

原创 php无限极分类(导航多级分类)代码+表设计

php无限极分类(导航多级分类)代码+表设计昨天参加个很期待的公司的面试,虽然我博客链接写在了简历上,没想到面试官竟然看了。本来写博客是为了自己记忆更深。现在更有了写点滴的想法。前几天优化一个导航的无限极分类,正好分享一下1.提供了两个接口。第一个为最上层导航。第二个为各级子导航。2.面向对象过程编写。控制器调用服务器层,服务层调用模型层。3.因为想到服务器的优化,所以采用了微服务设计。...

2020-04-14 14:11:16 1432

转载 CDN是什么意思 CDN加速服务有什么功能和作用?

看了服务器的优化,关注到了CDN,不是很了解。转载了一篇感觉不错的文章CDN一词相信很多朋友都不会陌生,网上也经常会看到相关报道。前段时间各大CDN服务商响应总理号召,CDN也都提速降费,像网宿CDN,阿里云CDN都有不小的降价幅度,很多站长都知道CDN加速可以加速网站的打开速度及用户下载资源的速度,而同时也有不少小白朋友还不清楚CDN是什么?有什么用?它是如何实现加速的呢?接下来脚本之家小编将...

2020-04-10 14:10:10 1264

原创 windows下安装 swoole

**windows下安装 swoole Cygwin安装swoole**swoole 是php 的扩展,只支持在Linux 下,所以在window 下需要 安装cgywin,Cygwin是一个在windows平台上运行的类UNIX模拟环境cgywin 地址:http://www.cygwin.com/。这里注意下载对版本swoole 地址:https://github.com...

2020-04-01 13:04:08 3794 1

原创 php操作redis实现朋友圈投票

php操作redis实现朋友圈投票案例需求1:每人每天可投票一次2:有固定的被投票人实现1.新建一个vote类,有user投票人和vote被投票人两个变量use think\cache\driver\Redis;class Vote{ public $user;//投票者 public $vote;//被投票者 function __construct...

2020-03-19 16:33:00 13712

原创 docker使用dockerfile创建镜像

docker使用dockerfile创建镜像1、创建一个dockerfilemkdir Dockerfilecd Dockerfiletouch Dockerfilevi Dockerfiletouch demo1.txtvi demo1.txt创建一个dockerfile文件夹,同时创建一个Dockerfile文件,把下面内容写入到DockerfileFROM nginxM...

2019-12-27 17:19:34 3126

原创 docker安装redis

**docker安装redis**1、拉取redisdocker pull redis:latest2、查看是否安装docker images3、启动redis容器docker run -itd --name redis-demo -p 32771:6379 redis我的6379端口已经使用,所以映射到了32771端口,注:安全组要放行端口4、进入redisdo...

2019-12-26 16:53:41 2963

原创 Redis 持久化之RDB和AOF

**Redis 持久化之RDB和AOF**Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识持久化。RDB 详解RDB 是 Redis 默认的持久化方案...

2019-12-24 16:20:09 13956

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除