Golang RPC 之 Thrift

Thrift 简介: Thrift 是一款高性能、开源的 RPC 框架,产自 Facebook 后贡献给了 Apache,Thrift 囊括了整个 RPC 的上下游体系,自带序列化编译工具,因为 Thrift 采用的是二进制序列化,并且与 gRPC 一样使用的都是长连接建立 client 与 server 之间的通讯,相比于比传统的使用XML,JSON,SOAP等短连接的解决方案性能要快得多。本篇只介绍 Golang 关于 Thrift 的基础使用。 安装 安装 Thrift 的 Golang ...阅读全文

2017.03.16 14:55* 谢烟客
阅读:18324 评论:6

Gin应用添加newrelic监控

newrelic是一个非常好用的监控平台。请求分析,数据事务,机器运行状况,错误报警等功能,并且切分的力度足够细,除了贵之外,其他都很好。其实,好的服务都值这个价。 newrelic对各大语言的框架支持都很完善,对golang的支持也不差。不过官网提供的例子只是针对net/http而言。对于目前正在使用的gin来说,还是需要一下hack。好在gin足够优雅。下面就展示一下使用gin开发的时候注册newrelic。 先安装newrelic官方提供的golang包: go get -u -v git...阅读全文

2017.03.16 22:25* 人世间
阅读:2228 评论:0

Golang包管理工具Glide,你值得拥有

“依赖地狱”是每个程序员在成长之路上都会面临的情况,首先我们通过语义化版本来控制软件的版本,然后在我们的项目里通过指定软件版本来达到控制依赖的目的。 如:你的项目A依赖多个项目B1,B2,B3,而B1,B2,B3又依赖着其它项目C1,C2...。一个项目依赖这多个项目,当项目C1修复BUG版本发生变化,如果A依旧使用旧版本,势必引起未知的问题。所以,你需要意识到包依赖管理的重要性。 在Go语言中,我比较推荐大家使用Glide作为包管理器。它能够自动识别Godeps的包管理,十足的很方便。本节介绍...阅读全文

2017.03.22 23:43 陈_在路上
阅读:1335 评论:0

老司机带你用 Go 语言实现 Paxos 算法

老司机带你用 Go 语言实现 Paxos 算法  在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistence),等同于所有节点访问同一份最新的数据副本; 可用性(Availability),每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据; 分区容错性(Network partitioning),以实际效果而言,分区相当于对通信的时限要求...阅读全文

阅读:3025 评论:1

golang http日志跟踪 根据协程ID

最近接手一份代码,是使用golang revel web框架,不停的有运营,测试来骚扰,新手必须要老实,有问必答,来一个我就去日志文查看一下,“尼玛,不停的刷屏,怎么看,大概什么时间,给个订单号呗”,这是我做的最多的事情。实在是看的心累,日志记录内容太少,关键字太少,并发请求太多,分不清是不是一个请求的。程序员得用程序解放劳动力,怎么能浪费在看日志的时间上。有了需求点,那么对日志的记录就得规范。总结几个记日志的关键点。1. 入口打印请求参数,出口打印返回值。--便于和前后端扯皮,什么参数传错了,...阅读全文

2017.05.09 13:03 cout_helloworld
阅读:6428 评论:0

Golang 优化之路——空结构

写在前面 开发 hashset 常用的套路: map[int]int8 map[int]bool 我们一般只用 map 的键来保存数据,值是没有用的。所以来缓存集合数据会造成内存浪费。 空对象 空对象是个神奇的东西。它指的是没有字段的结构类型。 type Q struct{} 它牛逼的地方在于: 可以和普通结构一样操作 var a = []struct{}{struct{}{}} fmt.Println(len(a)) // prints 1 不占用空间 var s struct{} fmt.P...阅读全文

2017.05.09 14:10* Superman1316
阅读:1219 评论:0