一切从架构的基本元素出发

软件架构之架构定义 软件架构软件架构定义 阅读详情

——专访汤森路透集团企业架构师刘晓晖


 

记者 / 郑柯

 

 

 

汤森路透集团企业架构师刘晓晖

汤森路透集团企业架构师刘晓晖

说起来路透,很多人知道世界四大通讯社之一路透社,却并不知道它背后的路透集团在2008年4月与加拿大媒体巨头汤姆森集团合并,成为汤森路透集团,英文名Thomson Reuters,一跃成为全世界占有市场份额最多的金融信息服务提供商。

2006年,路透集团在中国北京中关村软件园成立了软件研发中心,目前已有700余人的研发队伍,负责研制、开发、维护汤森路透全球金融系统的数据采集、处理、发送任务,完成了纽约证交所,纳斯达克等交易所的升级与软件移植,欧共体多市场的金融报价系统。除了金融市场战略事业部,集团还拥有法律事业部,税务财务事业部,科学研究事业部,医疗健康事业部,汤森路透集团为全球上百万的专业人士提供高质量和智能化的信息服务,北京的软件研发中心现致力于为集团旗舰产品的研发做出贡献。

刘晓晖,是汤森路透软件研发中心内资深的企业架构师。1991年开始进入IT行业,多年来扮演过程序员、团队主管、经理等各种角色,最后成为架构师,也有六七年的时间了。


 

 

什么是架构?

在整个采访过程中,刘晓晖多次提到“架构的基本元素”。我们的谈话,也就先从“什么是架构”开始。刘晓晖指出:“虽然不同公司对架构会有不同的定义,但是说起来架构,总是会有一些共同的元素,总是要涉及到结构、各个组成部分之间的交互关系,以及这些组成部分跟外界的交互关系。除此之外,还有一些相对来说不太明显的东西,比如一些设计标准,应该遵循的各种规范等等,它们也属于架构的元素,就像我们这栋办公楼的装修,就非常有Thomson Reuters的一贯风格。只要是Thomson Reuters的办公室,不管是在伦敦、新加坡,还是总部,装修风格都非常像。架构最终是要服务于具体的业务要求。”

接下来,刘晓晖提到了架构的共性与具体行业和企业的组合问题。他说:“在架构上,一定有一些共同的元素。如果结合不同的具体行业和企业,就会产生架构的多样性。就拿Thomson Reuters来讲,我们是做金融数据产品的一家公司,专门为各种机构和个人提供专业的金融数据和咨询信息,有很多产品线。然而所有的产品实际上都是基于我们的金融数据。比如有些客户希望通过汤森路透得到一些实时的股市信息,我们还有外汇、期货等方面的交易平台。可以想象,我们有一个非常庞大的数据采集系统,处理各种各样不同类型的金融数据,此后还要把数据分发到每一个具体的产品。因此,如何组织这些不同的数据集,是我们在做架构时需要考虑的一些东西。不同客户还会有些特殊的需求,比如有些要求实时性,有些要求容错性,也就是说某个系统的某个环节发生故障,应该对他的业务不造成影响,这都是我们在整体上设计汤森路透系统架构时非常关注的一些方面。不过如果把架构的基本元素再套用到其他行业,可能又有不一样的一些关注点。”


 

 

汤森路透集团的架构师

在汤森路透集团内部,有一个名为Chief Architecture Office的组织,简称CAO。那么为什么要存在这样一个组织?其中又是由什么样的人构成的呢?刘晓晖这样解释:“CAO以前是隶属于CTO管辖的,是非常重要的一个机构。至于是否有必要有这样的组织,我觉得很大程度上取决于行业的性质。我们汤森路透从全球几百家证券交易所俄采集金融数据,然后再做集中的处理,增值和分发。对于如此庞大的一个系统,必须有这么一个Chief Architecture Office的存在,负责整体架构。我们要求在任何一个领域中做项目的时候,都要把它放在整个企业的环境中考虑,看它跟其他系统应该是什么样的交互关系。”

“在CAO中,有三种架构师,一种是企业架构师(Enterprise Architect),就像我,我们的关注点在于系统,负责企业系统的架构,做Technical Governance,也就是技术监理,是我们的一个重要工作方式。同时对于一些比较大的项目、一些战略性的项目,我们会直接参与架构的设计。还有一种架构师叫做数据架构师(Data Architect),又称为信息架构师(Information Architect)。他们的关注点是数据和内容。因为汤森路透对于自己的定位是金融数据中心厂商,怎么样组织我们的数据,这点非常非常重要。因为我们的数据来源非常非常多,怎么样把这些数据非常有序地整合起来,同时还得考虑这些数据跟不同产品系列之间应该是什么样的关系。此外还有业务架构师(Business Architect),侧重于业务如何跟各种各样的流程之间如何定义。其实在汤森路透集团这一类性质的公司里头,经常可以看到Chief Architecture Office的机构。

“另外,我们还有一些系统架构师、解决方案架构师、软件架构师等等,这些在汤森路透复杂庞大的系统里都能找到。从之前谈到的架构基本元素而言,他们都有共同之处,但是放在具体的环境里头,大家都有各自不同的关注范围,有不尽相同的一些抽象层次,但这些都是一层一层环环相扣连接起来的。在TOGAF企业架构框架里面也可以看到类似的对应关系。”

刘晓晖接下来还谈到了有关汤森路透内部架构师培训的话题。他提到:汤森路透重视员工的发展,有专门的技术梯级,员工在技术方向有较大的发展空间。汤森路透还为技术人员成长为架构师提供了培训的机会。自06年起,汤森路透集团从全球研发中心开始推广架构师成长计划(Growing Architects Program),为各个领域不同的技术骨干创造成长的条件,并专门针对他们设计了两年的培训计划,主要分三个方面。首先是为他们安排非常资深的架构师作为导师;其次,围绕整个培训计划,还建立了架构师社区,并有定期的讲座和交流;第三个方面就是有一些跟公司业务匹配的课程设计,这其中既有技术方面,也有软技能方面,比如谈判、演讲方面的课程等等。


 

 

作为桥梁的企业架构师

说起来自己担任的企业架构师的独特之处,刘晓晖指出:作为汤森路透集团的企业架构师,需要结合汤森路透的业务来考虑整个系统与数据的构成。比如实时数据、历史数据以及众多公司各种各样的背景信息,这些数据如何跨系统、跨层次地关联在一起。如果具体到某个具体系统内部的详细设计,就会有相关的系统架构师去考虑,比如与证券交易所的交互系统等等。如果其中涉及到与外界系统的关系,这又是需要企业架构师来协调的事情了,但是企业架构师通常不会过多关注具体的模块设计或是算法实现。

经常有人为架构师应该注重业务,还是注重技术而争得不可开交。对此,刘晓晖的看法是:“我个人不会去区分到底哪个更重要。架构师当然要有技术方面的专长,但是作为企业架构师,其实担任了技术与业务之间的桥梁。所以对于我来说,技术和业务同样重要。不过只要是一个架构师,一定会涉及到非常多的利益相关人,一定有与业务和需求相关的一些东西,也有非常具体的技术要求。企业架构师可能很少去写代码,但是要关注系统为了实现业务需求需要用什么样的技术,比如实现什么样的容错能力,采用什么样的容错方法,什么样的弹性机制等等。我们要把这些思考构建到系统里头,在这个层次上,结合业界的一些实践,结合汤森路透自己各种系统的一些实践,拿出有一些非常有价值的解决方案。比如针对可扩展性,提出什么样的架构模式,在哪些业务情形下可以重用,具体要怎么样实现,数据应该怎么存储,系统之间的交互应该是通过什么样的方式,什么样的渠道,应该在哪些地方建立各级的缓存等等这些方案,都需要我们去归纳、设计。”


 

 

企业架构的技术趋势

对于未来两、三年内企业架构技术上的变化,刘晓晖说道:“在汤森路透集团,最核心的东西就是数据和内容。但是我们会利用各种各样新的技术,比如说3G,也可能成为一种我们分发数据的一种途径。再比如云计算,我觉得都有可能成为我们整个平台有机的一部分。所以架构师要考虑新的技术领域。在设计架构的时候,应该充分利用新技术来满足业务要求。新技术,新方法一定会出现,但作为架构来说,把这些技术的具体形式都抽象掉以后,基本元素仍然是存在,仍然是共同的,只是在具体表现形式和应用的具体技术方面会有各种各样的不同。

“由于我们的业务主要是围绕数据展开的,所以我会关注基于数据的智能分析、商业智能这个领域。另外,我们这个行业现在关心虚拟化技术,因为这跟我们直接相关。汤森路透在世界各地针对不同专业领域也建有自己的数据中心,每一个数据中心都非常非常庞大。如何用新技术把系统设计得更加的有效、密集,其中就有很多方向可以考虑,包括如何充分利用服务器资源,提高计算能力,同时更节约空间。虚拟化是我们非常关注的技术。此外,我们还对涉及到海量数据的高性能计算相关的技术跟关注。汤森路透跟一些主要的一些厂商,比如IBM、Oracle、微软等等都有比较固定的合作伙伴关系,所以我们也有很多活动跟这些伙伴一起合作。”


 

 

多年来的体会

做了这些年架构师,刘晓晖这样谈自己多年来的体会:“有几点我觉得感受比较深。一个就是现在很多人都在谈架构,实际上他们没有非常明确的认识。这个概念显得有些含糊和抽象,但实际上这个概念是可以有很明确的方法来解释和表述的。同时,也正是因为架构这个概念的特殊性,各种角色对于架构师都有非常不同的期望,这也是架构师经常要面对的,非常有挑战性的一个方面。比如在一个项目里头,工程师对你的期望跟业务方面角色对于你的期望完全不一样。而项目经理的期望可能又是另外一种了。不过至少有一点是可以肯定的:这么多不同的利益相关者,他们对于架构师都抱有很高的期望。

“架构师还会遇到一些文化方面的问题。在汤森路透这一类全球性的公司里,文化是一个非常普遍的问题,而且大家都觉得这个东西非常重要。汤森路透集团也有专门的工作组在做这方面的努力,去归纳文化之间的差别到底有哪些不同,会带来什么样的问题,需要怎么解决。因为不同文化背景,思考、沟通的方式也不一样。包括我们在运用语言的时候,比如说在我们这个类型的公司里面语言的使用能力不一样,就会产生一些非常微妙的差别。在某一个文化里头适用的沟通方式,换一种文化背景来说,可能就不适用,人家会觉得‘你这好像是在冒犯我’。我们工作组在做这一方面的研究和教育。他们一直也在各种场合给不同文化背景的人强调:要意识到文化上的差异可能带来一些问题,要有充分的考虑和应对。

“对于架构师来说,我觉得这也是软技能的一部分。架构师对于这方面要有充分的认识,要相当敏感,只有这样才能进行更有效的沟通。因为沟通是架构师经常要做的事情。不过现在很多情况跟我们当年不一样,现在我观察到:相当多的人具备很好的语言运用能力,他们在文化的适应能力上也相当强,同时有非常丰富的工作背景。因此,在汤森路透内部,技术骨干要发展成为架构师,文化上的差异已经不再是多么大的一个障碍了。”


 

(本文来自《程序员》杂志09年06期)


 

《程序员》10年7月刊精彩内容预告:http://www.programmer.com.cn/3484/

《程序员》订阅:http://book.youkuaiyun.com/programmer/

超详细版AUTOSAR架构图元素命名规范 深入解析AUTOSAR架构图中各元素的命名规则,帮助开发者统一建模语言与模块标识,提升系统设计的规范性与可读性,是掌握autosar架构图的关键基础。 阅读详情

相关推荐

人工智能Agent的基本原理与架构

人工智能Agent是一种能够感知环境、做出决策并采取行动的自主软件系统。它具有感知、推理、学习和执行的能力,可以根据环境变化自主地做出反应和决策。Agent系统通常由传感器、决策引擎、执行器等模块组成,能够实现感知-决策-执行的闭环控制。

AI天才研究院 2467

软件架构设计---软件架构概述

像学写文章一样,在学会字、词、句之后,就应上升到段落,就应追求文章的“布局谋篇”,这就是架构。通俗地讲,软件架构设计就是软件系统的“布局谋篇”。 人们在软件工程实践中,逐步认识到了软件架构的重要性,从而开辟了一个崭新的研究领域。软件架构的研究内容主要涉及软件架构描述、软件架构设计、软件架构风格、软件架构评价和软件架构的形成方法等。 软件设计人员学习软件架构知识旨在站在...

hu19930613的博客 6万+

什么是架构设计?本文试图从最基础的层面出发,阐述什么是架构设计,以及架构师如何参与其中

架构设计(Architectural Design)是指用来研究、设计并实现系统结构的工程活动。在计算机科学领域里,软件架构设计是用来理解、构造、优化、控制和改进系统软件组织架构的方法和过程。它的目的在于帮助组织更好的理解和管理软件系统的功能、性能、数据、模块等元素,并用此信息确定软件系统的整体结构、组件及其关系,最终达到增强系统可靠性、可用性、适应能力和易维护性的目标。架构设计是一个高度复杂且艰巨的任务,涉及很多专业技术和理论。

AI天才研究院 1515

软件架构详解(附图)

软件架构(software architecture) 软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连

白及 25万+

从用户视角出发:提示工程架构师如何设计「一看就懂」的界面

设计“一看就懂”的提示界面,核心不是技术,而是用户思维——站在用户的角度,理解他们的需求、痛点、认知习惯,用简单、直观的设计解决问题。界面不是展示技术的舞台,而是帮助用户完成任务的工具。只有当界面“一看就懂”时,才能让AI技术真正赋能用户,实现“技术为人服务”的目标。最后,送给所有提示工程架构师一句话“好的界面设计,不是让用户记住界面,而是让用户忘记界面,专注于任务本身。作者:[你的名字]公众号:[你的公众号]知乎:[你的知乎账号]GitHub:[你的GitHub账号]

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 449

基于FMCW技术的毫米波雷达测速原理与应用

调频连续波(FMCW)技术是毫米波雷达中实现高精度测速的核心方法之一。本文详细介绍了FMCW测速的基本原理、信号处理流程以及在实际应用中的关键技术。通过分析FMCW雷达的多普勒效应和频率差测量方法,本文展示了如何利用FMCW技术实现目标速度的高精度检测。此外,本文还探讨了FMCW测速在自动驾驶、智能交通和工业自动化等领域的应用案例,为毫米波雷达开发者提供了理论支持和实践指导。

不谈枯燥公式,只聊雷达趋势。用大白话解读毫米波里的黑科技。 1137

《系统架构设计》-01-架构和架构师概述

1. 架构的基本定义 1.1 架构组成理论 1.2 架构的决策理论 1.3 架构设计与系统工程 2. 架构师 2.1 架构师的活动与系统工程 2.2 架构师的分类 2.3 架构师的技能和职责 2.4 架构师的基本职责 3. 从程序员到架构师 3.1 架构师和程序员的对比 3.2 转型成功的三段式模型 3.3 架构师的工作开展

架构+开发+运维 3262

研究生研一学习机器学习ML、深度学习DL的规划

研究生学习机器学习DL、深度学习DL的规划 保上研之后也没有很好规划自己的学习路线,看到b站上的一位清华博士讲述他本科也是机械跨考计算机的学习路线,所以记录下来,从现在开始按照规划来一点一点地做好。 掌握python(推荐一周) 1.1 面向对象编程 廖雪峰python网站: https://www.liaoxuefeng.com 1.2 数据分析Numpy numpy 100题: https://www.yanxishe.com/columnDetail/24784 1.3数据分析pandas pan

没有最好,只有更好 3099

Architecture:架构 元素与关系

http://www.iso-architecture.org/42010/cm/ Systems have architectures. In the Standard, thearchitectureof a system is defined as:“fundamental concepts or properties of a system in its environm...

diaoju3333的博客 242

运算放大器电路中的T型网络:如何用更小电阻实现高增益并降低噪声?

本文深入解析了运算放大器电路中T型反馈网络的设计与应用。该网络通过三个较小阻值电阻的组合,等效实现高增益,有效规避了传统大反馈电阻带来的显著热噪声问题。文章从数学原理、噪声定量分析到实际设计技巧,系统阐述了如何利用T型网络在实现高增益的同时,显著降低电路噪声并改善整体性能。

banana的博客 319

nacis服务注册原理_从 Spring Cloud 看懂一个微服务框架的「五脏六腑」

「服务架构」面向服务的架构和微服务架构「五脏六腑」「心脏」「心脏」的依托小结《Netty 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析 —— 精品合集》《数据库实体设计合集》《Java 面试题 ——...

weixin_39527768的博客 144

《系统架构设计》:架构设计基本概念&剖析架构师角色——学习笔记

文章目录思维导图架构设计基本概念架构的基本定义架构演进理论架构设计与系统工程架构师角色 思维导图 架构设计基本概念 软件架构设计的目的就是对系统进行高度抽象,通过一系列设计原则在最大程度上降低系统复杂度,解决系统中存在的各种共性和特殊性问题。 架构的基本定义 要想成为架构师,首先要搞懂两个问题: 软件架构是什么 软件架构设计是怎么样一种工作内容? 架构组成理论 系统的架构是一系列基本概念或者系统在其环境中表现出来的属性,体现在它的元素、关系及设计和发展的原则中。 (1)系统元素 模块、组件、接口、子系

超级大洋葱的博客 1219

【ESP32设备通信】-LoRaWAN网关

在物联网 (IoT) 时代,连接设备和收集数据变得比以往任何时候都更加容易和重要。 LoRaWAN(远程广域网)技术已成为远程、低功耗物联网通信的强大解决方案。 在本教程中,我们将使用 ESp32 构建 LoRaWAN 网关电路,并使用 ESP32 和 BME280 传感器构建传感器节点电路。 对于这两个电路,我们将使用基于 SX1278 (Ra-02) LoRa 模块在设备之间进行无线通信。 我们还将向您展示如何将传感器数据传输到流行的物联网平台 ThingSpeak。

视觉与物联智能 1583

Android功耗系列专题理论之六:外设功耗问题分析方法

本文介绍了移动设备功耗问题的分析方法,重点针对传感器和GPU两大模块。传感器部分详细讲解了通过ADB命令获取日志、状态差异分析和单传感器隔离测试的排查方法,并给出优化建议。GPU部分从基础功耗测量、场景测试到功能模块拆解进行多维度分析。同时阐述了GNSS/GPS功耗的测试方法,包括前后台对比、星座双频拆解及SAP/DPO等特殊功能的电流分析,为移动设备功耗优化提供系统性的诊断思路。

374

架构分解之道

这篇文章将从架构分解的作用、分解的原则、分解的维度、分解的战术逐步给大家介绍架构分解之道。开篇开篇我们先讲两个成语:『好高骛远』和『高瞻远瞩』,如果一个人做一些不切实际的...

u014714618的专栏 1348

基于YOLO-world训练模型的完整教程:从数据准备到微调训练

本文提供了YOLO-world模型训练的完整教程,涵盖从环境配置到微调训练的全流程。首先介绍了YOLO-world项目的安装与配置步骤,包括依赖安装和CUDA环境设置;接着详细说明了数据集的准备方法,包括COCO格式数据集的组织结构和自定义数据集的类别定义;然后阐述了配置文件的修改要点,包括超参数调整和数据集路径设置;最后讲解了训练命令的使用方法及常见问题的解决方案。本教程旨在帮助读者快速掌握YOLO-world模型的训练技能,适用于计算机视觉领域的研究人员和开发者。

FJN110的博客 1108

为了成为一名架构师必须稳扎稳打,软件架构设计的基本概念

软件行业的人才结构是金字塔,我们的目标就是向塔尖走去,从程序员到技术经理或者程序员到架构师,都是我们职业路上所追求的。

m0_63021062的博客 347

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

React 的源码与原理解读(一):从创建React元素出发

这个专栏的写作是为了记录在阅读 React 源码和 React 源码构造思想的时候的心得体会编写的,这个专栏将从 React 的怎么样将一个 jsx 组件生成出对应的 DOM 出发,讲解 React 源码的运行原理和设计思路,组件的生命周期如何绑定,React 的虚拟DOM 为什么比真实的DOM 高效,并且简要谈谈 React Hooks 的设计。

weixin_46463785的博客 2226

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

吃透 408CPU:从核心功能出发,推导基本结构设计逻辑

从CPU的核心功能(执行指令)出发,我们推导出其基本结构设计逻辑:取指令需PC和IR,译码需CU,执行需ALU,存储需寄存器文件,互联需总线系统。设计核心是功能驱动组件:每个硬件元素直接对应指令周期的子任务。理解这一逻辑,能帮助“吃透”408CPU的底层原理,为进一步学习流水线、缓存等高级特性奠定基础。如果您有具体问题(如ALU内部设计),欢迎深入探讨!

2501_93879466的博客 659

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Kafka技术知识总结之一——Kafka 的元素,组成,架构

一. Kafka 的元素,组成,架构 1.1 Kafka 的基本组成 Kafka将消息以topic为单位进行归纳 将向Kafka topic发布消息的程序成为producers. 将预订topics并消费消息的程序成为consumer. Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker. producers通过网络将消息发送到Kafka集群,集群向消费者提供消息 1.2 Kafka 分区的 HW, LEO 参考地址: 《Kafka中的HW、LEO、LSO等分别代表什么?》

琦小虾的代码世界 763

从头学习Drupal--基本架构一

<br />前面学习了Drupal的一些基本概念, 其实我们在构建一个系统的时候, 一般都需要从两个方面来考虑问题:业务模型 <br />也就是领域模型, 是面向我们所要解决的问题域所构建的模型, 前面我们说的关于内容描述方面的几个概念, 其实就是对领域内概念,元素进行概括,抽象得出的业务模型基类. 构建良好的业务模型, 能有效地将问题域中的对象进行分类,综合, 理清他们间的关联, 阐明他们相互间的协作, 并为最终形成系统的对象数据模型打下基础. 我们所说的面向对象(OO), 其实主要就是一个建模的思想.

hzcyclone的专栏 1809
上一篇: .Net平台AOP技术研究
下一篇: 总结的一些系统分析的经验
comeon_data
博客等级 码龄22年 15粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值