1、
真有趣的陈明达分享了《Go语言游戏项目应用情况汇报》。
其中对通讯层、业务层、数据层的分别处理,让人印象深刻。总体上的原则是,实现通讯层、数据层的代码自动生成,让业务开发把精力集中在业务层。
通讯层通过可视化编辑的JS,映射成Go代码。
业务层除了在文件读写、RPC调用等注意屏蔽阻塞以外,还有一些技巧,比如数据离CPU越近越好,避免数据复制和大集合遍历,注册接口防止循环引用。
数据层通过数据库切片缩小查询时的集合,支持内存事务,以事务为单位同步到数据库,实现支持Redo/Undo以及数据的同步日志,保证了数据的稳定。
对数据库的访问进行封装,使外部调用不直接访问字段。
事务日志同步前先写入本地日志,再写入MySQL。
事务日志采用JSON格式,方便分布式分析。
2、
七牛的许式伟分享了《七牛如何做HPPT服务测试》。
七牛并没有使用RPC,而是使用已经非常成熟的HTTP服务。七年希望在HTTP服务测试上,更专注于服务逻辑本身,做到跟客户端无关。
七牛在Go的基础上,引入自己的HTTPTest DSL文法,使得测试更接近基于HttpClient写测试案例的思路,努力让代码更直白体现测试用意。
HTTPTest DSL语法结构为命令行+参数开关的方式,引入了类型系统,并且有提高测试开发效率的缩写模式。
其中作为重点设计的是match命令,当match命令中
通过测试环境参数化的方式,屏蔽了测试脚本的环境依赖,让脚本更易于入库复用。
HTTPTest DSL包含命令行解释器和支持变量定义的JSON解释器。
3、
富麦的余军分享了《动态资源管理和容器技术在金融行业的架构探索和明天》。
与大家的一般印象不同的是,金融行业因为最有钱,它们的IT系统一直是最先进的,也经常做一些非常前沿的激进的改革尝试。
但是,因为业务形态复杂和高管控需求的约束,才导致了大家对金融业不愿意尝试流行新技术的误解。
金融业的IT系统,不同于互联网公司纵向浅、横向多,相反是纵向深,横向小的特点。甚至很多时候根本不考虑解耦,反而根据业务需要纵向完全耦合死。90%以上的银行系统是很老的架构,当前也没有改的必要。
金融业非常重视Staging环境的测试,甚至有些涉及范围的新业务会直接跑在Staging上,在推广到Production环境尽可能排查掉所有可能出现的问题。
金融业对IT的需求,归根结底是要构造一个高效的资源管控模型。
IT界给出了很多金融系统方案,包括PBS、Condor、Hadoop YARN、Apache Mesos、Google Kubemeles等等,但因为都是不考虑服务特性的资源配比方案,并没有真正解决金融业面临的具体业务场景问题。
余军有一个比喻,简明又形象,互联网的业务场景像Cattle Farm,而金融业更像是Zoo。
富麦有自己的一个解决方案:SWF。
虽然作为iOS开发,对Go的很多东西都傻傻听不懂,但思维上还是有很多可以借鉴的地方,感觉不但值回票价,完全是绝对超值:)