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

Go语言开发分布式任务调度 轻松搞定高性能Crontab

第1章 课程介绍本章中将介绍一下本课程的基本内容,包括:我们要做什么、要求什么基础、将学会哪些工具、收获哪些独家干货,以及课程具体安排。1-1 课程导学试看第2章 如何执行shell命令执行"定时任务"其实就是执行"shell命令"。在本章中,将首先带大家区分"程序"与"命令",接着了解bash命令解释器的2种工作模式,并图示分析shell执行任务的底层原理与涉及的系统调用。最后,我们使会用Go语言的Command标准库,实现任务的执行,输出捕获,杀死任务等重要功能。 ...2-1 原理介绍2-2 执行任务2-3 捕获任务输出2-4 强制结束任务第3章 如何解析cron表达式cron表达式是配置定时任务执行周期的核心工具。在本章中,将首先分析cron表达式的构成以及解析逻辑,并利用开源项目c...阅读全文

博文 2019-03-28 13:34:40 itsource论坛

二)golang工厂模式

在通用的工厂模式中,一般涉及到 简单工厂模式(顾名思义:工厂 > 创建)、工厂方法(顾名思义:将方法工厂化)、抽象工厂模式(顾名思义:将工厂抽象化 工厂 > 工厂 > 创建) 特点:将接口与具体实现分离,根据需要实例化对象使用场景:日志记录,文件服务平台,数据库访问 1.定义产品接口 type P interface {} 2.定义实现结构 type P1 struct {} //implement P type P2 struct {} //implement P ...//简单3.工厂方法(简单工厂完) func F (name string) P {} //抽象3.工厂接口,用于生产工厂 type Factory interface { CreateP(name string) Cre...阅读全文

etcd+jwt实现鉴权

本文基于搭建好etcd集群,若为搭建请移步:https://www.jianshu.com/p/ec0e4911236d etcd我们使用其存储key/value的功能,存储jwt的私有key,也可以通过etcd来更新key。 设计思路: 内部服务通过go-micro api相互访问时,为了保证访问的安全,防止来自外部的攻击,我们在服务间通过token来识别。 各服务在请求对方是在header中加入token,token使用jwt生成,jwt 的私有key来自etcd。 为什么这么做 我们使用go-micro api 作为网关 ,使用etcd作为服务发现,此时访问各服务的出入口在go-micro api,其对外的地址和端口是固定的,若我们不做防护,来自外部的访问,就可以直接访问到我们内部的服...阅读全文

博文 2020-06-02 17:32:50 技术修仙

DockOne技术分享(三十一):细节 |谈谈CoreOS的etcd

【编者的话】本次分享主要介绍目前etcd的状况和其今后的发展。 @Container大会,专为一线开发者和运维工程师设计的顶级容器技术会议。 etcd是CoreOS开发的一个分布式一致性键值存储系统。etcd主要被用于存储集群的关键数据和对集群内部组建进行协调。etcd采用了raft分布式一致性协议来保证自身的数据一致性和可用性。一个etcd集群一般由3到5台节点组成。只要有多余半数的节点可用,整个etcd系统对外看来也是可用状态的。 etcd的API相对简单。首先etcd支持基本的键值操作,例如GET、PUT、DELETE。除此之外,etcd还支持CompareAndSwap这个原子性操作。CompareAndSwap首先对一个key进行值比较,如果比较结果一致才会进行下一步的赋值操作。像...阅读全文

博文 2017-06-25 15:01:21 李颖杰

Golang 容器部署

Go 使用 Docker部署的意义(优势)在哪? 由于 go 最终是编译为一个二进制可执行文件,没有运行时依赖,也不需要管理库,丢到服务器上就可以直接运行。所以,如果你有一个二进制文件,那么在容器中打包二进制文件的要点是什么?如果使用 docker 的话,还得在服务器上装 docker,那么把最终程序打包成 docker 有什么好处呢? 我想有这么几个好处: 依赖打包如果你的应用程序(二进制文件)依赖配置文件或一些静态文件,那使用docker就很方便的把这些文件一起打包进容器里。 版本控制启动Docker就和运行一个进程一样快,我们可以在几秒钟的时间内运行整个服务器集群。除此之外,Docker 镜像的注册中心使Docker容器还可以像git仓库一样,可以让你提交变更到Docker镜像中,并通...阅读全文

博文 2019-11-19 12:32:42 维子

file lock

Note: 文中部分内容截取自 File locking in Linux Prior knowledge 在了解文件锁之前先简单介绍一下File相关的知识。 在C程序中Files由文件指针(file pointers)或文件描述符(file descriptors)来指定。ISO C的标准I/O库函数( stdio.h中的fopen, fscanf, fprintf, fread, fwrite, fclose等等)用的是文件指针;UNIX 中的I/O函数(unistd.h中的open, read, write, close和ioctl)使用的文件描述符。文件指针和文件描述符提供了用于执行独立于设备的输入输出逻辑标识(logical designations),成为句柄(handle)。其...阅读全文

博文 2020-04-18 17:32:54 打倒美帝

傻傻分不清楚的kubernetes证书

傻傻分不清楚的kubernetes证书 kubeadm 生成的一坨证书是不是让人很蒙逼,这些东西没那么神奇,来深入扒扒其内裤。 root@k8s-master:/etc/kubernetes/pki# tree . |-- apiserver.crt |-- apiserver-etcd-client.crt |-- apiserver-etcd-client.key |-- apiserver.key |-- apiserver-kubelet-client.crt |-- apiserver-kubelet-client.key |-- ca.crt |-- ca.key |-- etcd | |-- ca.crt | |-- ca.key | |-- healthcheck-clien...阅读全文

博文 2020-04-06 00:34:23 sealyun

Include Mux for Microservices

<p>Hi,</p> <p>I am currently writing some helper libraries for microservices. It will be very pluggable, out of the box it just supports etcd and vulcand.</p> <p>Anyway, I am writing a server library that assists some of the bootstrapping process. I can add more automation, but I would lose the ability to mux with ...阅读全文

资源 2015-10-01 13:16:56 agolangf

golang etcd简明教程

etcd 是一个高可用强一致性的键值仓库在很多分布式系统架构中得到了广泛的应用,本教程结合一些简单的例子介绍golang版本的etcd/clientv3中提供的主要功能及其使用方法。 如果还不熟悉etcd推荐先阅读: 看图轻松了解etcd etcd常用操作介绍 Let's get started now! 安装package 我们使用v3版本的etcd client, 首先通过go get下载并编译安装etcd clinet v3。 go get github.com/coreos/etcd/clientv3 该命令会将包下载到$GOPATH/src/github.com/coreos/etcd/clientv3中,所有相关依赖包会自动下载编译,包括protobuf、grpc等。 官方文档地...阅读全文

博文 2019-10-31 12:02:38 KevinYan

k3s的单进程模式如何运行整个K8S服务

为了提升k3s的使用体验,我们将推出由k3s开发人员撰写的“k3s黑魔法”系列文章来详细介绍k3s功能、原理等方面的内容。本篇文章是该系列的第一篇,文章详细分析了k3s的单进程模式如何运行整个Kubernetes服务。 同时,欢迎大家添加k3s助手(微信号:k3s2019),加入官方微信群和大家一起交流。 前 言 Rancher Labs一直致力于云基础设施的建设,我们发布了很多产品Rancher1.x、Rancher2.x、RancherOS、Longhorn、Rio等来满足基础设施应用的各种场景,但这其中没有一款产品可以和k3s的发展速度相比,整个社区对它的认可超乎我们的想象。发布了仅仅10个月的k3s项目,就在Github上获得超9000颗star数,我们也正星夜兼程,争取在11月份发...阅读全文

博文 2019-11-14 23:33:45 更多精彩内容安装k8s Master高可用集群jony456123基于v1.10.4版本手动搭建高可用kubernetes 集群前行IOCI,CRI到kubernetes runtimeallenhaozi生产用例 | 百台边缘设备上的Kubernete

How boltdb Write its Data?

How boltdb Write its Data? A-Ha! Here’re three questions during reading the source code of BoltDB. I’ll explain our testing procedure to dive into the core of the BoltDB writing mechanism. Code link: yhyddr/quicksilver First At first, my mentor posts a question: “Did BoltDB have a temporary file when starting a read/write transaction”. Following th...阅读全文

博文 2019-10-09 12:02:41 yhyddr

Speedle 简介二:策略即改即生效, 无需重启

Speedle 简介二:策略即改即生效, 无需重启 # Speedle 策略库的存储 目前, Speedle支持两种存储方式,用户也可扩展以支持其他存储方式 * 文件 * ETCD # 策略的修改 * 命令行/spctl * RestFul API # 如何使修改的策略生效 无论文件还是ETCD, Speedle运行时(ADS)都会Watch其更改,依据更改自动更新运行时策略库,更改几乎是即刻生效, 无需额外操作...阅读全文

博文 2019-04-15 16:19:55 speedle_fan

Go实现海量日志收集系统(三)

再次整理了一下这个日志收集系统的框,如下图 这次要实现的代码的整体逻辑为: 完整代码地址为: https://github.com/pythonsite/logagent etcd介绍 高可用的分布式key-value存储,可以用于配置共享和服务发现 类似的项目:zookeeper和consul 开发语言:go 接口:提供restful的接口,使用简单 实现算法:基于raft算法的强一致性,高可用的服务存储目录 etcd的应用场景: 服务发现和服务注册 配置中心(我们实现的日志收集客户端需要用到) 分布式锁 master选举 官网对etcd的有一个非常简明的介绍: etcd搭建: 下载地址:https://github.com/coreos/etcd/releases/ 根据自己的环境下载对...阅读全文

博文 2020-02-04 16:32:43 51reboot

k8s最新实战生产:02-Kubernetes部署-摸一摸朋友吧

Kubernetes部署 kubernetes集群部署介绍 - kubeadm 截止到2020.04.08我们的生产环境还是V1.15.3,但这里我们使用比较新的V1.16.2版本,如果你是准备在生产环境中搭建集群,建议使用上一个版本的最大修正版V1.15.5,由于V1.16.2版本和之前的有比较大的变化,主要体现了一些APIVersion的版本变化,所以我们采用V1.16.2。 因为我们现在的目标是学习Kubernetes的知识点,所以我们选择kubeadm单点的方式部署。后面我们会单独讲kubeadm高可用的方案。 有些小伙伴会问!kubeadm现在可以上生产吗?我负责任的告诉你,完全可以!我们生产节点6个区域总worker数量 650+。 kubernetes集群部署环境准备 我们使用...阅读全文

博文 2020-04-09 10:33:01 何阳光

etcd管理,证书配置,扩展,迁移恢复,带证书扩展节点

广告 | kubernetes各版本离线安装包 etcd 证书配置 生产环境中给etcd配置证书相当重要,如果没有证书,那么k8s集群很容易被黑客利用而去挖矿什么的。做法非常简单,比如你下了一个不安全的镜像,通过程序扫描到etcd的ip和端口,那么黑客就可以绕开apiserver的认证直接写数据,写一些deployment pod等等,apiserver就会读到这些,从而去部署黑客的程序。 我们就有一个集群这样被利用去挖矿了,安全无小事,如果黑客恶意攻击也可轻松删除你的所有数据,所以证书与定期备份都很重要,即便有多个etcd节点,本文深入探讨etcd管理的重要的几个东西。 证书生成 cfssl安装: mkdir ~/bin curl -s -L -o ~/bin/cfssl https://...阅读全文

博文 2018-08-14 20:35:08 fanux

golang基础之数组

文章转载请注明出处www.leexide.com 希望每一位寻求转载的朋友都能够按照要求进行,鼓励原创,尊重原创。 微信公众号:DevOps运维运营之家 QQ号码:1045884038 E-mail:leexide@126.com 如有问题或建议,请关注微信公众号 1 数组介绍 数组是同一类型元素的集合。例如,整数集合 5,8,9,79,76 形成一个数组。Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(注:当然,如果是 interface{} 类型数组,可以包含任意类型) 。 2 数组常见操作 一个数组的表示形式为 [n]T。n 表示数组中元素的数量,T 代表每个元素的类型。元素的数量 n 也是该类型的一部分 。 2.1 数组初始化 一维数组初始化如下 func mai...阅读全文

博文 2018-07-02 21:35:45 Leexide

10分钟将你的Go工程转换为Go Module模式

引言自从在Go 1.11和更高版本中引入了Go的新的依赖管理系统以来,GoLang开发人员已经接受了包版本控制解决方案。这样做的用户可以使用GoCenter存储库中的不可变公共Go 模块,并通过更健壮、更可靠的Go Pipeline获得更快的构建速度。但是,将现有的项目转换为使用Go Module并不总是很容易,尤其是如果该项目已经尝试过GoLang的其他包管理解决方案时。为了帮助GoLang社区正确地使用Go Module,我们将使用开源的etcd项目(Kubernetes使用的键值数据存储)作为示例。这是一个最佳实践的实际示例,因为它足够复杂,可以展示一些常见的实践PS:在上一篇关于Go语言开发的的文章中(传送门:Go 语言依赖管理的优势),我们介绍了Go 依赖管理的发展历史以及Go M...阅读全文

博文 2020-03-05 18:25:06 JFrogChina

Tikye(TIY)知识科普之技术架构

设计思路考虑到Tikye对于区块链系统的性能、安全等需求远比一般的公有链性能更高,为了保证交易场景下的公开透明,交易各方皆能参与到区块链的共同监管与治理,同时能兼顾高频交易需要较高的TPS,我们设计了一套支持可插拔、可扩展的高性能应用级区块链系统。在下文中,该区块链系统简称Tikye。该系统为开发者提供便捷的SDK工具包,同时还将为外部系统提供可兼容的API接口,基于Tikye的特性解决传统问题。主要依靠智能合约来解决基于Tikye的事务性问题,智能合约在区块链环境中运行,保证了事务执行的可行性、高效性和安全性。为了区块链系统的处理能力,我们通过引入多条平行链组成链路由系统。平行链和主链保持既独立又统一的关系,所有平行链可以拥有自己的超级节点、状态机和原始交易数据,由主链来存储关键数据以及完...阅读全文

博文 2019-09-19 11:02:46 逗币狗

Go语言实用技巧

基础代码说明 time类:系统的时间类 time.second/minute/hour time.Duration能够对时间进行转换,默认开始是1ns,换算单位是1ms = 1000µs = 1000,000ns,往上到时间的那一层也能正常转换 time类能够自动转换时间,通用的是nuix的时间格式,不需要手动处理时间格式 strings类提供的split方法能够拆分字符串为字符串数组 golang的post的请求和接收,并对数据进行处理 post的发送 func HttpServerSender(data data.SenderData) { jsonss,err :=json.Marshal(data) if err != nil { fmt.Println(err.Error() ) ...阅读全文

博文 2019-01-02 12:34:45 木鱼cavalry

golang-etcd系列(一)--初识

etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,是目前容器编排领域火热的 Kubernetes(k8s) 内置的服务发现与节点一致性中间件,用于提供可靠的分布式键值(key-value)存储、配置共享和服务发现等功能。etcd 可以用于存储关键数据和实现分布式调度,在现代化的集群运行中能够起到关键性的作用。 etcd 基于 Raft 协议,通过复制日志文件的方式来保证数据的强一致性。在 etcd 之前,常用的是基于 Paxos 协议的 ZooKeeper。 etcd etcd 主要特性有: 简单:基于 HTTP+JSON 的 API 让你用 curl 就可以轻松使用。 安全:可选 SSL 客户认证机制。 快速:每个实例每秒支持一千次写操作。 可信:使用 Raft 算...阅读全文

博文 2019-12-08 23:32:41 热爱coding的稻草

golang 命令行开发基础

os.Args获取命令行参数 os.Args参数列表 0 :程序路径(go run 运行 0 为临时工作目录的路径,编译后运行,0 二进制文件名) 1 第一个参数 2 第二个参数... ... len(os.Args) 参数数量 示例 /** * @Author : jinchunguang * @Date : 19-11-4 上午10:37 * @Project : tcp-chat */ package main import ( "fmt" "os" ) func main() { // 获取命令行参数 fmt.Println("命令行参数数量:", len(os.Args)) for k, v := range os.Args { fmt.Printf("args[%v]=[%v]\...阅读全文

博文 2019-11-04 15:33:23 aside section._1OhGeD

etcd学习笔记1

今天看etcd代码时发现打印版本信息的代码,追踪发现其中的GitSHA是通过编译传进来的值。 26 var ( 27 // MinClusterVersion is the min cluster version this etcd binary is compatible with. 28 MinClusterVersion = "3.0.0" 29 Version = "3.5.0-pre" 30 APIVersion = "unknown" 31 32 // Git SHA Value will be set during build 33 GitSHA = "Not provided (use ./build instead of go build)" 34 ) 执行结果如下所示: ...阅读全文

博文 2020-05-31 22:32:53 打倒美帝

阿里云上Kubernetes集群联邦

摘要: kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧,如何应对可用区级别的Fail,以及容灾备份?是否会造成厂商锁定,增加迁移成本?如何应对线上线下突发流量?如何统一管理调度容器资源?单个集群规模的上限等等。 **点此查看原文:http://click.aliyun.com/m/43608/** kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧,如何应对可用区级别...阅读全文

彻底搞懂 etcd 系列文章(二):etcd 的多种安装姿势

0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管。etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件。 《彻底搞懂 etcd 系列文章》将会从 etcd 的基本功能实践、API 接口、实现原理、源码分析,以及实现中的踩坑经验等几方面具体展开介绍 etcd。预计会有 20 篇左右的文章,笔者将会每周持续更新,欢迎关注。 1 etcd 安装与使用 在上一篇主要介绍了 etcd 的相关概念和使用场景,本篇主要介绍 etcd 的多种安装使用方式。 1.1 etcd 概念词汇表 在开始 etcd 的安装使用之前,我们先了解下 etcd 的概念词汇表,以便于下文的理解。 Raft:etcd所采用的保证分布...阅读全文

博文 2020-05-27 22:32:44 aoho

2018-10-12

微服务 :就是微小紧凑的服务, 提供统一简捷的 API 供外部访问, 实现一组独立的功能. go-micro PRC: 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。gPRCProtocol Buffers:一款平台无关,语言无关,可扩展的序列化数据格式,参考xml,但更小,更快,更简单。只要定义好数据结构,就可以用各个语言生产对应的语言版本。内部数据是纯二进制格式。ETCD: Etcd的目标是构建一个高可用的分布式键值(key-value数据库) ,etcd内部使用了raft这个一致性算法利用golang实现微服务简单介...阅读全文

博文 2018-10-12 22:34:40 李腾_db67

简单易懂的golang[go-micro]微服务

微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。 一般的微服务工作流程都可以用写明这种图来表达。 先把自己的服务注册到注册中心 客户端调用的时候去注册中心查询调用的服务的服务器列表 得到服务列表,随机调取一台进行远程协程 我们这里的注册中心使用的是ETCD 1.为什么不选择Redis? ps:首先注册中心的存放必须保证稳定,不可缺失。要不注册中心挂了,你要一个个服务的去重启?然后把它们从新注册到注册中心?这工作量你想想都不愿意更别说运维了。 2.为什么不选择ZooKeeper ? ps: ZooKeeper 因为Zookeeper 只提供了 c++ ...阅读全文

博文 2020-04-02 14:32:55 傻梦兽0

golang-etcd系列(一)--初识

etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,是目前容器编排领域火热的 Kubernetes(k8s) 内置的服务发现与节点一致性中间件,用于提供可靠的分布式键值(key-value)存储、配置共享和服务发现等功能。etcd 可以用于存储关键数据和实现分布式调度,在现代化的集群运行中能够起到关键性的作用。 etcd 基于 Raft 协议,通过复制日志文件的方式来保证数据的强一致性。在 etcd 之前,常用的是基于 Paxos 协议的 ZooKeeper。 etcd 主要特性有: 简单:基于 HTTP+JSON 的 API 让你用 curl 就可以轻松使用。 安全:可选 SSL 客户认证机制。 快速:每个实例每秒支持一千次写操作。 可信:使用 Raft 算法充分实现...阅读全文

博文 2019-12-08 22:32:38 热爱coding的稻草

Go语言(二十一) 常见的模块使用

模块使用 执行系统shell命令 使用os/exec模块 package main import ( "fmt" "os/exec" ) func main() { var ( cmd *exec.Cmd err error ) cmd = exec.Command("/bin/bash","-c","echo hello") err = cmd.Run() if err != nil { fmt.Println(err) } fmt.Println(err) } 获取命令执行的返回结果 package main import ( "fmt" "os/exec" ) func main() { var ( cmd *exec.Cmd output []byte err error ) //生...阅读全文

博文 2020-06-01 15:33:17 wx5b285b48ed74e

Interface naming for slightly more complex types, or even partial types?

<p>A colleague and I have recently been refactoring a bunch of the internal libraries that are used across our Go-based backend services. As part of this refactoring I&#39;ve been trying to move towards a more idiomatic use of interfaces across the board. Historically, we&#39;ve defined interfaces right next to their concrete counterp...阅读全文

如何用 Redigo 访问 Codis

开篇依然是那三个问题: redigo 是否能够用于 codis ? 如果不经过任何加工, 直接用 redigo 去访问 codis, 会出现什么样的问题 ? codis 的 golang 客户端如何实现 ? 先贴出来, 我之前直接用 Redigo 接入 codis 的代码 // Redis global redis connection pool var Redis *redis.Pool var RedisInitErr = errors.New("init redis error") Redis = &redis.Pool{ MaxIdle: 10, Dial: func() (conn redis.Conn, e error) { addrs, err := getHosts() if...阅读全文

博文 2020-01-11 06:32:50 HHF技术博客

Backend developers, what's your workflow when writing servers with go?

<p>I&#39;m coming from a NodeJS background. When building a server in NodeJs, we tend to leave caching, gzipping, most of the HTTP part to the web server (nginx or such). In production, we deploy a cluster of the app server (which is asynchronous by design) to multiple cores. Use frameworks like Koa/Express for handling routes and middlew...阅读全文

图解kubernetes中etcd增删改查的工业实现

kubernetes中基于etcd实现集中的数据存储,今天来学习下基于etcd如何实现数据读取一致性、更新一致性、事务的具体实现 1. 数据的存储与版本 1.1 数据存储的转换 在k8s中有部分数据的存储是需要经过处理之后才能存储的,比如secret这种加密的数据,既然要存储就至少包含两个操作,加密存储,解密读取,transformer就是为了完成该操作而实现的,其在进行etcd数据存储的时候回对数据进行加密,而在读取的时候,则会进行解密 1.2 资源版本revision 在etcd中进行修改(增删改)操作的时候,都会递增revision,而在k8s中也通过该值来作为k8s资源的ResourceVersion,该机制也是实现watch的关键机制,在操作etcd解码从etcd获取的数据的时候,...阅读全文

博文 2020-03-05 14:34:34 8小时_2020

viper配置框架-支持zookeeper的读取和监听

viper作为配置框架,其功能非常的强大,我们没有理由不去了解一下。我们先看官网对它的功能简介: viper是完整配置解决方案,他可以处理所有类型和格式的配置文件,他有如下功能: 设置默认配置 支持读取 JSON TOML YAML HCL 和 Java 属性配置文件 监听配置文件变化,实时读取读取配置文件内容 读取环境变量值 读取远程配置系统 (etcd Consul) 和监控配置变化 读取命令 Flag 值 读取 buffer 值 读取确切值 乍一看,未免有相见恨晚之感,可仔细一想,不免脑袋里有另外一种声音:不会不支持读取zookeeper吧?好吧,至少我是这样的。 基于这种想法,当然要去立马尝试,如下: viper.AddRemoteProvider("zookeeper", "xx....阅读全文

博文 2020-05-23 23:34:24 修华师

Something that has bothered me about Go errors - how do I resolve them in a loosely coupled way?

<p>This is true for practically every programming language, but particularly in Go, where the programmer is encouraged to return up the stack.</p> <p>Calling functions should eventually handle the error - how do I eliminate the tight coupling?</p> <p>In another language I might use a derived exception object that con...阅读全文

资源 2018-04-07 22:30:10 xuanbao

分析kubernetes中的事件机制

我们通过 kubectl describe [资源] 命令,可以在看到Event输出,并且经常依赖event进行问题定位,从event中可以分析整个POD的运行轨迹,为服务的客观测性提供数据来源,由此可见,event在Kubernetes中起着举足轻重的作用。 event并不只是kubelet中都有的,关于event的操作被封装在client-go/tools/record包,我们完全可以在写入自定义的event。 现在让我们来一步步揭开event的面纱。 Event定义 其实event也是一个资源对象,并且通过apiserver将event存储在etcd中,所以我们也可以通过 kubectl get event 命令查看对应的event对象。 以下是一个event的yaml文件: apiV...阅读全文

博文 2020-03-05 11:32:44 silenceper

Managing highly-available etcd clusters on cloud-providers with Terraform

<p>If you have ever managed an etcd cluster on AWS and tried to keep it running reliably for several months, you certainly know that it might be a bit of a rocky road. For instance, the way etcd is designed does not natively allow it to be ran inside an auto-scaling group, so when your EC2 instance / NAT Gateway / AZ dies, you have no choice ...阅读全文

资源 2017-10-24 08:00:10 agolangf

分析kubernetes中的事件机制

我们通过 kubectl describe [资源] 命令,可以在看到Event输出,并且经常依赖event进行问题定位,从event中可以分析整个POD的运行轨迹,为服务的客观测性提供数据来源,由此可见,event在Kubernetes中起着举足轻重的作用。 event并不只是kubelet中都有的,关于event的操作被封装在client-go/tools/record包,我们完全可以在写入自定义的event。 现在让我们来一步步揭开event的面纱。 Event定义 其实event也是一个资源对象,并且通过apiserver将event存储在etcd中,所以我们也可以通过 kubectl get event 命令查看对应的event对象。 以下是一个event的yaml文件: apiV...阅读全文

博文 2020-03-05 12:34:27 silenceper