- 博客(150)
- 资源 (1)
- 收藏
- 关注
原创 Redis RDB持久化
RDB持久化《Redis 设计与实现》Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。如下图所示一个包含三个非空数据库的Redis服务器,这三个数据库以及数据库中的键值对就是该服务器的数据库状态。因为Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不像办法将储存在内存中的数据库状态保存在磁盘里面,那么一旦服务器进程推出,服务器中的数据
2020-08-04 23:28:01 1285
原创 Redis 链表记录
Redis 链表《Redis设计于实现》链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。作为一种常用的数据结构,链表内置在很多高级编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表的底层实现。举个例子,一下展示的intege
2020-06-23 22:19:54 392
原创 Redis字典记录
字典字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构。在字典中,一个键可以和一个值进行关联(或者说将键映射为值),这些关联的键和值就称之为键值对。字段中的每个键都是独一无二的,程序可以在字典中根据键查找与之关联的值,或者通过键来更新值,又或者根据键来删除整个键值对,等等。字典作为一种数据结构内置在很多高级编程语言中,但Redis所使用的C语言并没有内置这种数据结构,因此Redis构建了自己的字典实现。字典在Redis中的应用十分广泛,比如Redis的数据库就是使用字
2020-06-22 15:54:59 340
原创 Redis的过期键删除策略记录
过期键删除策略:定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的国旗时间来临时,立即执行对键的删除操作。惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除键,如果没有过期,就返回该键。定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。在这三种策略中,第一种和第三种为主动删除策略,而第二种则为被动删除策略。定时删除定时删除策略对内存是最友好的
2020-06-16 19:02:55 489
原创 Redis 使用最多的String 类型是怎么实现的
Redis 使用最多的String 类型是怎么实现的其实string不光是我们在redis中使用最多的类型,我们日常编程中的业务代码string也是跟我们打交道最多的类型,但是对于string为了方便使用同字符串在相同的map中算出相同的值,我们不得不将一个引用类型变成了一个类值类型。。。从而引发的问题就是每一个string都是一个全新的string,当然这里不讨论带有string池的实现方式。今天我们就来看看redis中是如何优雅快速的实现基础类型string。简单动态字符串SDS:举个栗
2020-06-12 22:43:30 1030
原创 goland 20.1.1小技巧
golang 20.1.1小技巧磨刀不误砍柴工版本号: Year.Major.Minor 2020 1 1在命令行使用goland:使用过vscode的同学也肯定使用过来打开代码仓库code .这个功能goland也支持我们可以通过设置toolbox来打开该功能:在使用goland . 即可打开项目仓库 :在github直接打开项目(需要在浏览器内下载toolbox插件):直接clone项目:插...
2020-05-18 17:33:43 857
原创 使用go 制作自己的命令行工具
为了方便工作中一些经常进行的操作我们都会写成工具来方便使用,今天我们就用go来实现一个命令行工具。目的是在当前文件夹下build一个项目类似这种当然其中的go结尾文件都是自己加进去的:使用到的框架:github.com/urfave/cli/v2文档地址:https://github.com/urfave/cli/blob/master/docs/v2/manual.md效果图:按照文档中解释以及demo选择自己需要的功能,详情查看注释即可:main.go:p
2020-05-17 15:19:21 2259
原创 mysql 事务隔离级别笔记
Transaction Control Language 事务控制语言笔记事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。事务有单独单元的一个或多个sql语句组成,在这个单元中,每个mysql语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条sql语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事务开始以...
2020-05-06 13:57:15 304
原创 k8s Ingress service 内部网络初探
在k8s内部的网络流转还是比较有趣的,接下来我们来了解一下client 是如何通过ingress、service在到具体服务提供的pod。实验的deployment.yaml:kind: DeploymentapiVersion: apps/v1metadata: name: nginx-deploymentspec: replicas: 3 selector: ...
2020-04-30 23:00:08 1765
原创 golang Redis 分布式锁
参考:https://redis.io/topics/distlock代码:package internalimport ( "errors" "fmt" "github.com/garyburd/redigo/redis")type RedisLock struct { //保存连接 Conn *redis.Conn //生成随机value用于判断是否为自己上锁...
2020-04-11 17:42:49 814
原创 Zookeeper 四 分布式锁
是时候用我们之前学习的知识实践一波了!使用Zookeeper实现一个分布式锁,思路:利用带序号断开连接自动消失的特性来实现分布式锁,如果当前节点为最小节点则获取锁,否则监听上一个节点如果上个节点下线则获取锁,有点类似链表。只链接自己前面的节点,如果前面没有节点则自己为链表头。优点:可能大家用的最多的是redis分布式锁这个很好理解,但是有个缺点就是一定要客户端去拉取状态,如果不需要等待...
2020-04-09 22:34:10 684
原创 golang jenkins devops (二)
在golang jenkins devops (一)中我们已经将image push 到了docker hub 这一章我们将彻底实现自动化:第一步 代码push 自动发布:下载码云插件:
2020-04-06 14:26:40 506
原创 golang jenkins devops (一)
首先创建项目并上传至任意git 仓库为了演示jenkins ssh登录这里我创建的是 私有仓库:code:项目结构:Init.go:package Initimport ( "fmt" "github.com/jinzhu/configor")func Init(config configor.Config) { fmt.Println("Init")...
2020-04-05 22:00:08 1056
原创 Zookeeper 三 代码测试
golang 代码测试:使用:"gozookeeper/internal"package internalimport ( "fmt" "github.com/samuel/go-zookeeper/zk" "time")type ZkUtil struct { conn *zk.Conn}func (zkUtil *ZkUtil) Init(servi...
2020-04-02 23:34:33 640
原创 Zookeeper 二 stat、listener
Stat结构体cZxid:创建节点的事物 id 每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事物ID。 事物ID是ZooKeeper中所修改总的次序。每个修改都有唯一的Zxid,如果zxid1小于zxid2,那么zxid1在zxid之前发生ctime: znode呗创建的毫秒数mzxid:z...
2020-03-30 23:25:13 287
原创 Zookeeper 一 基础知识以及简单命令
Zookeeper工作机制Zookeeper从设计模式角度来理解:是一个基于观察者模式的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察着的注册,一旦这些数据的状态发生变化,Zookeeper讲讲负责通知已经在Zookeeper上注册的那些观察者作出响应的反应。Zookeeper特点一个领导者(Leader),多个跟随者(Follower)组成的集群 集群中只要有半...
2020-03-29 23:16:25 793
原创 k8s测试十九 Jenkins 安装
在k8s集群中部署Jenkins:第一步创建 namespace:kubectl create ns devops第二步创建 sa:apiVersion: v1kind: ServiceAccountmetadata: labels: app: jenkins name: jenkins-admin namespace: devops---apiV...
2020-03-24 17:03:11 1017
原创 k8s测试十八资源限制
资源限制基于podKubernetes对资源的限制实际上是通过cgroup来控制的,cgroup是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU和各种设备都有对应的cgroup。默认情况下,Pod运行没有CPU和内存的限制。这一位这系统中的任何Pod将能够像执行该Pod所在的节点一样,消耗足够多的CPU和内存。一般会针对某些应用的pod资源进行资源限制,这个资源限制...
2020-03-21 16:56:17 481
原创 k8s测试十七 Horizontal Pod Autoscaling
如果看过测试十六到这里我们已经具备了去实验HPA的条件了,没看过的可以去看一下!简介:Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 Replication Controller、Deployment 或者Replica Set 中的 Pod 数量。运行一个比较耗费资源的pod:kubectl run php-apache --imag...
2020-03-21 16:10:49 645
原创 k8s测试十六 部署Prometheus
文档地址:https://github.com/coreos/kube-prometheusgit 到本地:git clone https://github.com/coreos/kube-prometheus.gitcd到yaml文件目录:cd /kube-prometheus/manifests 修改svc为NodoPort可供外部访问:修改 grafana-s...
2020-03-21 00:04:30 647
原创 k8s测试十五 部署Dashboard
文档:https://github.com/kubernetes/dashboard?spm=5176.2020520152.0.0.7d1f16ddknWTPvhttps://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md以下操作文档中都有记录跟着傻...
2020-03-20 22:18:07 444
原创 k8s测试十四 Helm部署datadog
Helm官网提供的安装方官方安装文档:https://helm.sh/docs/intro/install/安装完毕后:给tiller配置权限:---apiVersion: v1kind: ServiceAccountmetadata: name: tiller namespace: kube-system---apiVersion: rbac....
2020-03-19 22:42:22 766
原创 k8s测试十三 集群调度 污点和容忍
Taint和Toleration节点亲和性,是pod的一种属性(偏好或硬性要求),它使pod被吸引到一类特定的节点。Taint则相反,它使节点能够排斥一类特定的pod。Taint和toleration互相配合,可以用来避免pod被分配到不合适的节点上。每个节点上都可以应用一个或多个taint,这表示对于那些不能容忍这些taint的pod,是不会被该节点接受的。如果toleration应用于...
2020-03-17 22:21:47 1421
原创 k8s测试十二 集群调度过程
测试硬策略NotIn:集群调度过程简介:Scheduler是Kubernetes的调度器,主要的任务是把定义的pod分配到集群的节点上。听起来非常简单,但有很多要考虑的问题:公平:如何保证每个节点都能被分配资源 资源高效利用:集群所有资源最大化被使用 效率:调度的性能要好,能够尽快地对大批量的pod完成调度工作 灵活:允许用户根据自己的需求控制调度的逻辑Sche...
2020-03-15 23:18:18 441
原创 k8s测试十一 PV
测试yaml:概念PersisitentVolyme(PV)是由管理员设置的存储,它是集群的一部分。就像节点是集群中的资源一样,PV也是集群中的资源。PV是Volume之类的卷插件,但具有独立于使用PV的Pod的生命周期。此API对象包含存储实现的细节,即NFS、iSCSI或特定于云供应商的存储系统。PersistentVolu...
2020-03-15 21:20:14 4448 2
原创 k8s测试十 Volume
Volume容器磁盘上文件的生命周期是短暂的,这就使得在容器运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态重新启动。其次在pod中同时运行多个容器时,这些容器之间通常需要共享文件。kubernetes中的volume抽象就很好的解决了这些问题。背景Kubernetes中的卷有明确的寿命--与封装它的pod相同,所...
2020-03-14 22:41:10 380 1
原创 k8s测试九 Secret
Secret 存在的意义Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret 可以以Volume或者环境变量的方式使用。类型:Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/sercrets/kubernetes.io...
2020-03-14 18:33:58 521
原创 k8s测试八 存储
configMapConfigMap功能在Kubernetes1.2版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap APi给我们提供了向容器中注入配置信息的机制,ConfigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。ConfigMap的创建:使用目录创建Secretvolume...
2020-03-14 01:01:30 425
原创 k8s 测试七 Ingress
Ingress官网:https://kubernetes.github.io/ingress-nginx/deploy/kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yamlkubectl ...
2020-03-08 18:10:29 1481
原创 K8s 测试六SVC
Service 的概念kubernetes Service 定义了这样的一种抽象:一个Pod的逻辑分组,一种可以访问他们的策略--通常称之为微服务。这一组Pod能够被Service访问到,通常是通过Label Selector。Service 能够提供负载均衡的能力,但是在使用上有以下限制: 只提供四层负载均衡能力,而没有7层功能,但有时我们可能需要更多的匹配规则来转发...
2020-03-08 00:07:09 1257
原创 K8s 测试五控制器
DaemonSet确保全部或者一些Node上运行一个Pod的副本。当有Nodo加入集群时,也会为它们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod。yaml:apiVersion: apps/v1 #版本号kind: DaemonSet #类型metadata: #元数据 na...
2020-03-06 23:43:45 392
原创 K8s 测试四控制器
ReplicationController RC用来确保容器应用的副本数始终保持在用户定义的副本书,即如果有容器异常退出,会自动创建新的pod来替代;而如果异常多出来的容器也会自动回收。在新版本的Kubernetes 中建议使用ReplicaSet来取代ReplicationControllerReplicaSet RS跟ReplicationController没有本质的不同,知...
2020-03-05 23:26:27 311
原创 k8s 测试三 Pod生命周期
检测探针 - 就绪检测:apiVersion: v1kind: Podmetadata: name: readiness-httpget-pod namespace: defaultspec: containers: - name: readiness-httpget-container image: wangyanglinux/myapp:v1 ...
2020-03-03 23:06:56 1124
原创 k8s 测试二 Pod Init
测试pod探测:init 模版:apiVersion: v1kind: Podmetadata: name: myapp-pod labels: app: myappspec: containers: - name: myapp-container image: busybox command: ['sh','-c','echo ...
2020-03-02 22:54:17 737
原创 k8s 测试一 简单命令测试
上一篇我们已经部署好了k8s集群:https://blog.csdn.net/weixin_40165163/article/details/104546284接下来我们测试一下是否可用:下面的操作均在master拉取一个测试image:docker pull wangyanglinux/myapp:v1运行:kubectl run nginx-deployment...
2020-03-01 16:55:02 1685
原创 k8s的部署以及开启ipvs
准备工作:https://blog.csdn.net/weixin_40165163/article/details/104526461当centos的环境准备好后,就可以开始部署k8s了首先设置k8s下载源cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbas...
2020-02-27 22:35:34 5651
原创 k8s部署的准备工作
必备: Centos7 服务器 or 虚拟机 需要可以连接外网。第一步更新系统:这里提供一个shell脚本:curl -O https://raw.githubusercontent.com/bboysoulcn/centos/master/centos.sh...
2020-02-26 23:31:25 1612
Alfred_3.7.1_946加强版command+空格
2019-01-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人