golang
文章平均质量分 65
明教第三十四代觉主
资深工程师,擅长领域包括后端开发、微服务架构、性能调优及云原生SaaS平台建设等。
展开
-
基于Golang实现数据配置中心(meta-config):一
继1年前的系列文章《GO语言实现redis客户端》之后,几乎就没怎么碰过Golang这门语言了,在云原生时代,go语言无疑是无可替代的。近期,我们顺手把go语言重新捡起来,边写边学,手撸一个数据配置中心玩玩。笔者的习惯是,不喜欢在自己文章中赘述别人已经讲的很好的东西了,所以关于什么是数据配置中心?配置中心的作用和意义、以及当下热门的产品等话题,请移步这里(文章讲的很好):https://developer.51cto.com/art/202102/645471.htm直接上代码,先考虑一下初步的设计..原创 2021-05-21 10:39:58 · 43867 阅读 · 6 评论 -
gedis:自己实现go语言的redis客户端 第六节(客户端分片集群实现)
在前5篇文章中我们分享了一个go语言redis客户端的基本实现,包括单机版(1.0)和Cluster版本(2.0),接下来我们分享一下客户端分片(3.0-Sharding)的集群方式的实现。1.0 特性: 基于原生golang开发 连接池管理 keepalive redisTemplate提供多种命令支持2.0 特性 cluster支持 loadbalance支持 ...原创 2020-09-08 16:49:35 · 63628 阅读 · 1 评论 -
gedis:自己实现go语言的redis客户端 第五节(集群模式的支持)
redis3.0之后提供了新的HA的解决方案,即Cluster模式,由多个节点组成的集群模式。集群master之间基于crc16算法,对key进行校验,得到的值对16384取余,就是key的hash slot(槽)值,每个节点各自存储一部分的hash槽值,主从节点之间基于异步复制方式同步数据。基于redis集群的基本原理,gedis需要提供一下方面的能力:1、统一的客户端Cluster;...原创 2019-12-06 10:00:21 · 63910 阅读 · 2 评论 -
gedis:自己实现go语言的redis客户端 第四节(redis命令的封装实现)
我们在前面的文章中依次实现了通信模块、连接池及协议的处理,本节将对redis的命令进行封装,主要包含一下大类:1、string类2、hash类3、list类4、set类5、sorted_set类6、其它类string_template.gopackage clientimport ( "protocol" "client/handler" "fmt")...原创 2019-11-27 12:32:51 · 63446 阅读 · 0 评论 -
gedis:自己实现go语言的redis客户端 第三节(redis协议的处理)
redis的通信协议本文不做分析和解读,建议参考redis官方文档或其它博文,我们直接看实现:redis相关命令及常量定义:package protocolconst DOLLARBYTE = "$"const ASTERISKBYTE = "*"const PLUSBYTE = "+"const MINUS_BYTE = "-"const COLON_BYTE = ":"...原创 2019-11-27 12:27:28 · 63609 阅读 · 2 评论 -
gedis:自己实现go语言的redis客户端 第二节(tcp连接池模块实现)
在大多数实际业务场景中,为满足高并发的需求,往往需要提供连接池的支持,包括连接池的管理,连接的创建、销毁等等,还要保证并发安全。实现如下:package clientimport ( "errors" "net" "sync" "protocol")type ConnConfig struct { ConnString string Pwd string...原创 2019-11-27 11:54:53 · 63436 阅读 · 0 评论 -
gedis:自己实现go语言的redis客户端 第一节(底层通信模块实现)
客户端与redis服务器间通信基于tcp协议,获取tcp连接模块实现如下:package clientimport ( "net" "fmt" "os")/** * tcp连接 */func Connect(server string) *net.TCPConn{ tcpAddr, err := net.ResolveTCPAddr("tcp4", server)...原创 2019-11-27 11:45:20 · 63251 阅读 · 0 评论 -
gedis:自己实现go语言的redis客户端
刚刚学习go语言,分享下实践过程,一步步实现一个平民版的redis客户端。特性:基于原生golang开发连接池管理keepalive支持redisTemplate提供多种命令支持实验测试:package mainimport ( "tcp" "fmt" "template")func main() { testPool()}func testPo...原创 2019-09-23 10:10:00 · 61899 阅读 · 0 评论