随笔分类 -  Go

摘要:背景 公司的海外业务需要将云上的操作读取到内部的日志文件中,永久保存,供内部审计使用。 由于之前没有用过AWS相关的SDK,在使用过程中也遇到一些困难,这里记录一下,并且总结一下过程。 代码 快速开始 代码参考地址:https://github.com/awsdocs/aws-doc-sdk-exa 阅读全文
posted @ 2023-12-12 17:27 zscbest 阅读(115) 评论(0) 推荐(1) 编辑
摘要:背景 说起master选举,最开始想到的可能就是zookeeper,但有些场景zookeeper的使用过于繁重和复杂,又由于etcd是基于Raft的分布式K/V存储,强一致性的K/V读写是核心。 所以造就了etcd可以用于master的选举的场景。 原理 etcd clientv3 concurre 阅读全文
posted @ 2023-04-20 14:52 zscbest 阅读(505) 评论(0) 推荐(0) 编辑
摘要:背景 本文使用 Golang语言的SDK包 go.etcd.io/etcd/clientv3 实践etcd的租约、Watch等功能,并且实现分布式锁的业务场景。 etcd 租约 etcd过期时间可以通过设置ttl的方式, 通过租约可以控制一组key的过期时间,可以通过续租的方式保持key不过期 // 阅读全文
posted @ 2023-03-20 15:16 zscbest 阅读(1340) 评论(0) 推荐(1) 编辑
摘要:背景 在go的工程中,有时init的顺序是至关重要的,本文写了一个小控制器去管理init的顺序,可以根据自己的要求设置不同的权重来实现加载顺序。 本文控制器主要实现两个功能,一是按照优先级加载包的引用,二是流程控制,主流程与异步流程存在顺序要求(实现类似sync.WaitGroup功能) 原理 优先 阅读全文
posted @ 2023-01-03 15:31 zscbest 阅读(114) 评论(0) 推荐(0) 编辑
摘要:背景 最近在总结现有框架中一些比较有亮点的地方,个人觉得带着问题去学习是比较高效的事情,所以把一些学习总结记录下来。 IoC是一种设计原理,比较常见于面向对象的设计中反转控制,实现应用程序类之间的松散耦合。详细的设计模式就不再这里赘述了 设计 采用的第三方库:https://github.com/b 阅读全文
posted @ 2022-12-29 18:42 zscbest 阅读(509) 评论(0) 推荐(0) 编辑
摘要:背景 前置网关采用的是ngx中调用lua代码块的形式实现的功能扩展。 在网关开发过程中有很多的waf功能,比较常见就包括黑白名单的功能。为了批量的对某个IP段进行屏蔽,在配置时可能会以CIDR的形式配置IP段 结合lua代码进行处理 计算思路 我们查看某个IP是否在某个用CIDR表示的IP段时,只需 阅读全文
posted @ 2022-06-28 21:38 zscbest 阅读(436) 评论(0) 推荐(0) 编辑
摘要:什么是JWT JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以 JSON 方式安全地传输信息。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用HMAC 算法或使用 RSA , ECDSA 的公钥/私钥对对 JWT 进 阅读全文
posted @ 2021-11-30 09:16 zscbest 阅读(342) 评论(0) 推荐(0) 编辑
摘要:背景: 公司在做自己的发布平台,需要自动化编译go 工程,大部分开发使用的都是go 1.12 版本 由于go mod的机制,有很多包需要代理才能进行下载,而自动化编译频繁的进行代理切换就很麻烦。 所以线上自动编译采用go 1.13 编译 go 1.13 编译的特点:https://zhuanlan. 阅读全文
posted @ 2019-12-22 16:54 zscbest 阅读(2434) 评论(0) 推荐(0) 编辑
摘要:mongoshake 是个开源的用户mongo数据迁移和同步的工具,支持往各种目标源头写数据 具体:https://github.com/alibaba/MongoShake 有业务场景想把oplog 写入到kafka 中,如果直接在collector.conf 设置kafka 信息会导致写入kaf 阅读全文
posted @ 2019-12-11 11:22 zscbest 阅读(1053) 评论(0) 推荐(0) 编辑
摘要:一、使用场景 大背景是从kafka 中读取oplog进行增量处理,但是当我想发一条命令将这个增量过程阻塞,然后开始进行一次全量同步之后,在开始继续增量。 所以需要对多个协程进行控制。 二、使用知识 1. 从一个未初始化的管道读会阻塞 2.从一个关闭的管道读不会阻塞 利用两个管道和select 进行控 阅读全文
posted @ 2019-12-01 15:30 zscbest 阅读(1283) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示