张晋军
京东商城基础架构部服务治理组负责人
京东技术11.11基础架构峰会讲师
十六年一线研发经验,十六年软件开发经验,作为京东商城基础架构部服务治理组负责人,目前主要负责CallGraph和JSF平台。在京东技术——11.11基础架构峰会上,张晋军主要深入分享了京东CallGraph平台的产生背景以及它的研发原理、架构设计、功能实现,它提供服务之间的依赖关系拓扑图,能够轻松定位问题。还能够看到全局服务调用热度变化图,对应用的使用情况评估,包括应用对底层资源占用合理性评估都一目了然。
今天我们对话张晋军,一起详细解读微服务。
1
您在加入京东之后都负责过哪方面的工作?
毕业之后我先是做了11年的存储技术,然后来到了京东云平台做了一段时间的项目开发,去年来到基础平台一直在做中间件,包括JSF远程调用框架,还有就是京东技术——11.11基础架构峰会主要宣讲的内容CallGraph,以解决分布式服务跟踪问题。
2
为什么这么重视CallGraph平台?
其实现在业内都在关注微服务,微服务就是把一个整体的应用切分成一个个单体的应用,最大的好处是允许足够小的团队进行独立开发、部署、运维,极大地释放了小团队的灵活度和激情,因为微服务不会把团队绑定在单一的技术站上,能够充分发挥团队内每一部分的能动性、积极性和各自的优势。但是长久以往,大家都按照这一个架构原则去工作,这些微服务就会越来越多,最终引发一个很大的问题:依赖性问题。
拿京东的黄金链路来解释,就是从用户登录、看商品再到领优惠劵最后到结算,这个过程中会牵扯到很多很多系统,如果调用某一服务出现了问题,那么到底是此服务的问题还是此服务下游的问题,这个链路越长就越不好回答。除了依赖性问题,还有问题的定位难题:一个环节出了问题可能需要检查所有环节才可能找到产生原因,调用链越长、跨部门的流程越多越容易出现此类问题。
所以CallGraph平台就是帮助大家解决这两个问题的工具,首先利用各种调用链的树形拓扑图呈现整体的依赖关系和各系统的负责人;其次拓扑图还会呈现各系统的关系图,即每一个系统之间是什么关系,它们互相的依赖程度如何。当一个服务出现了问题,CallGraph会自动在业务方的日志里增加一个跟踪ID,然后业务方凭借这个ID即可在Call Graph平台上查找定位问题的来源。
3
京东对于CallGraph发展定位如何?
刚刚谈到的是现在CallGraph平台主要解决的两个问题,以后的CallGraph解决的问题会更宏大。我们正在绘制京东的全局调用关系图,一个像地图一样的东西,上面能展现京东所有的应用之间的调用关系,以及应用间的调用关系量达到的程度,以便于帮助各业务方更好的了解业务帮助上层管理者做出决策。还会和JDOS平台合作拿到所有底层资源的数据做一个应用资源使用合理性的分析。
4
您怎么看待企业建立CallGraph平台这件事?
对于分布式跟踪来说,Callgraph肯定会成为将来任何一个只要推行了微服务的公司都会必备的一个平台,它的重要性会像RPC框架、MQ的地位一样,直接支撑业务的运行。和过去相比,现在的开发模式转变了,都在转向微服务开发,而它的增长速度呈现的是一种爆炸性的、指数级的增长,如果没有这样一个CallGraph平台,企业就会像盲人摸象一般不知道到底问题出现在哪里。
而CallGraph未来的发展一定会是向程序员提供更多的手段从多维度来定位监控问题,甚至会使用机器学习的算法自动化智能化的给技术人提供解决方案。