摘要:etcd 是用 golang 编写,raft 协议实现的分布式高可靠的 kv 存储系统,常用来作为配置共享和服务注册发现,Kubernetes 就使用 etcd 来保存整个集群的状态 etcd 主要关注以下四点: 1. 简单: 定义良好,面向用户的 api (使用 grpc) 2. 安全: 可选的 阅读全文
posted @ 2019-11-27 21:11 hatlonely 阅读(1661) 评论(0) 推荐(0) 编辑
摘要:事务 ACID 特性 原子性 ( A tomicity): 事务中的所有操作,要么全部成功,要么全部失败回滚到最初状态,不会结束在中间的某个环节 一致性 ( C onsistency): 事务开始之前和结束之后,数据库的完整性没有被破坏,写入的数据必须完全符合所有的预设约束,触发器,级联回滚等等 隔 阅读全文
posted @ 2019-11-27 21:09 hatlonely 阅读(20) 评论(0) 推荐(0) 编辑
摘要:阻塞队列就是多线程线程安全的队列,在多线程场景下经常用到,c++ 标准库里面没有提供阻塞队列,boost 中有提供,生成环境下可以使用 blocking queue 实现 主要设计思路: 1. 使用 实现一个环形队列,使用两个指针 start 和 end 来标识起止位置,push 的时候在 end 阅读全文
posted @ 2019-11-27 21:06 hatlonely 阅读(234) 评论(0) 推荐(0) 编辑
摘要:反射机制是指在程序运行的时候动态地获取对象的属性后者调用对象方法的功能。golang 支持反射,原生的 json 库就是用反射机制实现。 golang 的反射有两个主要的概念: 和 从字面上理解就是类型和值 指的就是一个类型,可以是基本类型 int,string,也可以是自定义的结构体类型,可以通过 阅读全文
posted @ 2019-11-27 21:03 hatlonely 阅读(35) 评论(0) 推荐(0) 编辑
摘要:空类就是没有任何数据成员的类,这种类占用的内存大小在不同的语言里面有不同的实现 c 这个结果输出是0,也就是说 c 语言中的空类大小为 0 在 gcc 中,两个空类拥有相同的地址,但是比较的结果却是不同的……这个我也不知道咋解释…… c++ c++ class A {}; std::cout 空类的 阅读全文
posted @ 2019-11-27 20:55 hatlonely 阅读(80) 评论(0) 推荐(0) 编辑
摘要:Jenkins 是一个很老的 ci/cd 服务了,但是至今并未过时,几乎是各种公司的首选,足见其功能强大 最近用 docker 搭建了一个 Jenkins 服务,实现了代码提交后自动触发测试和部署,再也不用手动发布了,节省了大量的时间 制作 docker 镜像 这里我在基础镜像上安装了 make 工 阅读全文
posted @ 2019-11-27 20:53 hatlonely 阅读(36) 评论(0) 推荐(0) 编辑
摘要:go 很早就考虑了依赖管理的问题,内置 命令,可以直接获取对应的依赖,非常方便,但是有一个巨大的缺陷,没有版本的维护和管理,而版本不一致可能会导致各种兼容性问题,因此出现了很多第三方依赖管理工具, 和 就是其中的佼佼者,到了 go 1.11 官方终于推出了自己的依赖管理工具 ,并内置在 go 版本中 阅读全文
posted @ 2019-11-27 20:49 hatlonely 阅读(436) 评论(0) 推荐(0) 编辑
摘要:golang 原生 http 库已经可以很方便地实现一个 http server 了,但对于复杂的 web 服务来说,路由解析,请求参数解析,对象返回等等,原生 api 就显得有些不太够用了,而 gin 是一个功能完备,性能很高的 web 网络框架,特别适合 web api 的开发 hello wo 阅读全文
posted @ 2019-11-27 20:46 hatlonely 阅读(224) 评论(0) 推荐(0) 编辑
摘要:go 版本的不一致,依赖库不一致,导致编译失败;代码生成工具不一致,导致生成代码有问题;依赖工具缺失,导致测试不通过等等,开发环境和生产环境之间的差异会导致各种各样奇怪的问题,而 docker 特别擅长解决这种一致性问题 总体方案 最简单粗暴的一种方式就是每次都将代码拷贝到一个新的容器内,执行编译, 阅读全文
posted @ 2019-11-27 20:35 hatlonely 阅读(511) 评论(0) 推荐(0) 编辑
摘要:nginx 是一个开源的高性能 web 服务器(可能是性能最好的),使用非常广泛,既可以用来部署静态资源,也可以用来作为反向代理,甚至可以作为负载均衡服务器。 安装和启动 配置文件 默认的配置文件在 ,这个文件是配置文件的入口,一般配置一些全局信息 这个配置文件里面一般会有一句 ,包含各个子服务的配 阅读全文
posted @ 2019-11-27 20:32 hatlonely 阅读(24) 评论(0) 推荐(0) 编辑
摘要:最近遇到 grpc 客户端报错 ,原因是连接长时间没有使用,被服务端断开,这种情况通过简单粗暴的重试策略可以解决,更加优雅的解决方案是增加保持连接策略 服务端 客户端 链接 服务端代码: 客户端代码: 转载请注明出处 本文链接: 阅读全文
posted @ 2019-11-27 20:27 hatlonely 阅读(533) 评论(0) 推荐(0) 编辑