首页 > 代码库 > 协议演变

协议演变

    搬过来广州一个多月了,50号人,这样搬迁,不知道老板是怎样想的,托词是广州容易招到人,也问过我是愿意到广州还是留在珠海,一个月前婆婆还在世,当然选择近一点的广州,现在的话,去哪都一样,跑到深圳,或者是苏杭体验一下生活,也很不错,至于安居乐业,暂难打算。

    这段时间是跟着需求改啊改,新增些什么功能,修些什么BUG,隔三差五就部署部署,进度缓下来了,然后又说转golang,这,真要想想。收获也并不是没有,只是也慢了下来,对协议扩展性、存储扩展性能等的问题考虑也更加多了点,保守来算个人能力肯定也是上去了些吧,至少说什么千万级亿级用户什么的,也不是那么胆怯,毕竟扩展方案就在这。

    协议的变化跟需求关系有点密切,因为项目上传量巨大,所以正常的http协议好像真有点食不消,具体往下看。

    这一开始项目是直接套上HTTP协议,用上最传统的传输方法,application/x-www-form-urlencoded,因为开始时候接口定义就是用户注册,登录,简单的申请带的POST参数十分少。接着POST的内容多了,底层的协议也懒得改了,参数来直接就塞一个urlencoded的JSON进去... 快速开发嘛... 因为当时定义参数的时候各种校验参数与固定参数好几项,改成POST一个JSON感觉就是折腾,其实这期间也想过改别的对象协议,不用JSON,但计划赶不上变化,需求一罗罗,只能这样了,况且JSON各种支持也比较好,包括流式解析什么的都有了,就不折腾了。

    慢慢地,各种需求搞得上传量越来越大,调用各种接口越来越多,简化了一下下,开发了个新接口代替了全部相似的接口。既然都这样变化了,自然也就想着一大块JSON上传上来,离奇的是,我们想到在request里面也加个gzip,具体达到多少字节才压缩这个也不好说,因为字符串短的时候压缩是多余的,这样其实就对http协议做了很大改动了,为了快速开发(又是为了快-。-),居然gzip压缩只是直接压缩一个最大块头的参数,其他各种校验参数也原封不懂,好吧,人类你们赢了。

    很好的想法再一次被人类的懒惰打赢,搞得协议光怪陆离,其实这变得这么多,根本就没有必要用HTTP协议的了,各种HTTP头也是废的,干脆也是别要算了,直接上TCP+JSON,协议用透了,各种什么长连接特性什么的,也离不开TCP完整的支持,技术上来之后,其实直接用所谓的低级协议,其实不会不比上层协议靠谱,考虑肯定要比上层协议要好,虽然可能只是一点点。

    像这种特殊项目其实一开始就不应该上HTTP,不是一个网站就不应该拿HTTP来干,现在的各种HTTP JSON API其实都属于有点诡异,上HTTP的原因是一开始就交给我这么一个菜鸟去做,还要求原型出得快。从另一个角度看这里一半的过程也是必经的,尽管你有经验了,项目角度还是需要逐步尝试,不是一蹶已就的,直接用最优的方法,开发速度还是会慢一点。

协议演变