自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

山高人为峰

主要记录云计算相关学习

  • 博客(50)
  • 收藏
  • 关注

原创 GoLang技术栈相关学习文章整理

Protobufhttps://blog.csdn.net/zxhoo/article/details/53228303 图解Protobuf编码https://lessisbetter.site/2019/08/26/protobuf-in-go/ Go是如何实现protobuf的编解码的(1):原理https://lessisbetter.site/2019/08/27/proto...

2020-05-09 20:14:08 2271

转载 【Redis】冷备份、温备份和热备份

按备份系统的准备程度,可将其分为 冷备份、温备份和热备份三大类 :1、冷备份备份系统未安装或未配置成与当前使用的系统相同或相似的运行环境,应用系统数据没有及时装入备份系统。一旦发生灾难,需安装配置所需的运行环境,用数据备份介质(磁带或光盘) 恢复应用数据,手工逐笔或自动批量追补孤立数据,将终端用户通过通讯线路切换到备份系统,恢复业务运行。 优点 : 设备投资较少,节省通信费用...

2020-04-30 08:49:14 3305

转载 【Redis】在建立连接时,为什么要禁用Nagle 算法

1. Nagle算法:是为了减少广域网的小分组数目,从而减小网络拥塞的出现;该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要收集这些少量的分组,并在ack到来时以一个分组的方式发送出去;其中小分组的定义是小于MSS的任何分组;该算法的优越之处在于它是自适应的,确认到达的越快,数据也就发哦送的越快;而在希望减少微小分...

2020-04-29 20:09:44 1473

原创 【Golang】unsafe包使用方法总结——“不安全”的指针操作

一、概述Go虽然具有指针,但出于安全性的设计,与C/C++的指针相比,存在诸多限制:Go的指针不能进行数学计算。 不同类型的指针之间无法相互转换,也不能相互赋值。 不同类型的指针不能使用==和!=比较但Go团队并没有完全没收编程人员操纵指针的自由,提供了unsafe包的unsafe.Pointer类型作为非安全的指针,并提供了少量但足够的方法,让我们能像在C/C++上一样进行“无视类...

2020-02-27 15:11:54 3144

原创 【Golang】源码学习:runtime/chan.go:了解channel背后的实现原理

一、概述Go通过channel在独立工作的Goroutine之间实现了通信,其背后是Go的CSP并发模型,被描述为:Do not communicate by sharing memory; instead, share memory by communicating.不要通过共享内存的方式来通信,相反,要通过通信来共享内存。这一策略在Go中的实现,就是将channel即管道...

2020-02-24 15:11:53 599

转载 【Golang】defer陷阱和执行原理

你是不是觉得defer很简单、很好用,但也许你掉坑里了都不知道!这篇文章不介绍defer的常用功能,而是介绍你在用defer时,也许会踩的坑。defer允许我们进行一些函数执行完成后的收尾工作,并且代码更加简洁,例如:1、关闭文件流:// open a filedefer file.Close()2、解锁一个加锁的资源mu.Lock()defer mu.Unlock...

2020-02-21 14:58:20 431

原创 【Golang】源码学习:contex包——从功能到源码理解Go Context机制(二)

第一部分链接:https://blog.csdn.net/qq_38093301/article/details/104370248三、源码学习Context包高度提炼了功能边界,对外只暴露统一的Context接口,最大程度的隐藏的实现细节,对于接口的设计非常简洁。、Context接口的定义如下:...

2020-02-18 23:23:11 413

原创 【Golang】源码学习:contex包——从功能到源码理解Go Context机制(一)

最近在学习一些Go网络编程相关内容,发现无论是普通的web项目,还是groupcache和gRPC等大多数开源分布式项目都大量使用了context包以完成Goroutine的管理工作,在深入学习这项项目之前,有必要对context包进行一个细致的学习和整理,了解其背后的源码,本文边学编写,参考了比较热门的关于context的一些文章,才疏学浅,欢迎指正。一、从需求到功能GoLang通过开启...

2020-02-18 16:35:57 552

原创 【Golang】源码学习:net/rpc包——基于Http协议的 RPC 服务(二)

第一部分链接:https://blog.csdn.net/qq_38093301/article/details/1042105923、客户端请求发起在与RPC服务端建立http连接并验证后,客户端程序将使用本次的底层TCP连接Conn对象建立一个Client实例,并开启一个协程接受服务端返回消息。Client实例建立过程:func NewClient(conn io.ReadW...

2020-02-09 18:31:03 541

原创 【Golang】源码学习:net/rpc包——基于Http协议的 RPC 服务(一)

一、基本原理 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 具体原理参考:https://www.jianshu.com/p/7d6853140e13 https://developer.51cto.com/ar...

2020-02-08 23:33:28 1118

原创 【Golang】反射技术:reflect包的使用方法总结

阅读Go源码时,发现很多库都离不开reflect包提供的强大的反射技术,但在基础学习时对这部分一闪而过,现在重新全面学习了一遍,主要使用方法都总结在下面的代码中,自以为应该是比较详细的,后期学习过程中如发现疏漏,再做补充。 可以看到reflect包让我们获得了对于一个空接口中包含的值充分了解的能力,让我们的程序能够在运行时检查类型和变量,解析出一个未知类型背后的结构,...

2020-02-08 20:06:44 2897

转载 SSL协议握手过程中的报文解析

SSL建立握手连接目的:1.身份的验证,client与server确认对方是它相连接的,而不是第三方冒充的,通过证书实现2.client与server交换session key,用于连接后数据的传输加密和hash校验简单的SSL握手连接过程(仅Server端交换证书给client):1.client发送ClientHello,指定版本,随机数(RN),所有支持的密码套件(Ciphe...

2020-01-12 15:40:19 1079

转载 【Golang】Golang 推荐的命名规范

Golang 推荐的命名规范很少见人总结一些命名规范,也可能是笔者孤陋寡闻, 作为一个两年的golang 开发者, 我根据很多知名的项目,如 moby, kubernetess 等总结了一些常见的命名规范。 命名规范可以使得代码更容易与阅读, 更少的出现错误。如有不同意见欢迎吐槽、讨论。文件命名规范由于文件跟包无任何关系, 而又避免windows大小写的问题,所以推荐的明明规范如下...

2019-12-25 16:16:08 770 1

转载 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法

一、匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中。Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m...

2019-12-25 15:51:57 296

转载 unicode 、utf-8 、utf-16、ascii 、gbk 、gb2312之间的联系和区别

一、计算机的由来很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同...

2019-12-24 18:12:50 189

转载 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

编译型语言和解释型语言1、编译型语言需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言...

2019-12-24 17:52:57 259 1

原创 【Kubernetes】Service学习(二)DNS服务的搭建和配置

此文为学习《Kubernetes权威指南》和阿里云原生公开课的相关笔记一、集群范围内的DNS服务:coreDNS作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,这就需要一个进群范围内的DNS服务来完成从服务到ClusterIP的解析。DNS服务在K8s上经历3个阶段的发展,从SkyDNS到KubeDNS,从1.11版本开始来到了coreDNS。CoreDNS作为...

2019-12-24 14:50:26 810

原创 【Kubernetes】在Pod内部无法使用coredns解析域名问题

在学习coredns部署时出现了这种情况在Pod外部,即集群宿主机上是没问题的# nslookup cassandra.default.svc.cluster.local 10.96.0.10Server: 10.96.0.10Address: 10.96.0.10#53Name: cassandra.default.svc.cluster.local...

2019-12-24 10:23:20 3719 1

转载 【Kubernetes】Kubernetes的yaml文件中command的使用

command就是将命令在创建的容器中执行,有这些命令去完成一些工作,command用法和dockerfile中的cmd差不多,command可以单独写,也可以分成command和参数args,可以参考之前的CMD去理解,例如下面的写法都可以。command: ['/bin/sh']command: ["rm", "-fr", "/var/lib/dbs/lost+found"]...

2019-12-23 18:14:13 3361

原创 【Kubernetes】使用kubeadm部署Kubernetes后,各组件配置文件所在的位置

在的二进制部署方式中,kubelet、etcd、kube-apiServer、kube-controller-manager、kube-scheduler组件均作为一项系统服务部署,服务配置文件位于/usr/lib/systemd/system/<object-name.service>,启动参数配置位于/etc/kubernetes/<object-name>。而ku...

2019-12-22 23:36:02 5328 1

原创 【Kubernetes】Service学习(一)Service的基本用法

此文为学习《Kubernetes权威指南》和阿里云原生公开课的相关笔记学习笔记:Pod作为K8s中调度和使用的基本单位,承担了在集群中建立容器、部署基本功能的任务,而RC/RS/Delpoymet/DaemonSet/Job/StatefulSet等类型的资源对象担当控制器,负责Pod的创建和生命周期的管理,上述的这些工作使得一个K8s集群能够有序的被部署进行设计者想要安排的任务,然而一个...

2019-12-21 00:36:22 540

原创 【Kubernetes】Pod学习(十五)Deployment部署的回滚、暂停和恢复

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:Deployment具备升级的功能,允许我们在运行过程中升级Deployment到新的运行版本,与之对应的是,在某些情况下(比如新的Deployment不稳定时)可能需要将Deployment回滚到旧版本。在默认情况下,所有Deployment的发布历史都被保留在系统中,以便我们随时进行回滚。值得注意的是,只有在Depl...

2019-12-20 00:06:16 3785

原创 【Kubernetes】Pod学习(十四)Deployment的升级策略

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:对于大规模集群而言,如何在进行服务升级的同时保持可用性一直是一个难点。作为Pod副本管理控制器,Deployment可以配置Pod发布和更新方式,保证在Pod升级过程中不存在Pod不可用的问题。如果Pod是在Deployment上创建的,只需要在运行时修改Deployment的Pod定义或者镜像名称,并应用到Deploy...

2019-12-19 14:51:45 7322

原创 【Kubernetes】Pod学习(十三)Init Container:初始化容器

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:初始化容器Init Container(后称IC)用于在启动应用容器前进行初始化,完成应用容器所需的预置条件。主要应用场景如:等待其他关联组件正确运行(如数据库或后台某个服务) 基于环境变量或配置模板生成配置文件 从远程数据库获取本地所需配置,或者将自身注册到某个中央数据库中 下载相关依赖包,或者对系统进行一些预配...

2019-12-19 11:14:17 1388 1

原创 【Kubernetes】Pod学习(十二)Pod调度:Job和Cronjob

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:Job:批处理调度,用于定义并启动一个批处理任务,与RS\RC\Deployment\DaemonSet类似,Job同样作为副本控制器的一种,来控制一组Pod容器,批处理任务的建立目标在于处理一批工作项(work item),在处理完成后,整个批处理任务结束,与其他副本控制器的差别在于:Job所控制的Pod副本短暂运行,且R...

2019-12-18 15:38:44 962

原创 【Kubernetes】Pod学习(十一)Pod调度:DaemonSet入门

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:常规的调度器调度方法并不能保证一组Pod副本被调度到不同的Node上,但在有些场景下,需要一批Node中都运行着一个Pod副本,书上给出的例子有:在每个Node上运行一个GlusterFS或者Ceph存储的守护进程(存储需求)在每个Node上运行一个日志采集程序,如Fluentd或者Logstach(日志需求)在每...

2019-12-17 22:35:16 512

原创 【Kubernetes】Pod学习(十)Pod调度:prioritylClass优先级调度

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:提高集群的资源利用率一直是中大规模集群追求的目标之一,而最常见的作法就是采用优先级方案。与操作系统中的优先级方案相同,简而言之这种方案的做法就是:给负载以某种方式确定优先级权重,在资源不足时,优先驱逐权重较低者,在资源竞争时,优先给权重较高者让路,在K8s中,优先级抢占调度策略的核心行为为驱逐、抢占。驱逐:资源不足时,综...

2019-12-17 22:04:52 3614

原创 【Kubernetes】Pod学习(九)Pod调度:Taints和Tolerations

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:不论是nodeSelector调度方案还是亲和性调度方案,都是为Pod在创建时提供了选择Node的主动性,但是在很多场景中,Node同样需要具备选择自身可部署Pod属性的主动性,Taints和Tolerations(污点和容忍)机制使Node能够主动选择(设置Taints)具备某种属性(带有Tolerations)的Pod,也具...

2019-12-17 00:38:57 950

原创 【Kubernetes】Pod学习(八)Pod调度:定向调度与亲和性调度

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:RC等副本控制器使用了系统自动调度算法完成一组Pod的部署,在完成对Pod的定义后,交由调度器scheduler根据各工作节点情况,以负载均衡的原则进行分配,在这种模式下,Pod副本可能被调度到任意一个可用的工作节点。阿里云大学云原生公开课上,对Deployment给出的介绍如下:但在某些场景下, 设计者希望Pod副...

2019-12-16 10:44:41 4361

原创 Linux实现基于TCP Socket多线程文件传输

学习了网上转载很多次的实现TCP文件传输和多线程的代码原理不再赘述,学习过程做了不少注释代码如下server端:#include<stdlib.h>#include<pthread.h>#include<netinet/in.h> #include<sys/types.h> #include<sys/socket....

2019-12-15 21:18:20 1579 1

转载 Linux 中 MySQL常用命令

基本指令:一、 数据库登录mysql -uroot -p二.、退出数据库quit 和 exit或ctrl + d三、数据库操作1. 查看所有数据库show databases;2. 查看当前使用的数据库select database();3. 使用数据库use 数据库名;4. 创建数据库create database 数据库名 charset=utf8;5. 删除数据...

2019-12-13 11:45:15 188

原创 【Kubernetes】Pod学习(七)Pod调度:Deployment调度入门

此文为学习《Kubernetes权威指南》的相关笔记学习笔记: Pod是可以创建和管理Kubernetes计算的最小可部署单元,在初步学习Pod的组成和创建后,紧接着将要探寻的就是,如何对Pod进行批量的生成和调度,生成Pod的上层抽象,在K8s中,这项任务交由各类副本控制器进行。 在实际部署中,很少直接去定义一个Pod,而是使用诸如Repliction Cont...

2019-12-12 22:47:14 593

原创 【Kubernetes】Pod学习(六)Pod健康和服务可用性检查

此文为学习《Kubernetes权威指南》的相关笔记学习笔记: Kubernetes提供了两类探针(probe)作为健康和服务可用性检查的解决方案,允许使用者在Pod定义时指定检查方式和检查位置,使得K8s对于容器的管理不局限于通过容器init进程判断容器的健康程度,而是能够通过预先定义方式,根据容器类型、结构和功能的不同做不同检查,更准确地判断容器真正的状态,具有较强的灵活性...

2019-12-12 00:24:57 465

原创 【Kubernetes】Pod学习(五)从Pod到容器:Downward API

此文为学习《Kubernetes权威指南》的相关笔记学习笔记: 正如名字所表示的,Downward API是一种向下传递信息的接口,所谓向下,是Pod向其包含的容器传递,传递的内容为自身属性,主要传递方式仍然是容器接收外界信息的两大途径:环境变量和Volume,从目前学习来看,这个接口可以向容器提供的信息包括:所属Pod的名称、命名空间、IP地址,Pod为自身设置的资源限制、P...

2019-12-11 17:17:44 518

原创 【Kubernetes】Pod学习(四)ConfigMap入门

此文为学习《Kubernetes权威指南》的相关笔记学习笔记: 为了提高容器的可复用性,在设计时优先将配置文件和实际程序分离,在容器迁移或复用时通过修改配置文件让容器快速工作,那么对于一个强调高可用、快速部署的容器集群而言,配置注入容器的方式便很关键,在K8s上主要有两个思路:通过配置容器环境变量或者通过数据卷挂载,这两种方法在前面学习中均有涉及过。 数据对象C...

2019-12-10 18:36:12 481

原创 【Kubernetes】Pod学习(三)Pod容器共享Volume

此文为学习《Kubernetes权威指南》的相关笔记学习笔记:Pod中的容器通过共享Volume的方式,实现了文件共享和持久化。Kubernetes中的Volume被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下。Volume的生命容器与Pod相同,不与Pod中单个容器的生命周期相关。当容器终止或者重启时,Volume中的数据也不会丢失。Kubernet...

2019-12-10 15:16:58 1188

原创 【Kubernetes】Pod学习(二)部署一个静态Pod

此文为学习《Kubernetes权威指南》的相关笔记个人思路:静态Pod不同于普通Pod的灵活应用,他仅仅只能在需要部署的Node上创建和删除,不能通过API Server进行管理,也无法被RC、RS、Deployment、Job等数据对象关联起来,与此同时,也不会被进行健康检查。关于静态Pod的使用场景,暂时理解为:Node上需要的应当持续运行的长期设施,比如在环境部署时使用静态Po...

2019-12-10 11:10:11 979

原创 【Kubernetes】Pod学习(一)部署一个多容器Pod

此文为学习《Kubernetes权威指南》的相关笔记个人思路: 根据docker的设计理念,容器作为一个运行单位,在使用上应当秉持“一个容器只运行一项功能”的设计原则,这个原则让容器具有高复用性和低耦合的特征,但在工业应用场景中,以这个原则所设计的服务并不能够独立看作一项完整的“微服务”进行调度(毕竟“一项功能”所能实现的事情有限),在K8s的架构中,以Pod(豆荚)作为一个调...

2019-12-10 00:12:59 11630

原创 VMware桥接模式下虚拟机网络连接失败问题

重启虚拟器或者宿主机后虚拟机网络中端直接提示连接失败:Activation of Connetcion Filed大概率是桥接模式下自动选择到了错误的网卡编辑》虚拟网络编辑器》更改设置》选择VMnet0 查看:解决方法:改变"桥接到"设置,选择正确的宿主机网卡:...

2019-12-06 20:38:02 3003

原创 【Kubernetes】kubeadm部分常用命令使用整理

# kubeadm config images list 列出所需镜像列表# kubeadm config images pull 拉取镜像到本地# kubeadm config view 查看当前集群的配置#kubeadm config upload from-files 由配置文件上传到集群中生成ConfigMap# kubeadm config images pull -...

2019-12-06 19:59:29 1367

空空如也

空空如也

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

TA关注的人

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