功能模块
星辰服务治理平台包含以下功能模块:
(1)服务治理
星辰服务治理平台支持对 gRPC、Spring Cloud、Dubbo 三种微服务框架进行管理,如图 5 所示,支持查询注册中心维护的服务实例信息,支持通过控制台配置注册中心、访问控制、主备、分组、黑白名单、流量控制、熔断等信息。
图 22 服务治理功能
图 23 服务间调用
(2)服务地图
服务地图将项目与项目、服务与服务之间的调用关系和调用量通过拓扑图的形式进行展示,如图 6 所示。系统架构师可以从服务地图提炼出全公司的核心系统拓扑图,找出不合理的环形调用链;运维人员可以从服务地图掌握核心系统所依赖的上游系统,并给予核心系统同级别的重点保障。当预期面临流量猛增时,服务地图还可用于流量预估,因为从客户端等入口预估流量最准确,进而可以沿着服务地图下沉计算出各个微服务分摊到的流量,协助后台系统制定扩容预案。
图 24 星辰服务治理平台服务地图
(3)链路跟踪
在微服务架构中,一个用户操作涉及到多个微服务的协同才能完成,在业务调用链路上任何一个微服务出现异常或者网络超时,都会导致失败。通过链路跟踪,我们可以很方便的看到每个请求各个环节的耗时以及异常,帮助我们对系统进行优化。星辰的链路跟踪功能基于 Google 的 DApper 论文 [11] 实现,在系统入口接收用户的请求后,会为用户的请求分配一个 TraceID 用来唯一标识调用链。TraceID 会跟随远程调用消息传递到下游服务,直到整个链路的节点都拥有了 TraceID,通过 TraceID 可以串起这个请求的完整调用链路。
图 25 调用链关系
(4)文档中心
文档中心对 ProtoBuf 格式接口定义文件进行自动解析,提供技术人员查询各服务注释信息与接口定义的功能。我们把文档中心看作是一个服务集市,技术人员在实现一个涉及通用模块或第三方应用的功能前,可以像逛集市一样来文档中心查询接口的详细信息。未来我们还将强化文档中心的交互沟通功能,增加问答与评论功能,打通各服务上下游的交流渠道。
图 26 文档中心
(5)统计分析
统计分析模块支持对服务、实例、端点的性能监控,包括响应时间、可用性、吞吐量等;支持数据大屏,全景展示当前所有服务的运行状态;记录用户请求处理时间,分析出被调用服务的性能;记录服务响应时间,并展示响应时间最长的数个服务,即慢服务列表。
图 27 平台统计分析
(6)告警中心
告警中心支持基于监控数据的告警规则设置,并以自定义的方式发出告警通知。
图 28 告警设置
(7)框架统一纳管
为了更好的支持企业架构转型,也便于各业务方系统内部有更多的微服务框架供选择,晨辰服务治理平台同时对多种微服务框架进行了统一纳管,在支持 gRPC 服务的基础上,增加了 dubbox 及 Spring Cloud 框架。
图 29 多框架支持
转型实践数字化转型
多年来,随着东方证券各类业务的持续发展,数百套业务及支撑系统在线运营,各类应用系统间开始呈现复杂的依赖关系,系统运维的复杂度急剧增加。特别是由于以往系统建设主要由各厂商开发等因素的影响,东方证券内部存在大量的异构业务系统,对外暴露的接口也呈现多种形式,各厂商都有各自私有协议,且存在有 SPX、T2、Web Service、REST、TCP 等各类型异构接口,进一步增加了系统开发、运维的难度。基于这些原因,东方证券从公司战略和技术管理上进行了变革。2018 年初,公司提出了“数字化转型”的战略目标,并将“增强金融科技应用”列入公司的六大发展战略任务之一,这促使我们以更加积极和开放的心态发展科技。
与此同时,东方证券同步在企业技术架构上制定了大中台战略,这也是公司数字化转型中的三个核心战略之一(另两个为:核心自主研发、重构企业技术架构),旨在通过架构转型为公司科技工作的长远发展打下坚实基础。为了推进架构转型工作,2019 年初,东方证券成立了以首席信息官舒宏总担任主任的架构委员会,旨在通过架构委员会重点进行企业架构转型的工作,同时创建了金融科技创新研究院,以整合东方证券及子公司的技术资源、倡导以研究为主导的技术应用为主要任务。
架构标准
为了建设各业务方遵循标准进行开发的能力,让企业架构建设有据可依,东方证券架构委员会制定了架构标准的决策流程及机制,通过架构标准去约束各系统相应开发实践,2019 年 5 月,我们通过服务治理平台接入规范的架构标准,确定了企业技术架构转型的核心框架,各系统采用统一的接口调用方式,要求系统间调用必须使用 gRPC 提供服务,系统内部可以采用 gRPC/dubbo/Spring Cloud 三种框架,支持东方证券 IT 技术架构从传统架构向微服务为核心的现代化面向服务架构全面转型。
图 30 服务治理架构决策
大中台战略
为了实现数字化转型,东方证券制定了三年架构规划,通过架构规划及落地实施,打造行业领先的 IT 架构和一流的 IT 队伍,形成公司科技发展的竞争力,架构规划中有七大重点任务,其中一项是建设强大的业务共享中台,提炼核心业务流程,为前端产品线提供业务共享能力,给前台提供强大的“炮火支援”能力,确保“厚中台,薄应用”的成功落地,。
按照证券行业的领域特点,我们将整个中台领域划分为产品、账户、财富、交易、资产、行情、资讯、日志、认证等中心,而服务治理框架也成为了整个业务中台的核心基础设施。
图 31 东方证券大中台战略
开源共享 / 行业标准
东方证券 gRPC-Nebula[9],本身就是在站在开源 gRPC 的巨人肩膀之上发展而来,为了更好的反馈社区,2019 年 6 月中旬,东方证券宣布开源 gRPC-Nebula 服务治理框架,开源地址:https://github.com/grpc-nebula,目前社区已建设了社区决策委员会,初期拟设 7 名委员,含 1 名委员会主席,设有专人进行 GitHub 代码的跟踪、维护、解决。同时,委员会会定期组织研讨和常态化沟通、社区技术交流、协调开发力量进行社区开发、社区筹款、审议版本 maintainer 的版本和功能集、进行社区委员会选举等工作。社区将秉持金融科技创新,对外技术输出的原则,致力于成为行业内首家基于 gRPC 可治理 RPC 框架下的开源社区,并获得了 2019 年信通院 OSCAR 尖峰开源技术创新奖(基于社区开源二次开发)及第四届中国优秀云计算开源案例一等奖。
同时整个证券行业长期以来在技术架构领域没有统一标准,各家厂商都有自己相应的技术框架,从而造成了整个行业一直面对的异构化难题,gRPC-Nebula 开源也旨在为整个行业提供参考建议,同时,我们也积极加入了深交所技术产品联盟,推广 gRPC-Nebula 在行业内的使用,希望能达成行业共识,形成统一技术标准,大幅降低行业各系统间对接成本。
实践成果
从 2019 年初开始,东方证券进行服务治理框架研发工作,截止 2020.9 月,gRPC-Nebula 框架 Java 语言共迭代 14 个版本,C++ 语言共迭代 8 个版本,平台迭代了 4 个版本,较好的支撑了业务各类的需求。
同时,东方证券在内部大力推广服务治理框架及平台的使用,截止 2020.9 月,共接入各类应用 46 个,项目 99 个,服务数 369 个,方法数 3125 个,日承载各类请求量已达到数千万级。
从系统维度来看,东方证券服务治理框架已接入内部东方赢家 App、私行 App 通达信网上交易、同花顺机构版、东方睿、东方大脑、智能投顾、大营运平台、业务中台(财富、交易、产品、账户、资产、行情、资讯等)、资产配置等核心系统,从厂商维度来看,微软、恒生、金仕达、新意、顶点、通达信、同花顺等核心厂商及自研团队也已按照架构标准接入服务治理框架及平台,实践成果非常明显。
图 32 服务治理平台实践成果
总 结
本文探讨了企业架构领域的关键技术,并详细介绍了东方证券服务治理项目的建设成果与实践经验。东方证券在企业架构层面制定了大中台战略,旨在通过业务架构转型为公司科技工作的长远发展打下坚实基础。作为大中台战略的核心组成部分,服务治理项目的建设,是公司提高金融科技核心竞争力的重要突破。gRPC-Nebula 框架和星辰服务治理平台已经应用于东方证券业务中台(财富中心、交易中心、账户中心、产品中心等)、东方赢家 App、私行 App 和东方睿机构交易产品线等数十个项目,同时实现了各微服务框架 (gRPC-Nebula/dubbox/Spring Cloud) 的统一纳管,为业务线开发提供了更多的开发框架选择,随着平台生态的不断优化和发展,未来将在内部全面推广,服务于更多产品线和用户,为公司 IT 治理规范和体系化架构建设做出更多贡献。
参考文献
[1]Fowler M, Lewis J. Microservices. Viittattu, 2014, 28: 2015
[2]Fotis Aisopos, Konstantinos Tserpes, Theodora Varvarigou. Resource management in software as a service using the knapsack problem model. International Journal of Production Economics. 2013 (2)
[3]Thones J. Microservices. Software IEEE, 2015, 32(1): 116-116
[4] 李贞昊. 微服务架构的发展与影响分析. 信息系统工程, 2017(1): 154-155
[8]https://spring.io/projects/spring-cloud/
[9]https://github.com/grpc-nebula
[10]Hunt P,Konar M,Junqueira F P, et a1. ZooKeeper:Wait-free Coordination for Interact-scale Systems[C]// USENIX Annual Technical Conference. 2010, 8: 9.
[11]Sigelman, Benjamin H., et al. DApper, a Large-Scale Distributed Systems Tracing Infrastructure. Technical report, Google, 2010