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

最近看了篇文章,有一部分内容是关于端口号数量限制的,感觉是作者理解错误了,有懂的帮忙解答一下

16位的端口号数量有限,如果每次后端交互都需要新建连接,理论上来说,同时请求后端Service的Goroutine数量无法超过65535这个硬性限制,在如今这个动辄“十万”“百万”高并发时代,最高6w并发貌似不太拿得出...阅读全文

k8s安装部署

1.k8s集群的安装 image.png 除了核心组件,还有一些推荐的Add-ons: 组件名称 说明 kube-dns 负责为整个集群提供DNS服务 Ingress Controller 为服务提供外网入口 Heapster 提供资源监控 Dashboard 提供GUI Federation 提供跨可用区的集群 Fluentd-elasticsearch 提供集群日志采集、存储与查询 1.2:修改IP地址、主机和host解析 10.0.0.11 k8s-master 内存1G 10.0.0.12 k8s-node-1 内存1G 10.0.0.13 k8s-node-2 内存1G 所有节点需要做hosts解析 [root@k8s-master ~]# cat /etc/hosts 127.0...阅读全文

博文 2020-01-12 15:33:05 Freestyle_0f85

让Raft变快100倍 - Dragonboat的写优化

Dragonboat是近期开源的Go实现的多组Raft库,16字节荷载的写可以持续在900万次每秒,9:1高读写比下可以持续在超千万次每秒。详细的benchmark信息可参考github项目首页,同时也烦请大家点Star鼓励:github.com/lni/dragonboat​github.comDragonboat的性能是持续优化改进的结果,它从2017年年中时候的每秒10万次写,一路走来,经过数十项优化以后最终成为当前开源版本所能具备的1000万次写每秒的性能。对于同样的吞吐需求,更高效的实现意味着库本身消耗的资源将更少,能为用户应用留出的资源更多。Dragonboat在2.8GHz志强上,对于16字节荷载,平均每个CPU核心能承担超过每秒40万次写,且在测试中线性伸展至22核每秒900...阅读全文

博文 2019-01-08 11:34:49 贺大伟

etcd快速入门

## 安装 下载地址:https://github.com/etcd-io/etcd/releases 下载完成解压后,目录中有两个二进制文件, etcd以及 etcdctl。其中 etcd就是运行etcd服务的二进制文件, etcdctl是官方提供的命令行etcd客户端,使用 etcdctl可以在命令行中访问etcd服务。 查看etcd版本 `./etcd --version` ## 运行 ### 单点启动 查看启动帮助 `./etcd -h` 启动 `./etcd` ``` 2019-11-01 10:04:11.922204 I | embed: name = default 2019-11-01 10:04:11.922204 I | embed: data dir = defaul...阅读全文

博文 2019-11-05 13:17:37 bytemode

(双语)Go语言的更新也将难逃疫情影响

Go语言经常被称为“Golang”,是一门高效、易学、受到广泛应用和开发者喜爱的计算机编程语言。一般情况下,Go语言维持着半年发布一次更新的节奏。但是,随着疫情在世界范围内的发展,Go语言的更新也将受到影响。下面,我们就从英语原文来理解一下所受影响的情况,顺便了解一下相关的科技英语词汇。 As we face this pandemic together and do our part to stay home and contain the spread, many of Google's various projects are being forced to change their timelines, with Chrome being the prime example.【译】当...阅读全文

图像相似性比较实践

2008年TinEye上线了图片搜索,开始是注册制,后来逐步放开。2011年, Google也上线了相似图片搜索,通过用户上传的图片,可以搜索相似的图片。参考文档中提供了一些介绍图像搜索的一些文章, 尤其是阮一峰2011年和2013年两篇普及性的文章,可以帮助你了解图像相似搜索的原理。 图像相似性搜索应用广泛、除了使用搜索引擎搜索类似图片外,像淘宝可以让顾客直接拍照搜索类似的商品信息、应用在商品购物上。也可以应用物体识别比如拍图识花等领域。目前我在调研图片鉴权的方案,通过一张图片和图片库中的图片进行比对,来确定这张图片是否侵权,或者退一步讲,图片库中是否包含和这张图片类似。 这个需求和目前深度学习应用中的图像识别还不一样, 图像识别是需要将图像中的物体识别出来, 猫啊狗啊什么的,而我所要做的...阅读全文

博文 2018-12-23 21:22:16 smallnest

六、protobuf的使用和原理

protobuf详解 1、安装 源码包下载 git clone https://github.com/google/protobuf 安装依赖 sudo apt-get install autoconf automake libtool curl make g++ unzip 生成需要的配置脚本 cd protobuf //进入源码库中 ./autogen.sh //运行脚本生成需要的配置脚本 编译安装 ./configure make make check sudo make install sudo ldconfig //用于刷新共享库的缓存 安装proto-gen-go go get -u github.com/golang/protobuf/proto go get -u githu...阅读全文

博文 2019-01-13 16:34:39 yongfutian

Etcd clientV3 使用TLS证书存取KV

为了保证数据传输的安全行Etcd clientV3提供了通过tls,https通讯。通过tls.Config可以轻松实现。具体看如下示例代码就能理解 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{"https://172.17.84.204:2379", "https://172.17.84....阅读全文

博文 2019-10-09 11:02:59 麦穗儿

kube-dns的前世今生

上一期我们以1.2版本为背景,介绍了K8S的服务发现和kube-dns插件的相关内容。有了上一期内容作为基础,这期了解最新版本的kube-dns就会容易很多。 本文主要对比1.2和1.4版本中kube-dns 的主要变化,以及最新版本中kube-dns的内部实现。满满的干货来了,你准备好了吗? ## 大纲 ● kube-dns的主要变化 ● kube-dns的实现原理 ● kubedns容器详解 ● dnsmasq容器简介 ● exechealthz容器简介 ## 主要变化 **● 服务发现机制未变化** 也就是说kube-dns对外的接口是基本没变的。变化主要在于kub...阅读全文

ETCD探索-Watch

ETCD探索-Watch 梗概 watch是mvcc包中的一个功能,之所以拿出来说,是因为它确实有很重的逻辑。watch是监听一个或一组key,key的任何变化都会发出消息。某种意义上讲,这就是发布订阅模式。 对比 既然Watch机制就是发布订阅模式,我们通过对比Kafka,来更深入了解Watch。首先说明结论: ETCD没有消费者组的概念,所以不能代替Kafka 对比其他方面呢: ETCD Kafka 消费方式 监听一个Key 订阅一个Topic 生产方式 Put(Key, Value) Produce(Topic, Message) 历史消息是否保留 保留 保留 能否从指定位置消费 可以从指定Revision消费 可以从指定offset消费 能否保证消息不重放 不能 消费者会主动上报of...阅读全文

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

Go - 基础知识三

本篇主要总结了array,slice,map。 一:array就是数组,定义: var arr[n] type 其中n表示数组长度,type表示存储元素的类型,对数组的操作通过[]来进行读取或者赋值 二:Go里面的"动态数组"叫slice,slice并不是真正意义上的动态数组,而是一个引用类型。 slice总是指向一个底层array,slice的声明也可以像array,只是不需要长度。 注意声明数组时,方括号内写明了数组的长度或者是用...自动计算长度,而声明slice时,方括号内没有任何字符。 由于slice是引用类型,所以当引用改变其中元素的值时,其他的所有引用都会改变该值。如下图: slice拼接: 三:map也就是字典的概念,格式:map[keyType]valueTyp...阅读全文

k8s :kube-apiserver 访问 etcd 后端存储

前言 本文介绍 kube-apiserver 是如何访问 etcd 后端存储 相关源代码主要在 kubernetes/staging/src/k8s.io/apiserver/pkg/storage 通用接口 Interface offers a common interface for object marshaling/unmarshaling operations and hides all the storage-related operations behind it(原文注释) // kubernetes/vendor/k8s.io/apiserver/storage/interfaces.go type Interface interface { Versioner() Ver...阅读全文

博文 2018-03-30 16:34:41 xingpingz

Go from 2020

GoLANG From 2020 因为头脑发热选择go语言?我想可能不是,在经过一系列的了解和调研后,我是认真的选择了golang, 当Rob Pike不满C++委员会要先添加35中新特性之后,毅然决然的在2009年搞出一个以c语言为原型的下,借鉴了其他的语言的一些特性的新的编程语言GO。大牛就是大牛,一言不合,我就自己造。[Less can be more 大道至简,小而蕴真 让事情变得复杂很容易,让事情变得简单才难这是Go语言的工程文化,太NB了。 其次,Go的诞生本身就自带光环,源自Google,自然保证其“血统纯正”,由三位大佬亲自操刀规划而出,后又加入了Russ Cox这个主力开发者。在这么多人的光环加持下,其一出生就备受瞩目。 Go语言擅长处理高并发、分布式开发的应用场景,同时伴...阅读全文

博文 2020-05-12 19:32:45 云原生生态圈

Twitter snowflake ID 算法之 golang 实现

是什么? snowflake ID 算法是 twitter 使用的唯一 ID 生成算法,为了满足 Twitter 每秒上万条消息的请求,使每条消息有唯一、有一定顺序的 ID ,且支持分布式生成。 主要解决了高并发时 ID 生成不重复的问题 结构 snowflake ID 的结构是一个 64 bit 的 int 型数据。 如图所示 : 1 bit:不使用,可以是 1 或 0 41 bit:记录时间戳 (当前时间戳减去用户设置的初始时间,毫秒表示),可记录最多 69 年的时间戳数据 10 bit:用来记录分布式节点 ID,一般每台机器一个唯一 ID,也可以多进程每个进程一个唯一 ID,最大可部署 1024 个节点 12 bit:序列号,用来记录不同 ID 同一毫秒时的序列号,最多可生成 4096...阅读全文

Go语言使用Golang连接MongoDB数据库实现增删改查

Go语言使用Golang连接MongoDB数据库实现增删改查 1.通过mongodb服务端口号启动mongodb服务 text 2.连接mongodb数据库 3.插入数据到持久层mongodb中 4.在持久层mongodb中删除数据 5.将数据在持久层mongodb中更改 6.在数据库中查询单条或多条数据 7.显示数据库集合中元素数目 本文转载自:http://www.hemadaili.com/help/news/detail/5d54ff289f02b700084d92a5.htm...阅读全文

博文 2019-08-16 15:03:16 犀牛代理

go任务调度6(etcd租约机制/自动过期)

对于实现分布式乐观锁非常重要。如果锁了,突然宕机了,锁是需要自动释放的。所以这锁在etcd里是需要生命期的。过期演示: package main import ( "context" "fmt" "go.etcd.io/etcd/clientv3" "time" ) func main() { var ( config clientv3.Config client *clientv3.Client err error lease clientv3.Lease leaseGrantResp *clientv3.LeaseGrantResponse leaseId clientv3.LeaseID putResp *clientv3.PutResponse kv clientv3.KV getR...阅读全文

博文 2019-04-20 17:35:12 梁十八

互融云永续合约交易平台搭建-开发数币永续合约交易系统

互融云永续合约交易平台搭建-开发数币永续合约交易系统互融云永续合约交易系统不需要交割的特点更人性化,且永续合约结算快,有效提升了市场活跃度,也加大了投资者风险对冲、套期保值的机会。全球领先数字资产交易平台OKEX不断创造着币圈一个又一个纪录,践行着自己安全、创新、可信赖的承诺。据了解,从2018年12月至4月底,OKEX永续合约上线4个月以来,OKEx合约总成交额达4500亿美金,单日最高成交额突破120亿美金,创行业之最。永续合约运行稳定,期间共上线BTC、LTC、ETH、XRP、EOS、BCH、TRX等九个币种,成交额突破350亿美金,并且实现全币种零分摊。 随着数字货币期货的快速发展,广大用户看到了期货合约可以套期保值这一优势,并大力投身于合约交易之中。针对于资产量较大的用户来说,传统...阅读全文

博文 2019-08-22 17:32:53 北京互融时代

域名与网站分会场——阿里云双十一促销清单

一年最期盼到来的日子,就是这一天,没有之一。 一年最懊悔错过的日子,也是这一天,一样没有之一。 相信你已经猜到了,这一天就是——11.11 今年这个重要的日子,阿里云域名又将带来什么样的惊喜和欢愉呢?! 促销清单已新鲜出炉,高能剧透看过来~~ ————————————域名低价注册1元起——————————— 活动的方式简单点,优惠的力度粗暴点。 对于大家喜闻乐见的需求,这个双11统统满足你。 届时将有近20种域名后缀,纷纷打出年度最低价格和独家折扣。 • 国家顶级域名 .cn 11.11注册:¥11/首年 原价39元 (活动时间:11.11 08:00-24:00) • 国际顶级域名 .com 11.11注册:¥45/首年 原价60元 (活...阅读全文

10秒钟,让你的方法变为RPC服务

rpcx一个服务治理的Go RPC框架, 拥有非常多的特性,支持跨语言的服务调用。 众多的特性可以参考doc.rpcx.site。它的服务治理的特性深受阿里巴巴的Dubbo框架的启发。 在实际的产品应用中,用户使用两台服务器+8台日志搜集服务(Client),轻松处理每天几十亿的服务调用, 除了中间一个路由器硬件闪断, 整个系统平稳运行多半年。 相比较之前Java的实现, 服务器节省了一半。 用户使用rpcx框架重构后的系统每月为公司节省了几十万元的成本。 rpcx框架的一个设计哲学就是简单。不希望用户需要花费大量的时间在框架的学习上,并且不需要proto文件或者重复且冗余的服务配置。最少只需要10行代码就可以创建一个服务, 如果需要额外的配置,也只需要几十行的代码。 虽然rpcx开发简单,...阅读全文

博文 2018-02-28 10:57:22 smallnest

golang游戏项目中使用 tls、https 与etcd服务通讯 – 莿鸟栖草堂

在全球同服的游戏架构中,网络结构一般设计成集群的形式,用户随便在哪个服务器节点上都可以玩,也就要求每个节点的环境都是一致的,节点之间是可以自由下线上线的,用户是可以在每个节点自由注册的…等等,各种需求的出现,会需要一款能主动发现节点上线线,能统计全局所有服务器负载、状态,能实时下发配置等信息到所有节点的这么一款软件,那么就用到 ETCD 了。 etcd 作为 高可用分布式配置同步的软件,一般只对内网服务,偶尔也会暴露到外网。不管是内网,还是外网,都需要安全认证这一步,而其默认是有以及用户名、密码的认证方式,只是需要对每一个索引做权限设定。etcd 官方也后 TSL 的认证,同时也只是 HTTPS 形式传输数据,以确保哪怕在内网传输,也保证数据安全性。 ETCD server的配置的下载地址:...阅读全文

博文 2017-09-16 03:22:37 CFC4N

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-08 12:34:43 itsourceshop

ubuntu+docker搭建etcd集群

本文基于compose管理镜像,对此不熟悉的,可以先了解下如何使用。 ####安装compose 下载compose,使用下面的指令下载compose ``` sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 将可执行权限应用于二进制文件: ``` sudo chmod +x /usr/local/bin/docker-compose ``` 创建软链: ``` sudo ln -s /usr/local/bin/docker-compose /...阅读全文

博文 2020-05-22 16:40:28 kukayou

ubuntu 下 golang 跨平台编译 windows 程序

1. 安装 gcc-mingw-w64 apt-get install gcc-mingw-w64 2. 跨平台编译 生成 64位 exe 可执行文件. env CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build -o main.exe main.go 生成 32 位 exe 可执行文件 env CGO_ENABLED=1 GOOS=windows GOARCH=386 CC=i686-w64-mingw32-gcc go build -o main.exe main.g...阅读全文

k8s-01-安装及介绍

k8s的安装方式: yum安装 1.5 最容易安装成功,最适合学习的 源码编译安装---难度最大 可以安装最新版 二进制安装---步骤繁琐 可以安装最新版 shell,ansible,saltstack kubeadm 安装最容易, 网络 可以安装最新版 minikube 适合开发人员体验k8s, 网络 1.k8s集群的安装 1.k8s的架构 image.png 除了核心组件,还有一些推荐的Add-ons: 组件名称 说明 kube-dns 负责为整个集群提供DNS服务 Ingress Controller 为服务提供外网入口 Heapster 提供资源监控 Dashboard 提供GUI Federation 提供跨可用区的集群 Fluentd-elasticsearch 提供集群日志采集...阅读全文

博文 2019-12-11 06:32:40 UncleZ_strive

kcp的优势

传输数据上增加包头 ``` conv:连接号。UDP是无连接的,conv用于表示来自于哪个客户端。对连接的一种替代 cmd:命令字。如,IKCP_CMD_ACK确认命令,IKCP_CMD_WASK接收窗口大小询问命令,IKCP_CMD_WINS接收窗口大小告知命令, frg:分片,用户数据可能会被分成多个KCP包,发送出去 wnd:接收窗口大小,发送方的发送窗口不能超过接收方给出的数值 ts:时间序列 sn:序列号 una:下一个可接收的序列号。其实就是确认号,收到sn=10的包,una为11 len:数据长度 data:用户数据 ``` 1.超时重传加速: TCP超时计算一次就是RTOx2,何况3次,而KCP启动快速模式后可设置超时时间(大家都说1.5比较好),提高了传输速度。 2.选择重...阅读全文

博文 2020-02-26 17:41:42 lwcbest

golang unit test

本篇文章展示了怎么写Unit Test及怎么统计coverage, 为了方便写UT,最好exposed Api is Method not function,为了更好的帮助大家理解,给出了一个例子方便大家参考。例子分为三部分,source code, unit test code, Makefile.Code 目录mkdir -p ~/test/src/gounit/etcdsource code package etcd import ( "context" "log" "time" "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes" "go.etcd.io/etcd/clientv3" ) type KV interface { ...阅读全文

博文 2019-03-26 02:34:43 cli1871

Golang 通过 Consul 实现分布式锁

Golang 通过 Consul 实现分布式锁 Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制. Consul 的使用场景 docker 实例的注册与配置共享 coreos 实例的注册与配置共享 vitess ...阅读全文

博文 2020-03-05 21:32:46 yixiao9206

ETCD集群部署文档

ETCD部署及解释 一、部署环境 主机账号 主机密码 root XXXXXXXXX 二、资源配置 |主机名|IP地址|CPU(核心)|内存(GB)|系统硬盘(GB)|挂载硬盘(GB)| |-|-|-|-|-|-|-| |etcd-k8s-master-1|192.168.40.140|2|4|20|100| |etcd-k8s-master-2|192.168.40.141|2|4|20|100| |etcd-k8s-master-3|192.168.40.142|2|4|20|100| 三、安装、启动etcd 3.1 安装ansible # 安装ansible yum install ansible -y # 配置ansible hosts文件 vim /etc/ansible/hosts...阅读全文

博文 2019-11-14 12:02:43

kinesis概念介绍 golang/python3/命令行 使用教程

Kinesis 的整体架构如下: image.png Kinesis 的基本术语 Kinesis Data Stream Kinesis Data Stream 实时吸收大量数据、持久存储数据并使这些数据可供使用。其由多个分片组成,每个分片里面包含一系列数据记录,每个数据记录有一个由 Kinesis Data Stream 分配的序列号。 数据记录 数据记录是存储在 Kinesis data stream 中的数据单位。数据记录由序列号、分区键和数据 Blob 组成,数据 Blob 可以是 最多 1 MB,并且是不可变的。 保留周期 数据记录在添加到流中后保存的时长,默认保存 24 小时,可以设置为更久的值,最长保存 168 小时,但是设置超过 24 小时的保留周期是会额外收费哦。 分片 分...阅读全文

博文 2019-12-11 18:32:44 SailSea

Riot is a distributed key/value system basing raft algorithm, leveldb and bitCask backend storage!!!

raft算法种类的实现有很多,比较流行的是etcd raft和hashicorp raft,这两个都是Go语言实现的raft算法库,并且都大量应用到生产环境中,可靠性高。由于本人对hashiro raft熟悉一点,刚好又对Go语言有兴趣,所以选择了hashicorp raft来实现一个简单的分布式key/value系统. 系统设计的基本目标: 具有容错性 - 可以在线自动线性扩展节点 - 可以自动增删节点 - 具体增删查改操作 - 可以适配多种存储引擎 - 支持日志/快照重建 https://github.com/laohanlinux/riot https://laohanlinux.github.io/2016/04/25/%E4%BD%BF%E7%94...阅读全文

centos7使用kubeadm初始化k8s集群(主节点)

1、安装docker,参考 https://docs.docker.com/install/linux/docker-ee/centos/ 配置:编辑或创建 /etc/docker/daemon.json 添加 "registry-mirrors": ["https://dockerhub.azk8s.cn","https://reg-mirror.qiniu.com"] systemctl start docker #启动 systemctl enable docker #开机自启 2、防火墙关闭 systemctl status firewalld.service systemctl stop firewalld.service #停止firewall systemctl disable...阅读全文

博文 2019-10-27 00:41:52 lobo

zetcd:让应用解除对ZooKeeper的依赖

【编者的话】etcd团队最近发布了zetcd的beta版本,一款能够让etcd兼容Zookeeper协议的代理工具,用户可以通过它解除现有应用对Zookeeper服务的依赖。 分布式系统通常都依赖一个仲裁系统协同工作,一般这样的系统通过仲裁来保证信息的准确传达,以避免出现脑裂。这类系统通过牺牲通用性换来了充分的设计余地,这种做法显然已经被不断扩散的各种具体实现所例证。这样的系统有很多,例如:chubby,ZooKeeper,etcd和consul等。尽管这些系统的理念和协议不同,但是提供的都是类似的基于key-value的分布式仲裁。作为将etcd打造成分布式系统最受瞩目的基础组件计划的一部分,etcd团队开发了一款全新的代理,zetcd,无需变动就可以让etcd集群消费ZooKeeper的...阅读全文

博文 2017-06-21 02:07:33 hokingyang

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

Go语言开发分布式任务调度 轻松搞定高性能CrontabGolang因其强大的协程机制,现已广泛应用于解决分布式环境下的高并发问题。本门课程中将结合Etcd与MongoDB实现一个基于Master-Worker分布式架构的任务调度系统。你不仅将掌握Golang的工程实践能力,而且会收获诸如CAP、Raft的分布式经典理论与架构经验,”工程能力”与”知识体系”齐头并进,实现华丽质变第1章 课程介绍本章中将介绍一下本课程的基本内容,包括:我们要做什么、要求什么基础、将学会哪些工具、收获哪些独家干货,以及课程具体安排。1-1 课程导学 试看第2章 如何执行shell命令执行"定时任务"其实就是执行"shell命令"。在本章中,将首先带大家区分"程序"与"命令",接着了解bash命令解释器的2种工作...阅读全文

博文 2019-05-22 17:34:41 方便你我他

王院生:Apache APISIX 微服务网关极致性能架构解析

2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做了题为《 Apache APISIX 微服务网关极致性能架构解析》的分享。本次活动,邀请了来自阿里巴巴、蚂蚁金服、Apache APISIX、PolarisTech、又拍云等企业的技术专家,分享网关和高性能服务的实战经验。 王院生,深圳支流科技创始人,Apache APISIX PPMC 成员,OpenResty 社区发起人,《 OpenResty 最佳实践》作者。 以下是分享全文: 前言 大家好,我是来自深圳支流科技的王院生。今年 3 月份,我和志同道合的伙伴一起创业,发起了 APISIX 项...阅读全文

Golang 读取写入Etcd数据库

文出处:个人博客地址:http://www.damonyi.cc/?p=194 项目中用到Etcd数据库来存储容器的信息和应用的域名信息,将操作Etcd的golang代码整理了一下 1、将Container信息写入到指定目录 c, err := common.GetEtcdClient() if err != nil { beego.Error("get etcd client failed") return } kapi := client.NewKeysAPI(c) key := getSkyDnsDomain(domainEtcd.Domain) value, _ := json.Marshal(domainEtcd) var etcderr error common.HaproxyT...阅读全文

博文 2016-09-04 14:00:03 wangdk789

go任务调度5(go操作etcd)

连接etcd: package main import ( "fmt" "go.etcd.io/etcd/clientv3" "time" ) var ( config clientv3.Config client *clientv3.Client err error ) func main() { //客户端配置 config = clientv3.Config{ Endpoints: []string{"0.0.0.0:2379"}, //集群列表 DialTimeout: 5 * time.Second, } //建立连接 if client, err = clientv3.New(config); err != nil { fmt.Println(err) return } clie...阅读全文

博文 2019-04-20 17:35:12 梁十八

Kubernetes 之所以酷

Kubernetes 之所以酷 前言 当我最开始了解到 Kubernetes 的时候(大概一年半以前?),我真的找不出需要关注它的理由。 满打满算,我已经使用 Kubernetes 快三个月以上了。关于为什么我觉得它非常有用,有了一些想法,虽然我仍然还算是一个刚入门的,不过,幸运的是,本文依然能够向您阐述一下,Kubernetes 究竟是怎么一回事。 我在向您解释 Kubernetes 多么有趣的过程中,会尽量避免使用一些太专业的名词,比如 Native Cloud、Orchestration、Container、Kubernetes 的一些专用语???? 。我主要是从一个 Kubernetes 运维工程师的角度向你解释,因为我当前的工作就是搭建并配置 Kubernetes 运行环境,并让他...阅读全文

博文 2018-02-09 16:34:40 Aiello_Chan

golang channel通讯

基于channel的通讯,对于无缓存的channel 发送的成功之时,接收者已经收到了。 接收,发生在发送者成功之前。 为什么会这样呢,如果我们靠记忆,就会怎么样,终究没有忘记快。可是如果我们能够从原理上来理解,也许就不容易忘记了。Golang的协程是协作式的,所以呢,如果发送者发送,那接收者存在一个何时运行的问题,如果发送成功之后,接收者才运行,不是说不可以,总少了那么一点点的协同的味道了。所以,如果换你来实现,一定也是发送者发送,送到接收者,唤起接收者运行(这时,发送者挂起了),然后到发送者重新回来运行的时候,接收者已经接收到了。 再扩展一下,对于带缓存的怎么办呢?这时候,其实就要看是谁,在什么 情况下阻塞了。总之,不能够自己一直运行下去,得给对方(你亲爱的合作方)运行的机会...阅读全文

Kubernetes1.5源码分析(二) apiServer之资源注册

源码版本 Kubernetes v1.5.0 简介 k8s里面有各种资源,如Pod、Service、RC、namespaces等资源,用户操作的其实也就是这一大堆资源。但这些资源并不是杂乱无章的,使用了GroupVersion的方式组织在一起。每一种资源都属于一个Group,而资源还有版本之分,如v1、v1beta1等。k8s目前正在使用的API groups: "core" group:它的REST path是api/v1 "extensions" group:它的REST path是/apis/extensions/v1beta1 "autoscaling", "abac" ... 服务器的URL的格式:/prefix/group/version/... (例如:/apis/extens...阅读全文

博文 2017-03-15 04:01:04 Robinly

DockOne微信分享( 九十):猎豹移动基于CoreOS在AWS上的项目实践

【编者的话】本次分享介绍基于AWS的EC2服务如何设计和搭建适合自己业务的架构方案实现全球多region部署,介绍模型案例:CoreOS的使用技巧与运维经验,把一个集群当成一台机器管理心得,包括: 为什么选择AWS和Docker为什么选择CoreOS部署我们的应用CoreOS在AWS平台上如何快速构建集群并且进行管理应用过程中遇到的问题与解决方案 1、为什么选择AWS和Docker 首先我先介绍一下猎豹移动的一些业务,如图, 我们在海外有着庞大的用户群体,接近16E下载量,月活用户4.94E,71%来自海外,战略合作伙伴主要以阿里、百度、腾讯、小米…… 这么大的海外用户量我们是这么做业务部署和服务的呢? 首先在选择服务商的方面我们选择了实力最强的亚马逊AWS作为我们的云服务商,我们海外几乎所...阅读全文

博文 2017-06-25 16:25:21 DarkForces.

实战生产环境:kubeadmin安装1.13.3最新版k8s集群教程

2019年3月6日:出版安装kubeadmin部署k8s集群教程 本次安装采用kubeadmin ! 安装的k8s版本为1.13.3版,是当前最新版本! 本篇文章,所使用的任何镜像和yaml都会在我的github上找到! github:https://github.com/heyangguang 有任何问题可以直接联系我的Email:heyangev@cn.ibm.com 主机列表: 系统采用的是Centos7.5 主机名 IP地址 角色 k8smaster 9.186.137.114 master k8snode-1 9.186.137.115 node k8snode-2 9.186.137.116 Node 基础环境准备: 关闭防火墙、关闭selinux,关闭swap,关闭网卡管理器。...阅读全文

博文 2019-03-06 10:34:41 何阳光

DockOne微信分享(一二三):如何扩展Kubernetes管理的资源对象

【编者的话】Kubernetes是一套容器化解决方案,也是一套资源管理的架构和标准;本次分享是基于我在饿了么现阶段容器化经验和理念的总结,探讨深化Kubernetes在企业内部的应用的方法, 介绍如何利用开源的API Server框架在企业内部打造和扩展Kubernetes管理的资源对象。 【3 天烧脑式 Docker 训练营 | 上海站】随着Docker技术被越来越多的人所认可,其应用的范围也越来越广泛。本次培训我们理论结合实践,从Docker应该场景、持续部署与交付、如何提升测试效率、存储、网络、监控、安全等角度进行。 Kubernetes逐渐成熟,也成为许多公司容器化平台的首选,然而在落地当中,每个企业面对的问题场景多少也有些不一样的,总是希望对Kubernetes做改造,来更好的满足...阅读全文

博文 2017-06-25 16:25:41 lijian

go任务调度4(etcd安装和基本使用)

下载,解压,进入目录,运行: [root@bogon etcd-v3.3.12-linux-amd64]# ./etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'(本地etcd的端口) etcd控制工具: [root@bogon etcd-v3.3.12-linux-amd64]# ETCDCTL_API=3 ./etcdctl (前面需要一个环境变量ETCDCTL_API=3)put、get、del、--prefix: [root@bogon etcd-v3.3.12-linux-amd64]# ETCDCTL_API=3 ./etcdctl put "n...阅读全文

博文 2019-04-20 03:35:10 梁十八

了解Flannel

概述 Flannel是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。这次的分享内容将从Flannel的介绍、工作原理及安装和配置三方面来介绍这个工具的使用方法。 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。在Kubernetes的网络模型中,假设了每个物理节点应该具备一段“属于同一个内网IP段内”的“专用的子网IP”。例如: 节点A:10.0.1.0/24 节点B:10.0.2.0/24 节点C:10.0.3...阅读全文

博文 2017-04-21 10:52:32 面码酱

Golang 的跨平台交叉编译浅析

什么是跨平台交叉编译 交叉编译 通俗地讲就是在一种平台上编译出其他几个平台能够运行的程序(通常指系统和CPU架构的不同) 交叉编译通常使用在分发时,编译出多个平台可用的二进制程序,比如在Linux下编译出可以在Win下可以使用的EXE程序。 本地编译 本地编译是指当前系统所配置编译器根据当前系统配置编译出在当前系统所适用的执行程序(部分其他语言本地编译时可能会由于扩展包含的问题,无法在同平台其他机器运行)。 所以如果要生成在非本机的其他平台和系统的程序,就需要用到交叉编译(交叉编译工具链)。 交叉编译工具链 > 交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3个部分组成。 > 有时出于减小 libc 库大小的考虑,也...阅读全文

博文 2017-12-02 05:03:06 dingdayu

熟读这5个开源项目就是合格的GO语言工程师!

因此,程序员刚入门除了读书外,阅读好的代码很重要。阅读优秀的代码可以了解大牛开发的思路,软件架构和语言技巧等。因此,本文针对Go语言,推荐大家5个非常优秀的开源项目,这些开源项目不仅应用广泛,而且其中所用的技术有很多基础技术,是做其它任何项目都不可或缺的。 Codis Codis是一个分布式Redis解决方案,与官方的纯P2P模式不同,Codis采用的是Proxy-based的方案。可以将Codis理解成为Web服务领域的Nginx,它实现了对Redis的反向代理和负载均衡。Redis本身就是就是一个高性能的缓存系统,可见Codis的性能更是没法说。 推荐阅读该开源项目源代码的原因在于应用广泛、高性能和网络协议。通过学习其代码相信对Go语言的如下方面能有很大的提升:网络编程: Codis本身...阅读全文

博文 2019-04-17 12:35:12 扬那个杨