
golang
乐观黑胡子
做了多年游戏开发,涉及端游,页游,手游,涉足过音视频服务器开发,喜欢分布式,高性能方向各种技术
展开
-
golang二进制协议接口映射
在写服务器程序时,特别是业务向的服务(比如游戏服务器),经常会遇到处理许多客户端协议的情况,如果是http服务,那么定义好处理接口,剩下的交给web服务器就可以了。但是二进制协议就没有这么方便了。通常的自定义二进制协议规则都是固定长度消息头+变长消息体构成,在消息头中会有消息长度,消息id等字段。(基于TCP流式协议),服务器接收到客户端消息后,首先读取消息头,解析得到消息长度,再按照指定长度获取...转载 2018-05-07 22:01:35 · 1110 阅读 · 0 评论 -
基于consul构建golang系统分布式服务发现机制
在分布式架构中,服务治理是一个重要的问题。在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服务的时候,人肉配置极其麻烦且容易出错。之前在一个C++项目中,采用ZooKeeper进行服务治理,可以很好的维护服务之间的关系,但是使用起来较为麻烦。现在越来越多新的项目采用consul进行服务治理,各方面的评价都优于ZooKeeper,经过几天的研...转载 2018-05-07 22:03:43 · 1224 阅读 · 0 评论 -
golang配置文件热更新
配置文件热更新是服务器程序的一个基本功能,通过热更新可以不停机调整程序的配置,特别是在生产环境可以提供极大的便利,比如发现log打得太多了可以动态调高日志等级,业务逻辑参数变化,甚至某个功能模块的开关等都可以动态调整。每种语言都有自己的热更新实现方式,在golang里面我看到了有人采用了一种错误的实现方式,如下:type Config struct { Test1 string `json...原创 2018-05-07 22:04:52 · 2114 阅读 · 0 评论 -
golang mongodb驱动mgo异常崩溃问题
##背景在我的后端游戏架构中,有一个golang开发的数据服务器,用来存储落地玩家的历史数据,并提供给客户端http接口查询。由于之前的项目已经在使用mongodb,出于方便易用支持类json格式的bson类型,且mongodb3.0以后引入了高效的WiredTiger引擎,因此该数据服务也直接使用mongodb作为落地存储和缓存。mongodb官方提供了各种语言的驱动,但是并没提供官方驱动,业界...转载 2018-05-08 15:09:44 · 2333 阅读 · 0 评论