从16年10到现在回到上海工作有半年了,大概总结一下;
首先是服务化的问题,原来在阿里的时候用的是hsf,dubbo,服务化的问题已经很成熟了,也不用自己操心,单元化,中心化这些都是已经在中间件团队运维的很成功,而现在来到小公司,首先要解决的是服务化的问题,在选型上,老板选择了使用grpc来作为服务化的底层,而我要解决的是服务注册,发现,路由及易于使用的问题,所谓前人开路,后人乘凉,在注册和发现有许多成熟的方案了,借鉴spring cloud的consul注册与发现,我们把注册与发现基于spring boot实现了一个starter,而易用性的问题,我们开发了一个能够生成interface和pojo的maven和gradle插件,结合起来初步解决了服务化的问题。但是在此做的过程中发现不是基于自己的序列化方式来做,许多时候是很费力及不讨好的,存在的问题有:
1:使用protobuf来做序列化的时候,null对象与empty对象很难区分
2:性能的确跟不上
好处有:
多语言的问题非常容易解决
其次是服务监控及服务测试的问题,在此我们做了一个控制台系统,能够服务查询,服务测试等等,本来还想把路由给添加上去的,老板把前端资源给撤走了,没办法继续下去
再次是服务调用链监控的问题,我们选择使用了pinport来做apm,基于pinport开发了自己的插件,存在的问题有监控数据统计与分析的问题,这个很头疼,基于hbase的数据分析与统计会让开发人员陷入到实现老板各种各样的报表需求中,目前也没有一个好的解决办法
还有一个就是elasicsearch与mysql数据同步的问题,这个也很麻烦,我的初衷是尽量不使用阿里云的binlog日志服务,尽量使用jdbc去拉取数据,根据数据库时间字段来实现全量或增量的更新,但是最终落地却是阿里云的dts与jdbc并存的方式,让我头大
回上海半年多了,大概的工作完成就这些,有许多感触
1:做技术越做底层越感觉到自己能力不够,比如说,在docker方面,仅仅停留在使用阶段,而出了问题就歇菜了
2:许多东西与事情如果不做和不看了就会忘记,netty在阿里的时候阅读了源码,但是现在有点忘了差不多了,zk的源码也阅读过,现在也忘的差不多了
3:开源的软件提issue百分之九十没人理,这估计也是为啥要重复造轮子的重要原因吧
展望下半年
docker需要从使用到熟悉阶段
许多原来的知识点需要再次进行梳理及理解