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

区块链概况:什么是区块链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。 wikipedia 给出的定义为: A blockchain —originally, block chain —is a distributed database that maintains a continuously-growing list of data records hardened against tampering and revision. It consists of data structure blocks—which hold exclusively data in initial blockchain implement...阅读全文

博文 2019-09-26 16:33:14 链客

ETCD探索

ETCD探索 梗概 这篇文章旨在从源码角度分析ETCD MVCC、Lease、Watch的实现,帮助我们更好的使用ETCD。 ETCD是什么? 这是ETCD官网给出的解释,ETCD是一个KV存储。现在有太多的KV存储中间件,我们为什么要选择ETCD呢?原因就是这句话:"distributed", "reliable",ETCD是一个分布式的、可靠的KV存储。相比于Redis,ETDC不够快,但足够安全,可靠。每一个中间件都有自己的特点,我选择ETCD有两个原因: ETCD是GO写的,所以GO用起来很方便。(不用ZK的原因) 扩容方便。 在讨论之前,我们先看下ETCD的目录结构 auth 访问权限 client/clientv3 GO客户端SDK contrib 里面放着raftexample...阅读全文

博文 2020-02-19 17:32:49 HammerMax

制作自己的docker镜像并发布到k8s

本篇主要讲述如何将自己的程序生成docker镜像,并且发布到k8s环境的简单步骤。在这之前你需要了解基本的docker使用,基本的k8s概念和命令。 Step1 编写代码为了方便使用之前一篇的代码,将KV值put到ETC集群。具体代码如下: package main import ( "fmt" "io/ioutil" "log" "time" "crypto/tls" "crypto/x509" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context" ) var ( dialTimeout = 5 * time.Second requestTimeout = 4 * time.Second endpoints = []string{"ht...阅读全文

博文 2019-10-10 18:02:40 麦穗儿

0. Go Introduce

Go 是一种开源的编程语言,它试图使编写简单、可靠、高效软件变得更加容易。 fiveyears.jpg 官方站点为 https://go.googlesource.com/go, 也可以访问 GitHub 镜像 。国内有 Go语言中文网、Golang中国 等不错的学习交流平台。 Golang 安装可以从 https://studygolang.com/dl 选择自己对应的平台或系统下载安装任何版本。 Golang 开发环境可以自行Google or Bing,参照热心网友教程搭建,鉴于 Go 官方站点在墙外,可以从 Golang中国第三方包 获取需要Go插件包,具体请阅读链接说明。 Golang 可参考书籍很多,推荐阅读《Go程序设计语言》,zmazon 购买 此处留痕,希望自己走的更远,2...阅读全文

ETCD探索-Lease

ETCD探索-Lease 梗概 租约,是ETCD的重要特性,用于实现key定时删除功能。与Redis的定时删除功能基本一致。 猜想 我们通常是这么使用Lease的,首先申请一个租约:lease,然后将这个租约赋给一对KeyValue。ETCD-Lease的实现不难,在讨论怎么实现之前,可以先猜测下。我的直观想法: func putWithLease(key string, value string, ttl int) { go func() { time.Sleep(ttl * time.Second) delete(key) }() put(key, value) } 简单说明,当put一对kv时,开启一个协程用于计时。当过了ttl后,将该key删除。 这么做可以实现key的定时删除功能,...阅读全文

博文 2020-02-19 17:32:47 HammerMax

DockOne技术分享(十六):闲谈Kubernetes 的主要特性和经验分享

【编者的话】主要介绍 Kubernetes 的主要特性和一些经验。先从整体上看一下Kubernetes的一些理念和基本架构, 然后从网络、 资源管理、存储、服务发现、负载均衡、高可用、rolling upgrade、安全、监控等方面向大家简单介绍Kubernetes的这些主要特性。 我们先从整体上看一下Kubernetes的一些理念和基本架构, 然后从网络、 资源管理、存储、服务发现、负载均衡、高可用、rolling upgrade、安全、监控等方面向大家简单介绍Kubernetes的这些主要特性。 当然也会包括一些需要注意的问题。主要目的是帮助大家快速理解 Kubernetes的主要功能,今后在研究和使用这个具的时候有所参考和帮助。 1.Kubernetes的一些理念:用户不需要关心需要多...阅读全文

博文 2017-06-25 15:01:09 小飞侠

供应链

Docs »数字图像处理 »数字图像处理-直方图均衡化 Edit on GitHub直方图均衡化直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布. 直方图均衡化就是对图像进行非线性拉伸, 重新分配图像像素值, 使一定灰度范围内的像素数量大致相同. 直方图均衡化就是把给定图像的直方图分布改变成"均匀"分布直方图分布.假设输入是一张 8 比特灰度图(即灰度级为 0 至 255), 则任意灰度级的概率函数为P(rk)=nk/n,k∈0−255其中 nk 为灰度级为 k 的像素个数, n 为总像素个数. 设转换函数为 T, 则sk=T(rk)=255∑j=0knjn代码实现import matplotlib.pyplot as plt impo...阅读全文

博文 2020-05-29 09:48:28 asialiugf

实验结果

Docs »数字图像处理 »数字图像处理-直方图均衡化 Edit on GitHub直方图均衡化直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布. 直方图均衡化就是对图像进行非线性拉伸, 重新分配图像像素值, 使一定灰度范围内的像素数量大致相同. 直方图均衡化就是把给定图像的直方图分布改变成"均匀"分布直方图分布.假设输入是一张 8 比特灰度图(即灰度级为 0 至 255), 则任意灰度级的概率函数为P(rk)=nk/n,k∈0−255其中 nk 为灰度级为 k 的像素个数, n 为总像素个数. 设转换函数为 T, 则sk=T(rk)=255∑j=0knjn代码实现import matplotlib.pyplot as plt impo...阅读全文

博文 2020-05-31 16:07:47 asialiugf

TiKV 源码解析系列 ——Placement Driver

本系列文章主要面向 TiKV 社区开发者,重点介绍 TiKV 的系统架构,源码结构,流程解析。目的是使得开发者阅读之后,能对 TiKV 项目有一个初步了解,更好的参与进入 TiKV 的开发中。 TiKV 是一个分布式的 KV 系统,它采用 Raft 协议保证数据的强一致性,同时使用 MVCC + 2PC 的方式实现了分布式事务的支持。 本文为本系列文章第三节。 介绍 Placement Driver (后续以 PD 简称) 是 TiDB 里面全局中心总控节点,它负责整个集群的调度,负责全局 ID 的生成,以及全局时间戳 TSO 的生成等。PD 还保存着整个集群 TiKV 的元信息,负责给 client 提供路由功能。 作为中心总控节点,PD 通过集成 etcd ,自动的支持 auto fai...阅读全文

博文 2017-02-10 02:39:36 PingCAP

go任务调度3(etcd协调服务、raft协议)

etcd是将数据存储在集群中的高可用k-v存储。允许应用实时监听存储中的k-v变化。能容忍单点故障,能够应对网络分区。 (raft是一个分布式协议,管理的是日志;etcd管理的是k-v,把k-v放到日志里,kv就编程分布式集群了)(调用者写入请求发给leader请求写入k-v,leader会将日志实时向follower们复制,leader不会立即返回给调用者,会马上往集群follower做日志拷贝。当日志被复制给N+1个节点后(即大多数),本地提交(也就是告诉客户端提交成功),返回给调用者(客户端),为什么复制给N+1,而不是2N+1后就告诉客户端成功了呢?这就是大多数协议,也就是抽屉理论的重要表现)(一旦完成提交,leader会周期性把自己的提交信息告诉所有follower,这样,其他fo...阅读全文

博文 2019-04-19 20:35:11 梁十八

调试etcd时遇到的一些梗

前言 看完raft后, 一直有计划通过看etcd进一步学习, 毕竟在生产环境中引入了etcd, 有必要对其更透彻的了解. 在调试etcd时遇到了一些梗. 这里做个记录. 问题 cannot load 系列 如 cannot load golang_org/x/net/dns/dnsmessage 原因是golang的包管理工具bug, 在参考golang uninstall完全清理干净后: sudo rm -r /usr/local/go 再按官网golang install说明安装. 即可解决. wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.13.5.lin...阅读全文

博文 2020-01-02 21:32:38 enjolras1205

看了一定会收藏的海量数据实时在线分析Quick BI

课程介绍 Quick BI 专为云上用户量身打造的新一代智能BI服务平台,本课程主要介绍Quick BI的基础用法。 产品优势如下: • 无缝集成云上数据:支持多种数据源:RDS、ADS、MaxCompute;ECS自建Mysql、SqlServer;本地文件等。 • 快速搭建数据门户:拖拽式操作、强大的数据建模、丰富的可视化图表、快速搭建数据门户。 • 灵活嵌入第三方系统:仪表板可嵌入到自有系统,直接在自有系统访问报表, 并实现免登。 • 安全管控数据权限:内置组织成员管理,支持行级数据权限,满足同一份报表,不同人看不同的数据。 课程目标 • 学习阿里云Quick BI的用法 适合人群 • 大数据分析师 课时列表 ...阅读全文

一个TCP长连接设备管理后台工程(三)

前篇: 一个TCP长连接设备管理后台工程(一)一个TCP长连接设备管理后台工程(二) Github仓库地址 TCP协议整合JTT808协议 前面简单说明了基于golang的net库进行TCP通讯。现在我们需要将现有的协议整合进去。行业内车辆终端一般都是对接交通部的JTT808协议,此处我们要实现的是JTT808-2019版本。 消息结构 标识位 消息头 消息体 校验码 标识位 0x7e 0x7e 标识位应采用0x7e表示,若校验码、消息头以及消息体中出现0x7e及0x7d,则要进行转义处理。转义规则定义如下: 先对0x7d进行转义,转换为固定两个字节数据:0x7d 0x01; 再对0x7e进行转义,转换为固定两个字节数据:0x7d 0x02。 转义处理过程如下: 发送消息时:先对消息进行封装...阅读全文

博文 2019-12-27 17:32:42 qiuzhiqian

GO语言包问题

这个项目:https://github.com/smallnest/rpcx 下面文档中说: install the basic features: ``` go get -u -v github.com/smallnest/rpcx/... ``` If you want to use reuseport、quic、kcp, zookeeper, etcd, consul registry, use those tags to go get 、 go build or go run. For example, if you want to use all features, you can: ``` go get -u -v -tags "reuseport quic...阅读全文

Codis3.1安装文档

一、基本信息 1、Codis集群架构 image 2、环境信息 操作系统:macos 10.12.3 codis版本:3.1 go语言版本:1.8.1 etcd版本:3.2.0-rc.0 二、部署Codis 1、安装go 下载地址:https://golang.org/dl Mac:选择go1.8.1.darwin-amd64.pkg下载并安装 Windows:选择go1.8.1.windows-amd64.msi下载并安装 Linux:选择go1.8.1.linux-386.tar.gz或者go1.8.1.linux-amd64.tar.gz下载(根据操作系统位数选择下载对应的版本)解压到/usr/local路径,并设置环境变量 //解压到/usr/local路径 tar -C /usr/...阅读全文

博文 2017-05-20 14:24:21 有没有搞错_531a

如何通过MD5反查身份证号?

题目:设计一个身份证查询系统,将身份证号md5 之后存储,输入md5值查询对应的身份证号。 要求:成本低,查询速度快 设计思路: 将所有可能的身份证号做一个简单的统计计算数据量 根据数据量选择存储方式 查询 身份证生成规则: 身份号码是特征组合码,由前十七位数字本体码和最后一位数字校验码组成。排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码: 表示编码对象常住户口所在县(市、旗、区)的行政区划代码。对于新生儿,该地址码为户口登记地行政区划代码。需要没说明的是,随着行政区划的调整,同一个地方进行户口登记的可能存在地址码不一致的情况。行政区划代码按GB/T2260的规定执行。 出生日期码:表示编码对象出生的年、月、日,年、月、日代码之间不用分隔符...阅读全文

服务超时总结

介绍 超时 请求超时,客户端给服务端发送请求时超时,此时服务端没有收到客户端的请求; 服务端内部超时,服务端可能存在DB操作、IO操作、调用其他服务超时; 响应超时,服务端给客户端返回响应时超时,此时服务端已经处理了请求。 超时发生需要客户端和服务端如何处理呢? 客户端最常见方法: 重试(前提是服务端接口支持幂等),重试间隔梯度增大,重试次数阈值最大值 不重试直接去查询请求结果状态,根据结果确认是否请求成功,或者什么都不处理,直接认为失败不做进一步处理 具体接口场景具体对待 服务端: 服务端内部如果超时了,应该尽快给客户端返回,告诉客户端超时失败,这个主要是通过服务端内部超时控制来实现,例如:golang http.TimeoutHandler 幂等性 支持接口无限重试主要靠的就是幂等性,实...阅读全文

博文 2019-08-20 22:02:43 凯文不上班

【转】golang 三个点省略号的作用总结

文链接:https://blog.csdn.net/qq_31930499/article/details/98353008 1.使用在数组中 在数组字面量中,如果省略号"..."出现在数组长度的位置,那么数组的长度由初始化数组的元素个数决定。 q := [...]int{1,2,3} fmt.Printf("%T\n",q) //"[3]int" 2.打散Slice package main import ( "fmt" ) func main() { var arr1 []int arr2 := []int{1,2,3} arr1 = append(arr1,0) arr1 = append(arr1,arr2...) //arr2... 将切片arr2打散成 ==> arr1 = ap...阅读全文

博文 2020-03-11 17:33:03 10xjzheng

go任务调度8(op取代get,put,delete方法)

package main import ( "go.etcd.io/etcd/clientv3" "time" "fmt" "context" ) func main() { var ( config clientv3.Config client *clientv3.Client err error kv clientv3.KV putOp clientv3.Op getOp clientv3.Op opResp clientv3.OpResponse ) // 客户端配置 config = clientv3.Config{ Endpoints: []string{"0.0.0.0:2379"}, DialTimeout: 5 * time.Second, } // 建立连接 if clie...阅读全文

博文 2019-04-21 03:35:09 梁十八

支持后悔药的etcdui

同时支持etcd v3 v2 版本,支持后悔药的etcd ui github https://github.com/wudaoluo/e... version 0.1 支持 etcd v2 支持 etcd v3 使用 go 代替了node 支持添加多个etcd地址 支持 配置文件动态更新 支持 etcdv3 tls 加密 支持 json toml 配置文件 version 0.2 (后悔药功能) etcd v3记录每次操作key,value 和版本号 添加leveldb (10万数据测试查询速度很快) etcd v3 后悔药开发完成 etcd v3 备份功能开发完成 etcd v2 [后悔药功能-待开发] etcd v2 [备份功能-待开发] version 0.3 开发中 使用vue重写界...阅读全文

博文 2019-02-26 16:34:49 qzuser

Announcing the release of Fedora 27

The Fedora Project proudly announces the release and general availability of the Fedora 27 Workstation and Fedora 27 Atomic editions. Fedora 27 incorporates thousands of improvements from both the Fedora Community and various upstream software projects. You can download Fedora 27 Workstation and the Fedora 27 Atomic Host right now from getfedora.or...阅读全文

博文 2017-11-29 02:45:27 Fedora Magazine

etcd raft library设计原理和使用

早在2013年11月份,在raft论文还只能在网上下载到草稿版时,我曾经写过一篇 blog ( http://link.zhihu.com/?target=http%3A//www.cnblogs.com/foxmailed/p/3418143.html ) 对其进行简要分析。4年过去了,各种raft协议的讲解铺天盖地,raft也确实得到了广泛的应用。其中最知名的应用莫过于etcd。etcd将raft协议本身实现为一个library,位于 https:// github.com/coreos/etcd/ tree/master/raft ( http://link.zhihu.com/?target=https%3A//github.com/coreos/etcd/tree/master/r...阅读全文

博文 2017-07-08 15:31:36 吴镝

golang expect包的使用介绍

最近和业务的相关人员对接某一需求时,其提出希望能在业务服务器上不给业务人员密码信息,而能通过执行某个命令后由usera变成userb。这个需求其实用expect 就可以实现,不过使用tcl 语言编写的脚本里密码还是以明文出现的,业务是想通过安装pexpect (python)包,通过生成pyc的文件,略微增加下安全性。不过想了下,可以通过使用golang下的expect实现同样的效果,而且安全性更强。 经搜索引擎检索,发现 https://github.com/ThomasRooney/gexpect/ 可以实现该效果,而且在该包的examples里提供了ftp、ping、python、screen相关的使用示例。这里如果使用su切换用户,代码比较简单,如下: //code from www...阅读全文

博文 2018-12-18 19:35:48 扬那个杨

书籍《自底向上分析 boltdb 源码》

# 一、为什么会有《自底向上分析boltdb源码》本书? 当初自己尝试学习boltdb时,摸索了很久,一方面网上讲解内部实现的资料少之又少,另一方面很多文章的分析也只是在理论上,自己回头看源码一脸懵逼。 所以在自己入坑折腾了一段时间后,把自己的理解和总结整理了下,方便对这块感兴趣的小伙伴,少走弯路,降低门槛。 # 二、 boltdb是什么? 在用自己的话介绍boltdb之前,我们先看下boltdb官方是如何自我介绍的呢? > Bolt is a pure Go key/value store inspired by [Howard Chu's][hyc_symas] [LMDB project][lmdb]. The goal of the ...阅读全文

PaaS 7层动态路由的若干实现

摘要:随着Docker的出现,PaaS、CaaS(Container As A Service)、甚至DCOS(DataCenter OS)呈现了爆发式的发展。而在PaaS中,因为实例一般默认为动态IP,对于7层调用(比如http请求),需要7层动态路由获取应用域名(或虚IP)和后端实例的映射关系,以提供7层服务;而对于4层调用(比如rpc调用),可以通过动态LVS或名字服务(或基于zookeeper/etcd等实现的服务注册和发现工具)进行调用。随着Docker的出现,PaaS、CaaS(Container As A Service)、甚至DCOS(DataCenter OS)呈现了爆发式的发展。而在PaaS中,因为实例一般默认为动态IP,对于7层调用(比如http请求),需要7层动态路由...阅读全文

博文 2017-07-17 10:06:27 暖夏未眠丶

kubernetes 1.8 快速安装,只需三步

到这里购买安装包 只需15 童叟无欺。。。 15块买的不止包还有服务! 没有比我的方式更简单的了。。。 安装 master节点执行init-master.sh node节点执行init-node.sh node节点执行master输出的kubeadm join命令 选装,dashboard,master安装完就可以装这个了,这样dashboard不会调度到node节点:执行init-dashboard.sh把type:ClusterIP改成 NodePort 然后访问dashboard所在节点+端口号即可。 没有然后了,任何问题联系我,100%安装成功...阅读全文

k8s :kube-apiserver Legacy API 初始化

前言 看 k8s 源代码有一段时间,总感觉在迷宫里乱窜,有时候觉得终于找到出口了,一下子又撞墙了,总结下来还是自己的内功不够深厚,本文是对 kube-apiserver Legacy(遗留,即将废弃)API 初始化流程(以及数据结构)的一个梳理,算是做个"路标",便于以后在"迷宫"中还能找到回来的路 kube-apiserver 主要功能是提供 api 接口给客户端访问 后端 etcd 存储,当然这中间不光是简单的 key/value 存储,为了方便扩展,kube-apiserver 设计了一套代码框架将 "资源对象" 映射到 RESTful API 本文梳理了一下 legacy api 即 /api 打头的那些 api 初始化流程及相关的数据结构 k8s 代码更新比较快,本文基于 k8s ...阅读全文

博文 2018-03-24 09:35:03 xingpingz

2019-08-05

分布式任务调度平台 前言 在企业系统开发过程中难免少不了一些定时任务来进行定时触发执行任务,对于非分布式环境系统中,我们只需要在对应系统中内部集成一些调度库进行配置定时触发即可。 比如:使用Spring框架集成quartz,只需要进行一些简单的配置就能定时执行任务了。但是随着企业的系统越来越多、逐步从单一应用慢慢演变为微服务集群。 在分布式集群系统中主要面临出如:任务的重复执行、没有统一定时任务配置、任务节点故障转移、任务监控&报警等一些列的功能都是要在分布式系统中进行解决。 此分布式的定时任务调度平台,它非常轻量小巧,使用简单,后端以中心服务器为调度核心,负责集群中各种任务的动态分配和调度执行。 在平台前端支持Web界面可视化管理,我们可以创建、暂停/启动任务、删除未执行的任务快照、或者查...阅读全文

博文 2019-08-05 22:32:44 busgo

golang不定长传参

golang不定长传参,三个点... 可以很灵活的传入多个参数,给两个例子,一看就明白了 1、int类型不定长传参 package main import "fmt" func main() { fmt.Println(Sum(1, 4, 6, 7, 8, 9, 100, 200)) } func Sum(numbers ...int) int { result := 0 for _, n := range numbers { result += n } return result } go run test1.go 335 2、map类型不定长传参 package main import "fmt" func main() { fmt.Println(SumMap(map[string]s...阅读全文

博文 2019-12-06 21:33:45 1350368559

gRPC负载均衡(自定义负载均衡策略)

### 前言 上篇文章介绍了如何实现gRPC负载均衡,但目前官方只提供了`pick_first`和`round_robin`两种负载均衡策略,轮询法`round_robin`不能满足因服务器配置不同而承担不同负载量,这篇文章将介绍如何实现自定义负载均衡策略--`加权随机法`。 `加权随机法`可以根据服务器的处理能力而分配不同的权重,从而实现处理能力高的服务器可承担更多的请求,处理能力低的服务器少承担请求。 ### 自定义负载均衡策略 gRPC提供了`V2PickerBuilder`和`V2Picker`接口让我们实现自己的负载均衡策略。 ```go type V2PickerBuilder interface { Build(info PickerBuildInfo) balancer.V2...阅读全文

博文 2020-05-20 17:12:40 939496716

容器云架构中使用gorouter+haproxy作为流量入口

​ 小贴士 Gorouter 项目地址:https://github.com/cloudfoundry/gorouter/Gorouter来源于CloudFoundry。是一个高性能、轻量级的路由器及负载,它是整个平台的流量入口,负责分发所有的http请求到对应的instance。它在内存中维护了一张路由表,记录了域名与实例的对应关系,所谓的实例自动迁移,靠得就是这张路由表,某实例宕掉了,就从路由表中剔除,新实例创建了,就加入路由表。 Gnatsd Gnatsd来源cloudfoundry,是一个开源轻量高性能的消息系统,gorouter依赖它来作为消息系统,进行PUB/SUB操作。 官方地址:http://nats.io/ 项目地址:https://github.com/apcera/gn...阅读全文

博文 2019-04-18 09:34:41 程序员同行者

编写数据库:第2部分-预写日志

与往常一样,请访问github.com/danchia/ddb…代码 所以,您的数据不是很耐用... 在第1部分中,我使用gRPC和Go编写了一个非常简单的服务器,该服务器用于服务Get和Put请求内存中的映射。如果服务器退出,它将丢失所有数据,对于数据库,我必须承认这是非常糟糕的。 我实现了预写日志记录,允许在服务器重新启动时恢复内存中状态。尽管这个想法真的很简单,但实现起来却是很困难的!最后,我看了 LevelDB , Cassandra 和 etcd 如何解决此问题。 预写日志 预写日志(WAL)是数据库系统中一种常用的技术,用于保证写操作的原子性和持久性。WAL背后的关键思想是,在我们对数据库状态进行任何实际修改之前,我们必须首先记录我们希望是原子性的和持久存储(例如磁盘)的完整操作...阅读全文

博文 2020-01-31 23:34:15 Samuel_zx

用etcd实现服务注册和发现

系统中实现服务注册与发现所需的基本功能有 服务注册:同一service的所有节点注册到相同目录下,节点启动后将自己的信息注册到所属服务的目录中。 健康检查:服务节点定时发送心跳,注册到服务目录中的信息设置一个较短的TTL,运行正常的服务节点每隔一段时间会去更新信息的TTL。 服务发现:通过名称能查询到服务提供外部访问的 IP 和端口号。比如网关代理服务时能够及时的发现服务中新增节点、丢弃不可用的服务节点,同时各个服务间也能感知对方的存在。 在分布式系统中,如何管理节点间的状态一直是一个难题,etcd 是由开发并维护的,它使用 Go 语言编写,并通过Raft 一致性算法处理日志复制以保证强一致性。etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据 TTL 失效、数据改变监视、多值、...阅读全文

博文 2019-11-08 14:02:41 KevinYan

CentOS install etcd 测试

1,关于etcd etcd是一个类似于zookeeper的,服务发现工具。 参考简介: http://dockone.io/article/667 https://coreos.com/blog/performance-of-etcd.html etcd性能对比: 2,搭建环境 在linux 下面:安装最新的3.1.1 https://github.com/coreos/etcd/releases/download/v3.1.1/etcd-v3.1.1-linux-amd64.tar.gz 解压缩。直接启动。 ./etcd version ./etcd 我使用的是virtualbox安装的,因为是虚拟机。所以使用了NAT的网络。远程访问做了一个端口转发。 同时启动一个etcd需要绑定到ip ...阅读全文

博文 2017-07-12 10:26:56 freewebsys

flanneld启动报错:vxlan_network.go:158] failed to add等错

报错信息 Apr 21 15:56:37 node02 systemd[1]: Started Flanneld overlay address etcd agent. Apr 21 15:56:37 node02 flanneld[123894]: I0421 15:56:37.621933 123894 iptables.go:125] Adding iptables rule: ! -s 172.17.0.0/16 -d 172.17.0 Apr 22 10:14:08 node02 flanneld[123894]: E0422 10:14:08.245343 123894 vxlan_network.go:158] failed to add vxlanRoute (172.17....阅读全文

博文 2020-04-23 13:33:19 wx5b2999d962e6d

G3.1 Go语言正则表达式应用实例

实际应用中,通过灵活组合正则表达式的各种用法,可以实现非常复杂和实用的功能,本节将简单介绍一些常见或典型的应用实例* 注:注意先要导入包github.com/topxeq/goexamples/tools(方法是执行命令go get -v github.com/topxeq/goexamples/tools),如果不用该包,文中代码内的 t.Printfln相当于fmt.Printf加上一个“\n”。-> 匹配中文正则表达式中匹配中文可以根据中文字符的Unicode范围来进行匹配,中文在Unicode编码中的范围是十六进制的4E00至9FA5,在正则表达式中可以用“[\u4E00-\u9FA5]”的范围表达形式来表示。需要特别注意的是,当使用类似“\u4E00”这种表达形式时,不可以用反引号...阅读全文

博文 2020-02-17 20:32:49 陆满庭

Centos7.2搭建kubernates集群

一、准备环境1.1 准备机器准备三台CentOS7.2机器,一台作为master节点,其他作为node节点修改主机名称hostnamectl set-hostname k8s-mst Role IP Hostname Master 192.168.0.87 k8s-cns1-mst Node 192.168.0.88 k8s-cns1-nod1 Node 192.168.0.89 k8s-cns1-nod2 修改master节点/etc/hosts,添加以下内容(不设置的话,在master上kubectl相关命令无法操作对应主机上对象) 192.168.0.87 k8s-cns1-mst 192.168.0.88 k8s-cns1-nod1 192.168.0.89 k8s-cns1-nod...阅读全文

博文 2017-07-15 17:06:16 我心随我

ETCD探索-MVCC

ETCD探索-MVCC MVCC MVCC模块ETCD的存储模块,是ETCD核心模块。 作为一个开源项目,其代码的封装是值得我们学习的。MVCC作为底层模块,对上层提供统一的方法,而这些方法都定义在kv.go这个文件中,很像一个头文件(.h)。我们可以只看kv.go以及配合kv_test.go就可以知道mvcc包是怎么用的。 kv.go type KV interface { ReadView WriteView // Read creates a read transaction. Read(trace *traceutil.Trace) TxnRead // Write creates a write transaction. Write(trace *traceutil.Trace) ...阅读全文

博文 2020-02-19 17:32:41 HammerMax

1. 通过RKE快速部署kubernetes集群

前期准备 RKE:Ranchar Kubernetes Engine https://github.com/rancher/rke由于RKE是由golang编写,所以直接下载对应系统的二进制文件即可下载地址: https://github.com/rancher/rk... 1.建议使用Ubuntu 16.04.3 LTS版本;如果使用CentOS 7,建议7.3以上版本2.各主机的hostname主机名必须不同!3.hosts文件设置:/etc/hosts要配置正确,一定要有127.0.0.1 localhost 这一项;hosts文件中包含所有主机节点的IP和名称列表。 Docker 通过Rancher提供的脚本进行安装(以下是最新支持的docker版本) Docker版本 安装脚本 1...阅读全文

Docker - 用Flannel跨主机

试了下比较流行的几种SDN,感觉flannel还是比较好用,这里简单记录一下。用的是virtualbox,3个机器,分别为:genesis: inet 192.168.99.103/24 brd 192.168.99.255 scope global dynamic enp0s3exodus: inet 192.168.99.105/24 brd 192.168.99.255 scope global dynamic enp0s3leviticus: inet 192.168.99.106/24 brd 192.168.99.255 scope global dynamic enp0s3虚机信息如下[root@localhostyum.repos.d]# uname -marsLinuxlo...阅读全文

博文 2017-09-06 04:07:34 jony456123

写Go代码时遇到的那些问题[第1期]

程序员步入“大龄”,写代码的节奏也会受到影响。以前是长时间持续地写,现在写代码的节奏变成了“波浪形”:即写一段时间,歇一段时间。当然这里的“歇”并不是真的歇,而是做其他事情了,比如:回顾、整理与总结。 平时写Go代码,时不时就遇到一些问题,或是写出一些让自己还算满意的代码,这里全部列为“问题”行列。这些“问题”(以及其解决方法)往往比较“小”、比较“碎片”,不适合以自己“擅长”的“长篇”风格写出来分享,也不知道以什么样的“题目”去分享更好,但这样的“问题”在日常又总是会遇到。考量来考量去,赶脚还是用一系列的文章去分享比较合适,即每隔一段时间,积累了一些问题后,就写一篇文章分享一下。 这是第一篇,后续不确定时间地(注意:这不是weekly的哦)发布新篇,直到没啥可写了或不写Go代码了^0^。 ...阅读全文

博文 2018-01-15 10:37:54 bigwhite

Golang的分布式锁组件,支持Reids,Pgsql或自定义驱动

通用的Golang分布式锁组件,项目地址:https://github.com/go-locks/d...,更多使用案例详见 examples Driver列表 若有意向贡献未完成的驱动代码,请通过 ISSUES 或 邮箱 249008728@qq.com 联系我 Driver 代码完成度 测试完成度 依赖包 使用说明 redis 100% 100% letsfire/redigo 详见 README.md pgsql 100% 100% lib/pq 详见 README.md etcd 未完成 未测试 etcd/client 详见 README.md etcdv3 未完成 未测试 etcd/clientv3 详见 README.md 方法说明 配置项 mutex.OptFunc 以及返回值...阅读全文

博文 2019-01-27 14:34:42 letsfire