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

Micro In Action(尾声): 分布式计划任务

# Micro In Action(尾声): 分布式计划任务 ![Micro In Action](https://s1.ax1x.com/2020/03/28/GkhGy4.png) > 本文作者:Che Dan > > 原文链接:https://medium.com/@dche423/micro-in-action-9-cron-job-dabec09058e1 本文是《Micro In Acton》 系列的最后一篇。 我们在前面的文章中已经探讨过了利于Micro创建和使用微服务的方方面面。 今天到了最后一个话题: 计划任务。 ## 要作好发布式计划任务不容易 基本上每个系统都需要计划任务。 它们用来执行一些后台任务, 有的是在特点时间点运行一次, 有的是定期重复执行。 如果系统里只有一...阅读全文

博文 2020-03-28 15:53:57 polaris

新一代供应链电商系统 Beahu SCM 重磅上线

什么是供应链 百度百科告诉我:“围绕核心企业,通过对信息流,物流,资金流的控制,从采购原材料开始,制成中间产品及最终产品,最后由销售网络把产品送到消费者手中。它是将供应商,制造商,分销商,零售商,直到最终用户连成一个整体的功能网链模式”。 简单的说,就是物品从[供应方]到[销售方]到[需求方]的过程。当然,这个过程中牵涉到很多角色,这些角色相互联系,组成了复杂的网状模式。一个企业可能同时担当供应方和销售方里面的多个角色,这样供应链的链条将会被缩短。物流,从[供应方]到[需求方];资金流从[需求方]到[供应方];信息流,各种角色相互传递。 那什么是好的供应链?我的理解是:更好的商品(品质、价格)、更快的运输、更好的服务、更优的成本。引航时代2017年1月成都光大网络科技听取了大量用户需求,对现...阅读全文

博文 2019-12-13 21:32:44 成都光大网络

使用golang写一个高性能端口扫描器,支持IP范围,端口号范围

功能:可以快速扫描指定端口范围,ip地址范围。将扫描结果保存到本地!先来体验一下运行后的效果: ![image.png](https://static.studygolang.com/200113/7e43c4ba5d3e7761c8135a1c2052e48e.png) ![image.png](https://static.studygolang.com/200113/e16172fd8d310c5df622f06759eeb27b.png) ### 帮助信息 ``` scanPort -h Options: -h 帮助信息 -ip string ip地址 例如:-ip 192.168.0.1-255 或直接输入域名 xs25.cn (default "127.0.0.1") -n in...阅读全文

博文 2020-01-13 19:00:14 duzhenxun

gRPC服务发现与负载均衡

1)简介gRPC负载平衡的主要实现机制是外部负载平衡,即通过外部负载平衡器来向客户端提供更新后的服务器列表。gRPC客户端也内置对少量几种负载平衡策略API的支持,其中包括grpclb策略(该策略实现了外部负载平衡),但并不鼓励用户在gRPC中添加更多的策略。新的负载平衡策略应该在外部负载平衡器中实现。2)工作流负载平衡策略在名称解析和服务器连接方面与gRPC客户端相适应,以下是其工作方式: 1.首先,gRPC客户端会发出对服务器名称解析的请求,该名称会被解析为一个或多个IP地址,每一个地址会标明它是服务器地址还是负载平衡器地址,并且服务配置中会注明客户端所选用的负载平衡策略(例如,round_robin或grpclb)。2.客户端实例化负载平衡策略。注:如果地址解析器返回的任何一个地址是平...阅读全文

博文 2017-09-20 07:34:52 Jay_Guo

数字货币合约交易系统开发 区块链永续合约交易平台

数字货币合约交易系统开发—区块链永续合约交易平台搭建现阶段,基于区块链运行的计算机程序,可以说给金融系统带来了巨大影响。然而,与之对应的智能合约,则是一个全新领域,有着比较多的泡沫成分。全球领先数字资产交易平台OKEX不断创造着币圈一个又一个纪录,践行着自己安全、创新、可信赖的承诺。据了解,从2018年12月至4月底,OKEX永续合约上线4个月以来,OKEx合约总成交额达4500亿美金,单日最高成交额突破120亿美金,创行业之最。永续合约运行稳定,期间共上线BTC、LTC、ETH、XRP、EOS、BCH、TRX等九个币种,成交额突破350亿美金,并且实现全币种零分摊。随着数字货币期货的快速发展,广大用户看到了期货合约可以套期保值这一优势,并大力投身于合约交易之中。针对于资产量较大的用户来说,...阅读全文

博文 2019-08-16 15:32:57 互融时代

ETCD原理和基本实现

什么是 ETCD 官方定义为:Distributed reliable key-value store for the most critical data of a distributed system 简单直直译对就是:分布式系统中最关键的数据进行可靠的键值存储 ETCD 名字含义 /etc 是linux 操作系统的配置存储目录, d durtubute 分布式缩写,简单理解为分布式配置数据库。 ETCD 特性和应用场景 ETCD主要为了存储系统关键配置数据,配置数据很少修改,符合读多写少特性,根据此特性采用MVCC(MVCC Multi-Version Concurrency Control)进行读写冲突控制(锁机制)来提高读写效率。 ETCD利用btree实现数据索引,提高数据读取效...阅读全文

博文 2020-04-07 15:32:43 王司技术谈

用 kubeadm 部署生产级 k8s 集群

概述 kubeadm 已⽀持集群部署,且在1.13 版本中 GA,⽀持多 master,多 etcd 集群化部署,它也是官⽅最为推荐的部署⽅式,⼀来是由它的 sig 组来推进的,⼆来 kubeadm 在很多⽅⾯确实很好的利⽤了 kubernetes 的许多特性,接下来⼏篇我们来实践并了解下它的魅⼒。 ⽬标 1. 通过 kubeadm 搭建⾼可⽤ kubernetes 集群,并新建管理⽤户 2. 为后续做版本升级演示,此处使⽤1.13.1版本,到下⼀篇再升级到 v1.14 3. kubeadm 的原理解读 本⽂主要介绍 kubeadm 对⾼可⽤集群的部署 kubeadm 部署 k8s v1.13 ⾼可⽤集群 ⽅式有两种 Stacked etcd topology 即每台 etcd 各⾃独⽴,分...阅读全文

博文 2019-04-15 19:34:41 51reboot

新一代供应链电商系统 Beahu SCM

​什么是供应链百度百科告诉我:“围绕核心企业,通过对信息流,物流,资金流的控制,从采购原材料开始,制成中间产品及最终产品,最后由销售网络把产品送到消费者手中。它是将供应商,制造商,分销商,零售商,直到最终用户连成一个整体的功能网链模式”。 简单的说,就是物品从[供应方]到[销售方]到[需求方]的过程。当然,这个过程中牵涉到很多角色,这些角色相互联系,组成了复杂的网状模式。一个企业可能同时担当供应方和销售方里面的多个角色,这样供应链的链条将会被缩短。物流,从[供应方]到[需求方];资金流从[需求方]到[供应方];信息流,各种角色相互传递。 那什么是好的供应链?我的理解是:更好的商品(品质、价格)、更快的运输、更好的服务、更优的成本。引航时代2017年1月成都光大网络科技听取了大量用户需求,对现...阅读全文

博文 2019-12-23 17:32:51 跨境电商爱好者

Dubbo的微内核机制

Wikipedia上微内核(Microkernel)的定义In computer science, a microkernel (also known as μ-kernel) is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, thread management, and inter-process communication (IPC). If the hardware provides ...阅读全文

博文 2018-09-16 21:40:32 Java1122zzz

golang 笔记

命令orm syncdb -db=db1 -force=true -v=true来同步表结构 //自动建表func createTable() { name := "default" //数据库别名 force := false //不强制建数据库 verbose := true //打印建表过程 err := orm.RunSyncdb(name, force, verbose) //建表 if err != nil { beego.Error(err) } //杀进程 lsof -i:端口号kill -9 42624 //自动化文档go get -u github.com/beego/beego get -u github.com/astaxie/beego然后进入到你的GOPATH/s...阅读全文

博文 2015-09-15 03:00:01 Logan626

Golang 跨平台编译

跨平台编译 默认我们go build的可执行文件都是当前操作系统可执行的文件,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢? 只需要指定目标操作系统的平台和处理器架构即可: 因为不支持CGO,所以要禁用CGO SET CGO_ENABLED=0 // 禁用CGO SET GOOS=linux // 目标平台是linux SET GOARCH=amd64 // 目标处理器架构是amd64 然后再执行go build命令,得到的就是能够在Linux平台运行的可执行文件了。 Mac 下编译 Linux 和 Windows 平台 64位 可执行程序: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build CGO_ENABLED=0 ...阅读全文

博文 2019-12-26 08:32:52 凉风有信llm

go1.13 安装 etcd3.3的问题

安装 etcd 的时候提示错误: cannot find module providing package github.com/coreos/go-systemd/journal 在 go1.12 时提供错误,但编译通过。go1.13错误。解决方式如下: 1.自己从github拉取go-systemd 并保存到 $GOPATH src 下 git clone github.com/coreos/go-systemd 2.使用replace在go.mod中替换go-systemd ## go.mod replace github.com/coreos/go-systemd => /home/xingyys/Go/src/github.com/coreos/go-systemd 这里要注意的是...阅读全文

博文 2019-11-16 11:02:38 xingyys

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

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

博文 2019-05-04 19:34:37 花开月月圆

etcd租约及监听key

etcd中kv存储已经租约和监听的基本使.都说源码之下了无秘密,就不打字了. ``` package main import ( "context" "log" "time" "go.etcd.io/etcd/clientv3" ) func main() { var conf = clientv3.Config{ Endpoints: []string{"127.0.0.1:2380"}, DialTimeout: 5 * time.Second, } //创建clinetv3 client, err := clientv3.New(conf) defer client.Close() if err != nil { log.Fatal(err.Error()) } //创建租约 leas...阅读全文

博文 2019-11-05 13:21:23 bytemode

golang 代码埋点试性能监控

背景 在gateway系统开发的过程中,因为毕竟是面向公网的,所以需要全方位的监控,比如QPS,失败次数,成功次数,这类代码级的监控,参考transfer的源码,其在代码中埋了一部分监测点,然后通过API暴露出来,交给另外的组件去采集,这样略显麻烦 数据类型 目前常用的度量类型: Gauge: Gauge是最简单的度量类型,存储了一个double类型的值,所以一般用它记录系统的一些即时值,比如最近的一次的内存占用或者是系统CPU百分比。 Counter: Counter顾名思义是计数器的意思,用于存储一个64位长计数器,由应用系统的代码逻辑控制Counter的自增或自减。而且该计数器是支持明细计数的,Counter保持一个总的计数,并且保持一个子项的计数明细数组。 计数器可以用来记录当前系统...阅读全文

博文 2019-03-14 15:34:48 皮皮虾_132a

第三课:递归的三个例子

概述 前文中讲解了递归的运行机制,并讲解了简单的递归情况。从程序设计的角度来将,递归其实是现代程序设计不可或缺的一种方法,对于很多问题,用递归可能是一种较为合适的解决方法。但是如何设计递归需要设计或者求解出递推公式,才能转换为递归,其中的重点是设计递推公式。本文如下部分讲解三个例子,一个是人人皆知的汉诺塔,一个是求排列,一个是求整数划分,重点讲解如何设计递归公式。更详细的代码请见我的github 例1:汉诺塔 汉诺塔是学程序设计的童鞋必备的一环,其约束为:始终保持小圆盘不能在大圆盘之上,从一根柱子一到另一根柱子,中间可以借助一根柱子,示意图如图1所示: 图1:汉诺塔示意图,摘自维基百科 直觉上这应该是一个递归问题,但是如何设计递推公式是很多童鞋觉得比较头疼的问题。设计递推公式的本质就是形式化...阅读全文

博文 2017-03-05 11:28:37 CodingTech

计算机基础知识-计算机组成与原理

计算机发展简史阶段:电子管计算机 > 晶体管计算机 > 集成电路计算机(操作系统出现)> 超大规模集成电路计算机(微型计算机)特点:体积越来越小 集成度越快 运算效率更高 功耗低越来越低计算机分类1.超级计算机(用于国家尖端技术 每秒10000亿次浮点运算)2.大型计算机 (具有高性能 可处理大量数据与复杂的运算)3.迷你计算机 (服务器)4.工作站 (体积大 性能强劲)5.微型计算机 (个人计算机)计算机的体系与结构冯诺依曼体系:将程序指令和数据一起存储的计算机设计概念结构发展过程:早期计算机仅含固定程序计算机 > 更改程序更改结构重新设计电路 > 把程序存储起来并设计通用电路组成:存储器 + 控制器 + 输入设备 + 输出设备现代计算机结构(解决了冯诺依曼瓶颈 主要解决cpu 与 存储设...阅读全文

使用Kubernetes 1.2.0的正确姿势

之前,我们介绍了[kubernetes][2] 1.2.0的新特性,还不清楚的童鞋查看[这里][1]。 本文讨论的是使用 kubernetes 1.2.0 的注意事项,包括对周边组件的要求(比如docker的兼容性)、目前已知的bug(kubernetes和docker 1.9)和如何平稳升级。 ## Part I 升级注意事项 1.使用kubernetes 1.2.0 推荐使用Docker v1.9.1,但仍然支持v1.8.3和v1.10。如果你使用的Docker版本太低,请先升级Docker。但Docker v1.9.1存在一些问题,下面我们详细讨论。 2.如果内核支持CPU hardcapping,并且容器设置了CPU limit,那么CPU hardcappi...阅读全文

golang 使用grpc前的准备,基于ETCD服务发现、服务注册

主要使用ETCD来实现服务注册和服务发现 ETCD集群搭建参考https://www.jianshu.com/p/690d8adcb8c6 为什么使用grpc前要实现服务发现、服务注册? 考虑微服务水平拓展较为容易,grpc包本身没有提供服务发现和服务注册,那么在使用过程中,对应的rpc只能通过nginx等服务去进行负载均衡,而当微服务需要水平拓展时,因为没有服务发现,因此要修改nginx配置才能将该节点加入进行使用,因此需要更加智能的动态添加和删除节点,所以grpc也不必使用nginx进行负载均衡,而是在client端进行负载均衡的实现。 首先下载ETCD官方golang驱动包https://github.com/etcd-io/etcd/ go get -u -v github.com/...阅读全文

博文 2019-12-30 19:32:40 青果山圣斗士

互融云开发数字货币智能永续合约交易系统-虚拟币永续合约交易平台出售

互融云开发数字货币智能永续合约交易系统-虚拟币永续合约交易平台出售互融云作为数字资产交易系统开发商,用实际行动践行着安全创新可信赖的理念,前进的脚步不停歇。在合约产品上,凭借着底蕴经验加交易机制,互融云合约交易系统已经成为企业手中的亮点产品,永续合约交易系统便是其中之一:系统特点经过多轮测试,保证了K线的稳定性永续合约采用的是springboot提供微服务,合约账户进行了加密,确保资金安全通过专用的golang脚本稳定高效的抓取和修复k线数据通过多线程和算法以及并发锁来快速及时的计算并分析风险率并进行相应的处理,保证平台的利益合约下单采用redis,rabbitmq来保证下单并确保资金无误新安全体系MD5+RSA加密:采用MD5+RSA(非对称加密算法)保障账号密码安全身份认证:登录身份认证...阅读全文

博文 2019-09-30 15:32:48 aside section ._1OhGeD

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

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

博文 2019-05-04 19:34:37 为了谁你知道

TiDB 架构的演进和开发哲学

本文来自 CSDN《程序员》2017 年 2 月的封面报道。对于一个从零开始的数据库来说:选择什么语言,整体架构怎么做,要不要开源,如何去测试…太多的问题需要去考量。 在本篇文章中,PingCAP 联合创始人兼 CTO 黄东旭对 TiDB 的开发历程进行了详细简介,为大家还原 TiDB 的架构演进全过程。 在大约两年前,我有一次做 MySQL 分库分表和中间件的经历,那时在中间件里做 sharding,把 16 个节点的 MySQL 扩到 32 节点,差不多要提前一个月做演练,再用一个礼拜来上线。我就在想,能不能有一个数据库可以让我们不再想分库分表这些东西?当时我们也刚刚做完 Codis,觉得分布式是个比较合适的解决方案。另外我一直在关注学术圈关于分布式数据库的最新进展,有看到谷歌在 201...阅读全文

博文 2017-02-09 06:00:24 PingCAP

和我一步步部署 kubernetes 集群

​本系列文档介绍使用二进制部署 kubernetes 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群;在部署的过程中,将详细列出各组件的启动参数,它们的含义和可能遇到的问题。部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题。所以本文档主要适合于那些有一定 kubernetes 基础,想通过一步步部署的方式来学习和了解系统配置、运行原理的人。集群详情Kubernetes 1.6.1Docker 17.04.0-ceEtcd 3.1.5Flanneld 0.7 vxlan 网络TLS 认证通信 (所有组件,如 etcd、kubernetes master 和 node)RBAC 授权kublet TLS BootStrappingkubedns、dashboa...阅读全文

博文 2017-04-13 10:30:25 osnull

25.蛤蟆笔记go语言——PostgrelSQL数据库使用

25.蛤蟆笔记go语言——PostgrelSQL数据库使用 下载地址:https://www.postgresql.org/download/ 此处以WINDOWS版本为例。 下载后双击安装。 postgresql-9.5.3-1-windows-x64.exe 安装过程输入密码和端口号。 使用 安装完毕后,有一个phAdmin图形化工具如下图1: 命令行管理 安装完毕后,自带命令行管理,如下图2 创建数据库 test: #create database test; 切换数据 #\c test 链接到数据库test 创建用户: create user astaxie with password 'astaxie'; 登录数据库,赋值: grant all privileges on user...阅读全文

博文 2016-06-28 00:00:01 notbaron

docker+etcd+go-micro api网关的搭建及使用

在我们使用go-micro框架时,会用到其api网关功能。 本文以etcd作为服务注册和发现工具,实现通过api网关和etcd实现服务间的调用 本文以下内容为基础,未看过的请移步: 【ubuntu+docker搭建etcd集群】:https://www.jianshu.com/p/ec0e4911236d 【go-micro+gin+etcd微服务实战之服务注册与发现】:https://www.jianshu.com/p/1e14a5b0a9db 现默认已经将etcd集群启动,且已了解使用go-micro+gin+etcd实现服务注册与发现 ```etcd集群地址为:192.168.109.131:12379``` ```micro网关地址为:192.168.109.131:8080``` ...阅读全文

博文 2020-05-22 16:42:00 kukayou

etcd 非关系数据库 简介

1.什么是etcd服务etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。用于共享配置和服务发现的分布式,一致性的KV存储系统.其很容易部署、安装和使用,提供了可靠的数据持久化特性。它是安全的并且文档也十分齐全。ETCD该项目目前最新稳定版本为3.3.9 具体信息请参考[项目首页]和[Github]。ETCD是CoreOS公司发起的一个开源项目,授权协议为Apache.提供配置共享和服务发现的系统比较多,其中最为大家熟知的是Zookeeper,而ETCD可以算得上是后起之秀了。在项目实现,一致性协议易理解性,运维,安全等多个维度上,ETCD相比Zookeeper都占据优势2.Zookeeper和etcd的区别:1)一致性协议: ETCD...阅读全文

博文 2018-08-21 15:35:16 宇晨棒棒的

Etcd使用go module的灾难

最近几个月,或者最近一年,使用etcd做开发的朋友,如果你开启了go module的功能的话,难道没有出现翻车的现象吗?或者, 你go get -u .更新一下项目依赖试试看。 因为我使用visual studio code的方式是打开整个GOPATH文件夹,而gopls对于整个GOPATH并不友好,非常的慢,所以我设置了全局变量GO111MODULE=off,还是采用传统的老的库依赖方式开发。 但是我并不排斥使用go module,并且觉得它对解决库依赖的冲突至关重要,所以我一般在项目中也会时不时的开启go module,更新一下go.mod。但是目前看来go module的推广起来问题还是重重,主要包括下面几个原因: go module本身的bug 使用go module的项目使用方式有...阅读全文

博文 2020-05-11 21:04:55 smallnest

Service Mesh 在『路口』的产品思考与实践:务实是根本

一、引言 Service Mesh 是蚂蚁金服下一代架构的核心,经过了2年的沉淀,我们探索出了一套切实可行的方案并最终通过了双十一的考验。本文主要分享在当下『路口』,我们在产品设计上的思考和实践,希望能给大家带来一些启发。二、为什么需要 Service Mesh?2.1 微服务治理与业务逻辑解耦在 Service Mesh 之前,微服务体系的玩法都是由中间件团队提供一个 SDK 给业务应用使用,在 SDK 中会集成各种服务治理的能力,如:服务发现、负载均衡、熔断限流、服务路由等。在运行时,SDK 和业务应用的代码其实是混合在一个进程中运行的,耦合度非常高,这就带来了一系列的问题:1. 升级成本高 (1)每次升级都需要业务应用修改 SDK 版本号,重新发布; (2)在业务飞速往前跑的时候,是不...阅读全文

k8s与aws--在ec2中部署高可用k8s1.13.1集群(ipvs,cloud-provider)

前言 kubeadm1.13达到了生产可用,利用kubeadm部署一个高可用集群简单不少。但是竟然部署在aws上,就要启用cloud-provider=aws,深度结合iaas层资源。主要是利用aws的elb和ebs等。相关的资料还是比较少的,已经有的一些文档要不是out了,要不就是内容不全,还有很多文章只是弄了一个demo的水平,完全没法上生产,部署过程破费周折。 组件版本和集群环境 集群组件和版本 Kubernetes 1.13.1 Docker 18.06.0-ce Etcd 3.2.24 Calico 3.4.0 网络 集群机器 master: 172.31.22.208 172.31.17.44 172.31.22.135 node: 172.31.29.58 PS etcd集群非...阅读全文

博文 2018-12-19 20:34:43 iyacontrol

Etcd Raft源码分析一:启动流程

## 1. EtcdServer启动流程 先来看下EtcdServer结构体的定义,这里与Raft相关的是`r raftNode`属性。 ``` //etcdserver/server.go EtcdServer struct { // inflightSnapshots holds count the number of snapshots currently inflight. inflightSnapshots int64 // must use atomic operations to access; keep 64-bit aligned. appliedIndex uint64 // must use atomic operations to access; keep 64-bi...阅读全文

博文 2018-09-08 09:54:31 zqhxuyuan

Protobuf 学习笔记

文章内容源自Google官方文档翻译,详见原文Language Guide。部分内容可能重复,望多见谅。 假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了: syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; } SearchRequest消息格式有3个字段,在消息中承载的数据分别对应于每一个字段。其中每个字段都有一个名字和一种类型。 注意: 文件的第一行指定了你正在使用proto3语法:如果你没...阅读全文

博文 2018-06-22 03:34:41 7Ethan

Etcd使用

## 前言 我们在使用go语言来构建分布式应用集群的时候,通常会选择一个分布式协调框架来协调整个分布式集群正常工作(如:服务注册/发现、选主等)。Java语言有hadoop体系中zookeeper(不得不说现在zookeeper太过于臃肿),现在容器(docker)盛行的时代 k8s采用的是etcd来作为自己的协调框架。现在越来越多的项目开始采用etcd来作为自己的服务协调框架。go语言中目前发现基于Raft算法中有[Etcd](https://github.com/etcd-io/etcd)和[Consul](https://github.com/hashicorp/consul)。不得不说下这个hashicorp公司自己的产品中使用[Etcd](https://github.com/et...阅读全文

博文 2019-07-26 11:06:39 busgo

来你是这样的Websocket--抓包分析

之前自己一个人负责完成了公司的消息推送服务,和移动端配合完成了扫码登录、订单消息推送、活动消息广播等功能。为了加深自己对Websocket协议的理解,自己通过进行抓包的方式学习了一番。现在分享出来,希望对大家能有所帮助。 Chrome控制台 (1)F12进入控制台,点击Network,选中ws栏,注意选中Filter。 (2)刷新页面会得到一个ws链接。 (3)点击链接可以查看链接详情 注意红框标出的信息,后面会详细说明。 (4)当然也可以切换到Frames查看发出和接收的消息,但是非常的简陋,只能看到消息内容,数据长度和时间 Fiddler:抓包调试利器 (1)打开Fiddler,点开菜单栏的Rules,选择Customize Rules... (2)这时会打开CustomRules.js...阅读全文

博文 2020-02-02 14:40:49 songwenjie

etcd 3.2带来规模化监视程序与分布式锁等全新特性

Etcd团队刚刚兴奋地公布了etcd 3.x系列中的最新成员——etcd 3.2.0。这套新版本迎来了代理改进、强化后端并发性、分布式协调服务、更为轻的Go客户端以及JWT身份验证等新的功能与特性。 在今天的文章中,我们将展示etcd 3.2.0当中的几项全新功能,同时以此为基础展开讨论。首先要提到的是多租户机制:即新的命名空间客户与能够提供完全隔离密钥空间的代理。在此之后则要聊聊规模伸缩——gRPC代理现在能够每秒支持上百万个事件。最后,为了更好地协调各类系统,本次新版本引入了新的并发RPC服务,且其中内置有分布式锁及对应选项,可供任意gRPC客户进行轻松访问。 命名空间对于共享同一套etcd集群的应用程序,为了避免彼此之间的相互干扰,其需要保有仅属于自己的密钥。虽然etcd的验证机制能够...阅读全文

博文 2017-06-21 02:06:58 李颖杰

k8s :kube-apiserver RESTful API 实现 - Storage

前言 了解 k8s 的同学都知道,kube-apiserver 对外提供 RESTful API 接口提供 查询,监听集群(资源)状态的服务,kube-apiserver 主要就做一件事,就是如何将 RESTful API (CREATE, DELETE, UPDATE, GET .etc)接口调用映射到对后端存储(比如 etcd)的(增删改查)访问,在设计的时候考虑到 k8s 是个快速迭代的开源项目,很多 API 接口(版本)可能在未来版本发生变化,因此如何设计一个扩展性强,耦合度低的架构应该是 Google 那帮货当初主要考虑的问题,所以才导致 kube-apiserver 本来相比 kube-scheduler 和 kube-controller-manager 应该简单的代码设计的巨...阅读全文

博文 2018-03-30 18:34:39 xingpingz

Go 的依赖管理器 Canticle

Canticle 是用于 go 的依赖管理器。它还可以用于锁定版本的库,单个项目,完整的持续发布,微服务平台。 Canticle 支持以下功能:   * Vendoring - 对外部代码保存一份内部副本 * Version Locking - 使用特定版本的依赖库 * Vanity Import Paths - 导入的路径保持它原有写法和目的 * Single Copy - 内部不使用一个库的多个副本 * Build Information - 使用嵌入的信息, 确保任何构建可以完全复...阅读全文

Dockerfile多阶段构建原理和使用场景

Docker 17.05版本以后,新增了Dockerfile多阶段构建。所谓多阶段构建,实际上是允许一个Dockerfile 中出现多个 FROM 指令。这样做有什么意义呢? 老版本Docker中为什么不支持多个 FROM 指令 在17.05版本之前的Docker,只允许Dockerfile中出现一个FROM指令,这得从镜像的本质说起。 在《Docker概念简介》 中我们提到,你可以简单理解Docker的镜像是一个压缩文件,其中包含了你需要的程序和一个文件系统。其实这样说是不严谨的,Docker镜像并非只是一个文件,而是由一堆文件组成,最主要的文件是 层。 Dockerfile 中,大多数指令会生成一个层,比如下方的两个例子: # 示例一,foo 镜像的Dockerfile # 基础镜像中已...阅读全文

博文 2018-08-24 16:35:04 赵一凡

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

互融云开发数字货币永续合约交易系统-搭建永续合约交易平台互融云从事虚拟货币智能永续合约APP开发,虚拟货币智能永续合约网站开发,从事虚拟货币智能永续合约产品定制,是专业的区块链数币永续合约交易系统软件开发公司。互融云作为国内领先的数字资产交易所系统开发商,用实际行动践行着安全创新可信赖的理念,前进的脚步从不停歇。在合约产品上,凭借着深厚的底蕴经验加完美的交易机制,互融云合约交易系统已经成为企业手中必不可少的亮点产品,永续合约交易系统便是其中之一:系统特点经过多轮测试,保证了K线的稳定性永续合约采用的是springboot提供微服务,合约账户进行了加密,确保资金安全通过专用的golang脚本稳定高效的抓取和修复k线数据通过多线程和特有算法以及专用并发锁来快速及时的计算并分析风险率并进行相应的处...阅读全文

博文 2019-08-26 15:33:16 北京互融时代

etcd实现服务发现和注册

## 原理 etcd实现服务发现和注册,使用的是kv存储、租约、watch. 向etcd 注册 该服务(其实就是 存一个值)然后向etcd 发送心跳,当etcd 没有检测到心跳就会 把这个键值对 删了(这整个动作是etcd里的租约模式),网关那边 就只需要 watch 这个 key ,就能够知道 所有服务的所有动态了. 注册的时候可以使用前缀这样在watch的时候可以watch所有的服务器. ## 服务注册 1. 租约模式,客户端申请一个租约设置过期时间,keepalive没个固定时间进行租约续期,通过租约存储key.过期不续租则etcd会删除租约上的所有key 2. 相同服务存储的key的前缀可以设置成一样 3. 注册服务就是向服务端使用租约模式写入一个key ``` package ma...阅读全文

博文 2019-11-05 12:39:04 bytemode

golang url 链接地址解析包

golang url 链接地址解析包 url 编码 QueryEscape 将字符地址转为安全地址 func QueryEscape(s string) string p := url.QueryEscape("/user?id=12") // >>> %2Fuser%3Fid%3D12 QueryUnescape 还原QueryEscape 转码 func QueryUnescape(s string) (string, error) URL 类型 URL 结构 type URL struct { Scheme string Opaque string // 编码后的不透明数据 User *Userinfo // 用户名和密码信息 Host string // host或host:port...阅读全文

博文 2019-06-07 05:32:39 直立猿

docker etcd 环境搭建

etcd 是用 golang 编写,raft 协议实现的分布式高可靠的 kv 存储系统,常用来作为配置共享和服务注册发现,Kubernetes 就使用 etcd 来保存整个集群的状态 etcd 主要关注以下四点: 简单: 定义良好,面向用户的 api (使用 grpc) 安全: 可选的 tls 用户认证方式 快速: 支持每秒 10000 次的写入 可靠: raft 协议实现分布式 搭建 etcd 服务 version: "3.5" services: etcd: hostname: etcd image: bitnami/etcd:3 deploy: replicas: 1 restart_policy: condition: on-failure # ports: # - "2379:23...阅读全文

博文 2019-11-27 23:32:38

go必知必会

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

带你了解“比特币黄金”和SegWit2x分叉

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 10月25日,比特币黄金从比特币中分离出来创造出一个基于ASIC挖矿的数字货币。几周之后,比特币公司中一个重要的集团想要根据 “纽约协议” 定义的SegWit2x方案来进行硬分叉,也许将要导致另一个新币的诞生。 如果这些都实现,在这篇文章发表后大约一个月内,比特币就会有三个不同的区块链和三种不同类型的币。一个区块链会符合现有的比特币协议;为了方便文章叙述,这个币会被称为“BTC”。第二个区块链会符合“比特币黄金协议”,这篇文章中,这个币会被称为“BTG”。第三个区块链会符合SegWit2x协议;这个币种将被称为“B2X”。 好消息是每个BTC都会有效地复制在比特币黄金和SegWit2x的区块链上。如果在分叉的时候...阅读全文

博文 2019-09-19 15:02:58 链客

微信golang签名算法

type WXPrams struct { m map[string]interface{} // 参数 sign string // 签名 } func (p *WXPrams) InitSign() { var keys []string for k, _ := range p.m { keys = append(keys, k) } sort.Strings(keys) builder := strings.Builder{} for _, v := range keys { builder.WriteString(v) builder.WriteString("=") builder.WriteString(fmt.Sprint(p.m[v])) builder.WriteStrin...阅读全文

博文 2019-01-02 19:34:46 AlberLiu

DockOne技术分享(二十三):暴走漫画的Docker实践

【编者的话】本次主要分享Docker在暴漫中的应用主要包括:开发环境的Service搭建,代码托管、持续集成、Docker镜像等若干Support服务、部分微服务以及整个数据服务系统。 暴走漫画是一家文化传媒公司。公司除了有若干视频娱乐节目,还有相应的社区网站及移动APP。流量UV是200万/天左右,PV大概是千万级别。为了更加有效地运营以及推荐用户个性化,2015年成立了数据部,负责暴漫的数据分析和数据挖掘相关服务。 暴漫没有自己的服务器,是使用的国内某云服务。暴漫的后端主要是基于Ruby开发。也有基于Go、Python的一些微服务。 Docker在暴漫中的应用主要包括: 开发环境的Service搭建 代码托管,持续集成,Docker镜像,等若干Support服务部分微服务以及整个数据服务...阅读全文

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