Go语言中文网 为您找到相关结果 3164

图解kubernetes Kubelet驱逐管理关键实现

驱逐管理是kubelet自我保护的一种机制,当资源缺乏的时候,通过阈值和策略主动驱逐部分的Pod从而保持系统的资源水位在一个合理的范围内,本身的策略官方文档上已经写的很详细,今天只是看下其在代码上的一些设计 1. 设计臆测 1.1 驱逐总体流程 驱逐总体流程主要是通过获取当前使用资源的统计信息和当前活跃的Pod容器列表,然后结合资源阈值来决策是否需要进行Pod的驱逐 1.2 基于观察者模式的观测 在驱逐管理器中基于观察者模式实现对特殊资源驱逐管理的支持,比如内存资源,在某些情况下即时当前的资源水位没有达到阈值,也可能会触发oom killer这个时候,对应的ThresholdNotifier也会尝试进行状态同步,从而确定是否要主动的驱逐一些节点, 目前这个特性应该还没开, 同理如果这个资源有...阅读全文

博文 2020-02-25 13:34:30 8小时_2020

第三十一章:JWT与Golang

JWT基础概念 JWT是 json web token的简称 其中的 token 是令牌的意思, 其实这个令牌实质上是服务端生成的一段有规则的字符串 我们看看JWT官方自己对其的定义 JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be...阅读全文

博文 2020-04-05 20:32:50 captain89

Go语言入门(五)结构体&练习

结构体&练习 结构体 定义 Go中的面向对象是通过 struct来实现的,struct是用户自定义的类型 //定义结构体 /定义结构体 type User struct { Name string Gender string Age int AvatarUrl string } func useStruct() { //初始化结构体1 var user1 User user1.Name = "jeson" user1.Gender = "male" user1.Age = 20 user1.AvatarUrl = "http://baidu.com" //初始化结构体2 user2 := User{ Name: "miky", Gender: "female", Age: 18, } fmt...阅读全文

博文 2020-03-26 23:33:12 wx5b285b48ed74e

在 Go 语言项目中使用 Travis CI

文链接:在 Go 语言项目中使用 Travis CI Travis CI 是一种免费的持续集成服务,而 持续集成(CI, Continuous integration) 是一种软件工程流程,概括来讲就是多提交小的 Commit 来更快的发现软件的 Bug,从而提高软件质量。 本文会详细介绍如何在 Go 语言项目中使用 Travis CI。 准备工作 GitHub 账号:用于保存项目。 Travis CI 账号:点击右上角的 Sign in with GitHub 即可通过 GitHub 创建关联账号。 示例项目 hello,它包含三个文件: hello.go: package hello func Hello() string { return "Hello, World!" } hello...阅读全文

博文 2020-05-31 23:32:48 line

前端工程师吐后端工程师(第九讲)——最不擅长的数据库操作

第八讲中我们介绍了如果使用Gin写一些常用的接口,本讲我们主要介绍一下数据库如何操作。这一讲没有具体页面,可能对于前端工程师会不太习惯。首先我们要单件一个mysql数据库环境。如果不会的话可以参考这个教程https://www.jianshu.com/p/3a0de5da49f3,在搭建完成MySQL,并且启动MySQL之后。数据的管理员账户名设置成root,数据库密码设置为00000000。因为后续我们在代码中使用的数据库相关代码,会以这个为准.我们可以通过mysql -h 127.0.0.1 -P 3306 -u root -p 000000000 指令来连接刚刚搭建在本机上的数据库。127.0.0.1为本机IP,3306为数据库具体端口,root为数据库用户名,000000000为数据...阅读全文

博文 2020-01-08 19:32:47 陈辰CC老师

图解kubernetes调度器SchedulingQueue核心源码实现

SchedulingQueue是kubernetes scheduler中负责进行等待调度pod存储的对,Scheduler通过SchedulingQueue来获取当前系统中等待调度的Pod,本文主要讨论SchedulingQueue的设计与实现的各种实现, 了解探究其内部实现与底层源码,本系列代码基于kubernets1.1.6分析而来,图解主要位于第二部分 SchedulingQueue设计 队列与优先级 队列与场景 类型 描述 通常实现 队列 普通队列是一个FIFO的数据结构,根据元素入队的次序依次出队 数组或者链表 优先级队列 优先级队列通常是指根据某些优先级策略,高优先级会优先被获取 数组或者树 其实在大多数的调度场景中,大多都是采用优先级队列来实现,优先满足优先级比较高的任务或者...阅读全文

博文 2020-01-13 11:34:24 代码仔

Docker基础(2) 实践篇

Docker基础(2) 实践篇 Docker的指令系统 全局指令 Docker仓库管理 Docker镜像管理 Dockerfile Docker容器管理 Docker Compose 命令的嵌套 Docker的指令系统 Docker指令的操作对象主要针对四个方面: 针对守护进程的系统资源设置和全局信息的获取。比如:docker info、docker deamon等。 针对Docker仓库的查询、下载操作。比如:docker search、docker pull等。 针对Docker镜像的查询、创建、删除操作。比如:docker images、docker build等。 针对Docker容器的查询、创建、开启、停止操作。比如:docker ps、docker run、docker star...阅读全文

博文 2020-03-02 01:32:39 zhixin9001

golang结构体

定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下: type struct_variable_type struct { member definition member definition ... member definition } 结构体声明格式: variable_name := structure_variable_type {value1, value2...valuen} 或 variable_name := structure_variable_type { key1: v...阅读全文

博文 2020-01-01 02:32:54 程序小白菜

图解kubernetes Kubelet驱逐管理关键实现

驱逐管理是kubelet自我保护的一种机制,当资源缺乏的时候,通过阈值和策略主动驱逐部分的Pod从而保持系统的资源水位在一个合理的范围内,本身的策略官方文档上已经写的很详细,今天只是看下其在代码上的一些设计 1. 设计臆测 1.1 驱逐总体流程 驱逐总体流程主要是通过获取当前使用资源的统计信息和当前活跃的Pod容器列表,然后结合资源阈值来决策是否需要进行Pod的驱逐 1.2 基于观察者模式的观测 在驱逐管理器中基于观察者模式实现对特殊资源驱逐管理的支持,比如内存资源,在某些情况下即时当前的资源水位没有达到阈值,也可能会触发oom killer这个时候,对应的ThresholdNotifier也会尝试进行状态同步,从而确定是否要主动的驱逐一些节点, 目前这个特性应该还没开, 同理如果这个资源有...阅读全文

Nsq原理分析(二)

在上一篇文章中对nsq进行了简单的介绍,从nsq 的golang的客户端代码分析了一下nsq的使用,这篇文章会分析nsqd的代码 Nsqd代码分析 nsqd做了什么 nsqd接收对topic、channel的创建以及对消息的存储和分发 nsqd向nsqlookup注册自己的服务信息,ip 和端口,向nsqlookup注册自己的元数据信息(topic、channel),nsqd也会向nsqdlook查询topic、和channel信息 nsqadmin 是一个简单的管理界面,通过它可以查询topic、channel、消费者等等一些基本信息,nsqadmin是从 nsqlookup中获取信息的,通过nsqadmin也可以创建topic、channel,创建到了nsqlookup中,在nsqloo...阅读全文

博文 2020-05-29 22:32:44 朱伟

图解kubernetes Pod生命周期事件生成器

PLEG(PodLifecycleEventGenerator)主要是用于周期性检测Pod的运行状态,从而对比Pod前后状态生成事件从而触发kubelet进行Pod容器状态的校证,让我们一起来初探下其内部实现机制 1. 图解设计 1.1 Pod事件生成 Pod事件生成主要是根据对应Pod前后的状态对比来实现,首先通过runtime来获取当前节点的所有Pod的列表,并将对应的状态进行保存,这样在下一个轮训周期就可以通过前后状态的对比去发现状态发生改变的Pod的容器,并且产生对应的事件 1.2 事件通知与状态同步 Pod事件生成之后会通过管道将对应的事件同步给状态同步线程,状态同步线程感知到Pod的变更事件后,会与Pod的目标状态进行对比同步,并调用Runtime来进行最终校证操作的执行,同时在...阅读全文

2.7 Socket Programming: Creating Network Applications

在网络应用开发中,开发者首先要做的一个决定是使用 TCP 还是 UDP 作为传输层协议。TCP 是基于连接,并且基于字节流提供可靠的数据传输的协议。而 UDP 是无连接,通过数据包发送数据,并不保证送达的协议。 我们将在这一节分别利用 UDP 和 TCP 实现一套 client-server 程序。 该程序主要完成的功能是: client 从键盘读取一行字符串,并发给 server server 收到字符串并转换成大写 server 将修改后的字符串发送给 client client 收到修改后的数据并显示 2.7.1 Socket Programming with UDP UDP 在发送数据包时,需要先在数据包中附加地址的信息。网络会利用这个信息 route 数据包到达接收程序。 附加的地...阅读全文

博文 2020-05-13 03:32:47 找不到工作

在 Go 语言项目中使用 Travis CI

文链接:在 Go 语言项目中使用 Travis CI Travis CI 是一种免费的持续集成服务,而 持续集成(CI, Continuous integration) 是一种软件工程流程,概括来讲就是多提交小的 Commit 来更快的发现软件的 Bug,从而提高软件质量。 本文会详细介绍如何在 Go 语言项目中使用 Travis CI。 Travis CI logo 准备工作 GitHub 账号:用于保存项目。 Travis CI 账号:点击右上角的 Sign in with GitHub 即可通过 GitHub 创建关联账号。 示例项目 hello,它包含三个文件: hello.go: package hello func Hello() string { return "Hello, ...阅读全文

博文 2020-05-31 21:34:47 sulinehk

图解kubernetes调度器SchedulingQueue核心源码实现

SchedulingQueue是kubernetes scheduler中负责进行等待调度pod存储的对,Scheduler通过SchedulingQueue来获取当前系统中等待调度的Pod,本文主要讨论SchedulingQueue的设计与实现的各种实现, 了解探究其内部实现与底层源码,本系列代码基于kubernets1.1.6分析而来 SchedulingQueue设计 队列与优先级 队列与场景 类型 描述 通常实现 队列 普通队列是一个FIFO的数据结构,根据元素入队的次序依次出队 数组或者链表 优先级队列 优先级队列通常是指根据某些优先级策略,高优先级会优先被获取 数组或者树 其实在大多数的调度场景中,大多都是采用优先级队列来实现,优先满足优先级比较高的任务或者需求,从而减少后续高优...阅读全文

博文 2020-01-13 13:32:42 仔仔