gydtep
发表于 2021-4-15 16:26:39
在应用层,则需要处理与应用相关的操作,比如代码包的错误、配置错误、心跳异常的处理。下图中蓝色虚框中的部分可以完全由平台负责,用户可以无感知;蓝色实框则是平台帮助用户做了大量工作,但是还是需要用户感知和作出一定决策;红色框则代表还是需要用户自己管理的部分。可以看到,在容错方面,平台提供了非常强的能力,包括多AZ的容灾能力、快速的弹性能力、内置的流控能力以及多层次、多维度的监控报警能力。借助于这些能力,用户管理基础设施的复杂度就大大降低了。
gydtep
发表于 2021-4-15 16:32:22
下图展示了应用交付的流程,代码通过统一管理的代码库存储和管理起来,再通过持续集成将其变成一个交付物,再将其存储到交付物仓库里面。交付物可以是容器镜像,也可以是代码包的模式。产出了交付物之后,可以自动地将其部署到测试、生产环境中去做版本部署,最后实现到生产环境的自动部署。因此这样应用交付流程的关键点在于实现高度自动化,而自动化的关键环节有两点:分别是基础设施即代码和环节间的自动化串联。
gydtep
发表于 2021-4-15 18:20:20
一个sample文件,包含了一个range信息,这个range关联了一个hoverResult。含义是该文件的某个位置范围内,触发hover事件的话,就给出hoverResult存储的结果。
gydtep
发表于 2021-4-15 19:13:30
如果用Json文件描述这张图的存储,就可以得到如下结果:
1、{ id: 1, type: "vertex", label: "document", uri: "file:///abc/sample.java", languageId: "java" }
2、{ id: 2, type: "vertex", label: "range", start: { line: 0, character: 13}, end: { line: 0, character: 18 } }
3、{ id: 3, type: "edge", label: "contains", outV: 1, inVs: }
4、{ id: 4, type: "vertex", label: "hoverResult", result: {["this is a sample class"]} }
5、{ id: 5, type: "edge", label: "textDocument/hover", outV: 2, inV: 4 }
实际一个工程的LSIF图会非常复杂,经常会包含几十万个节点。
gydtep
发表于 2021-4-15 19:41:37
用户对代码的浏览场景主要集中在代码评审和主干分支的代码浏览,所以我们目前主要支持两种场景的语法服务。语法服务接收来自代码平台的事件消息,如代码推送事件,评审的创建、更新、合并、关闭、重新开启事件,来触发语法服务构建。
gydtep
发表于 2021-4-15 20:12:00
针对不同语言,我们只需要实现一次从源代码到LSIF格式的转换,就能将其应用在多种场景。多种代码语言代码语言都会被解析成统一的LSIF格式文件。
gydtep
发表于 2021-4-16 10:24:14
我带着这个命题进入业务平台,来做后续一系列的事。今天趁这个机会,和大家分享一下,关于这件事和这件事背后的一些想法,以及我对架构师的一些思考。
gydtep
发表于 2021-4-16 10:36:36
第一点就是顶层设计。国家每5年有五年计划,这其实就是在国家整个层面的一个非常清晰的顶层架构设计,这里面对国民经济重大建设项目和生产力进行宏观的架构设计,它也是一种架构设计。在这里面,要做什么事要定义的非常清楚,要达到什么样的结果也要定义的非常清楚。
gydtep
发表于 2021-4-16 14:11:13
当前最紧急的问题,比如说用户体验、提升效率、低成本。这些问题其实是非常复杂的。很多同学都想解决这个问题,很多种方法都在解决,但是整体来说效果不是特别明显。因为它链路太长了,链路长代表影响的业务和影响的人更多,你必须得换一种新的思路来考虑这个问题。同时用户分层,内部的技术人员增多,其实我们最终要化为一句话:要把解决复杂问题定义为架构师的一个典型角色。
gydtep
发表于 2021-4-16 14:19:14
架构师需要什么样的能力?我参考了很多外面一些同学的分享,总结出来其实就是发现问题、分析定义问题、解决问题。