范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

技术中台落地实战

  本篇带领大家来看一看在技术层面要如何实现这些中台设计方案。
  本章不会涉及过多的技术术语,尽量保证我们非技术专业出身的同学也能看懂本章的设计实 现理念。1.1 技术中台体系架构
  大家应该也能猜到技术中台作为中台的底层,其核心使命就是为各条业务线提供真正的代码 实现,从而支撑各部门达成业务目标。
  而在上层的数据中台与业务中台里我们已经提出了复用与模块组合的新型设计架构,那么公 司的实现底层也必须改变传统的实现模式去支持这种业务需求,正因如此,我们就演化出了所谓 的技术中台。具体在企业的软件体系中,技术中台的层级如图12- 1所示。
  图12-1 技术中台的层级
  前面我们已经以产品经理的视角将公司的研发人员分为了前台业务研发人员、 中台研发人 员、后台研发人员 3类。而如果再站在公司的技术实现层面,也就是以技术人的视角来看整个研 发团队,可以发现公司的技术团队可以重新拆分为技术前台、技术中台与技术后台3个部分。
  技术前台是为前台业务部门进行需求开发的团队,如卖家平台业务线中的开发团队。技术前 台的研发人员的核心价值体现在对业务逻辑的理解与实现上,他们响应业务方的具体需求,如系 统主题色、业务流程等功能。
  技术中台类似一个承上启下的中间层,对下封装复杂的实现逻辑,对上提供统一化的工具。 例如,如果一家公司有多个数据库,我们在开发时每次对数据库的操作都要编写多个面向不同数 据库的代码,而技术中台就将此封装起来,在前台业务中只用写业务逻辑,由技术中台来翻译成 实际存储数据的数据库与数据库操作语言。
  此外也将整个公司的技术能力与业务能力分离开来,让负责业务逻辑的这群人专心去完成业 务实现,将性能与调优等这些内容交由中台完成,从而大大降低前台技术开发的能力标准,实现 了"火力交替布置"的效果,大大节省了企业的人力资源成本。
  此时技术中台就像是一个大型的工具箱,里面放满了各式各样被打磨得相当锋利的技术工
  具,任一前台人员在开发中拿起来使用即可。大家平时听到的一些"高大上"的技术名词,如分布式 文件存储、分布式数据库、分布式缓存等这些中间件就是由技术中台所提供的。
  技术后台在本质上负责我们与物理世界沟通的中间环节,通过封装底层的物理机器操作而向 技术中台提供对应服务,他们负责让冷冰冰的机器运作起来去描绘五彩缤纷的互联网世界。
  还是以前面电商案例来看,如果结合案例中得到的业务中台,我们可以得到公司内技术团队 的体系架构,如图12-2所示。
  图12-2 电商技术团队的体系架构
  在任何项目的初期,系统中绝大多数功能都是非常简单的,往往在技术实现上只需要利用数 据库的原子操作CRUD[1] 就能满足绝大多数需求,因此整个系统的架构也是非常清晰的。但随着系 统迭代与业务的不断演化,整个系统中的业务逻辑变得越来越复杂,代码实现也变得越来越冗 杂,此时系统内模块彼此关联,数据交互频繁。
  例如,笔者之前见过在一个项目中查询会员的邀请人与自己的邀请信息居然要查询将近数十 张表。这样的复杂实现就导致项目成员没有一个人能说清楚所有模块的具体功能意图,造成在修 改一个功能时往往光回溯该功能最初的设计就需要很长时间,更不用说修改带来的不可预知的影 响。
  再看一个典型的反面案例,假设我们现在要实现一个电商中的订单模块,在该模块中我们要 实现订单信息查询、订单修改、订单支付、订单评价4个功能。
  而很多时候研发同学在编写实现代码时会为了省事就直接编写统一的订单服务去解决上面的 所有功能,在该服务中我们提供了订单查询接口、订单修改接口、订单支付接口、订单评价接 口,该服务实现示意图如图12-3所示。
  图12-3 订单服务实现示意图
  而这些接口同时访问我们整个服务统一对应的订单表,该表涵盖所有功能所需的字段:
  订单基本信息:订单的编号、订单产生时间、购买人、店铺名称、商品名称、商品数 量、商品规格等。
  订单状态信息:订单进行状态、支付状态、货物出库状态等。
  相关功能信息:订单评价信息、物流配送信息等。
  这样的实现方式在初次建设时看似比较简单,整个实现工作量也不是很大。但是当我们为下 一个功能去开发代码时就会发现非常大的问题,很可能我们有时候只想修改订单创建功能,结果 因为没有考虑到关联字段的错误而影响到了订单评价等功能,此时的结果就是我们在每次修改完 订单相关功能的时候,都需要对整个订单服务进行全链路的功能测试,而随着订单这个模块的功 能越来越庞大,我们的测试与维护时间会呈几何式增长。
  而这个问题的症结就是我们在创建服务时,该功能模块的整体架构不是很清晰,并没有将一 个服务对象拆分成多个边界清晰的模块,让一个独立单元只完成一件事情。
  "一件事由一个单元独立完成"的思想,其实就对应上了在前面中台规划设计中的能力,也是 能快速完成新项目研发的核心,各大业务线将自己的业务切割成若干的事件,在实现时直接调用 技术中台中早已封装好的服务单元即可。而随着技术中台的不断拓展,涵盖的能力越多,前台业
  务线能调用的服务越多,需要自主研发的地方就越少。
  而这一切就是技术中台要帮助我们最终实现的,通过若干个"魔法"帮我们实现这些中台的终极 目标"通用性"与"复用性" 。接下来我们就来看看究竟要如何施展这些"魔法"。1.3 如何搭建技术中台
  1.3.1 SOA
  在一般公司内部,技术中台的核心由标准的SOA[2] 搭建。而SOA直译过来是"面向服务的架 构"。
  让我们来看一个SOA的标准定义。ThoughtWorks 公司的技术专家、 内部系统架构师Sam Newman在《微服务设计》一书中是这样定义的:"SOA是一种设计方法,其中包含多个服务,而 服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作系统进程中。 服务之间通过网络调用,而非采用进程内调用的方式进行通信。"SOA组成关键模块如图12-4所 示。
  图12-4 S OA组成关键模块
  这一番话对于我们这些不搞技术的人来说确实是蛮难理解的。不过看完这段话之后,我们至 少对SOA有了这样的一个理解:SOA好像是将应用程序拆分为一个个的组件来实现的。那么这种架 构到底是怎么帮助我们将中台架构落实的呢?
  举一个大家在日常生活中应该都见到过的例子来理解一下。在前两年一些电商网站在类似"双 11"活动中都会出现一个很经典的现象,就是在刚到0点那一瞬间,由于我们都在那个点提交订单, 此时订单页面会显示"服务器异常,订单无法提交" ,这很显然是因为同时并发请求订单提交的人数 太多了。
  但是奇怪的是,这个时候如果我们去使用其他模块,如查看收藏夹、浏览商品,这些模块都 是正常的,这就意味着在整个电商系统中只有订单模块暂时无法使用。那么这种现象的背后其实 就是SOA在发挥作用,再说明白点就是部分模块的故障不会导致整个系统的崩溃,也就是说我 们不会因为无法提交订单而无法使用整个电商系统。
  所以通过这个案例,我们就明白了 SOA实际上就是将各个模块划分为独立单元去独立运
  行,从而保证整个系统的安全 。看到这里大家肯定会产生疑惑,既然我们可以像正常写一个应 用一样去写应用中的一个个模块,再把它们独立发布到服务器上去实现这个架构中所谓的模块化 独立运行,那么这样的架构又是如何使松散的各个模块之间建立关系呢?
  让我们再深入一点看看这种模块独立运行架构的实现方式,还是举一个通俗化案例来说明。
  我们以一个公司为例,在公司创立的时候,所有的人都听老板的指挥;老板叫你做什么,你 就去做什么。随着企业的发展,人数不断增多,业务不断膨胀。那么这个时候事情也越来越多 了。如果所有的事情都让老板一个人去指挥,那么效率会变得非常低下。这个时候企业要做的最 重要的事情就是成立部门,于是乎公司内一下冒出了测试部、研发部、运营部等部门,我们开始 让每个部门只做本部门职能内的事。
  但是部门制无法避免的一个现象就是需要跨部门的协作,但是作为某一个部门内的人员,你 要怎么知道找什么部门去完成什么事呢?此时我们就需要依赖一个行政部门去进行统一协调,每 一个新成立的部门都在行政部那里进行备案,如做什么事情的是哪些人员,然后公布出来让所有 的部门都知道,这个时候大家就可以在公共的地方查到对应的信息了。
  在这个案例中,我们能看到如下几个阶段。
  第一阶段: 在公司刚成立时老板统一指挥所有员工,实际上映射的就是我们在项目刚刚启动 的时候将所有的功能都写到一个服务中去,此时一旦任何一个功能出现了问题,整个系统都无法 正常运行。
  第二阶段: 随着业务的复杂化,演化出的各个部门实际上就类似于我们在架构中将一个个功 能独立打包成应用并独立上线,此时就能保证不会出现由于订单模块无法访问导致其他模块不能 正常使用的情况。
  第三阶段: 部门的增多让每个部门内的人很难去了解到整个公司的全貌,这里其实就像在一 个应用中随着功能的增多,当我们需要调用其他模块的服务时,例如在购物车模块调用登录验证 服务以判断用户是否处于登录状态,我们需要统一的注册中心告诉我们请求的地址与请求的参数 是什么,从而让我们完成应用内的通信。而每当有新服务变更线上地址,注册中心则统一通知所 有的接口,这就是服务发布。
  所以我们就能理解,SOA可以将分散在企业各个组的资源与代码进行统一整合与管理,并在组 内的各个模块发生变化时,使用专门的注册中心进行服务调度与通知。也正是服务调度的方式使 得原有各个系统以及新构建的系统有机结合成为一个整体。
  在前文中,我们也提到了业务中台,实际上业务中台就是将一个个的模块进行复用。那么从 技术实现来看:中台实际就是将每一个复用的模块作为一个独立的应用进行开发与上线,再 通过服务调度来实现复用。1.3.2 核心:微服务
  对微服务最简单的理解就是把系统按照不同的业务对象,根据提供的服务拆分成一个个大小 合适并且可以独立部署的模块,每个模块相互独立但又可以任意组合从而形成可复用的架构。
  比如,现在一个电商网站按照微服务的定义将会变为如下形式:
  如果我只想要随便看看,会用到商品服务、广告服务、搜索服务等。
  如果我想看我以前的订单,会用到登录服务、商品服务、订单服务。
  如果我想买东西,从登录这个网站到搜索挑选商品再到成功下单,调用了登录服务、 搜索服务、商品服务、购物车服务、订单服务、支付服务。
  模块已经被我们拆分清楚了,那么刚在定义里提到的模块可复用究竟是什么呢?
  再举个案例来看,比如现在我们要做一个多终端的员工管理系统,此时整个系统包含PC端、 安卓客户端、iOS客户端3部分。
  假设现在我要编写一个员工通讯录功能,这个功能需要从数据库中读取注册员工的相关信 息。如果我们不使用微服务去拆分,系统的实现模式是先在PC端中写一个查询方法,再从数据库 中查询员工信息,然后在网页上展示。而安卓客户端与iOS客户端也是一样的,需要分别写一个查
  询方法,去数据库中查询注册员工的数据,然后在App上显示。
  此时我们可以一眼看出来,这里有3个查询方法是高度相似的。这样的坏处就很明显了:3个 终端都有相似的业务代码,一旦我们的底层出现了变动,例如我们更换了数据库中的字段或者数 据库表名,此时这3处的业务代码都需要进行修改。
  所以这个时候我们就需要通过微服务的思想,将注册员工信息管理整体包装成一个独立的服 务。我们可以单独创建一个项目,将这个服务部署到一台独立的服务器上,这个服务自身通过一 个方法去统一访问数据库中的员工信息,此时再为这个服务编写可以提供返回数据的方法,只要 有其他服务去请求这个方法接口,就会返回通用数据类型 (json 、xml等) 的数据给它。
  也就是说,我们可以把该事件的所有操作封装到一套代码中,然后让有该事件需要的终端直 接访问这套代码,这套代码也就形成"服务" 。这样我们就完成了注册用户服务的开发。关于注册用 户的所有相关增、删、改、查的操作,这个服务都会提供具体的操作。
  这样一来,无论是PC端还是手机端都可以直接通过这个服务获得最新的员工数据,各条业务 线不需要再关心底层的变化。而当业务发展而需要对注册员工的信息进行维度升级时,只需要单 独修改这一服务。这里也就将原来客户端开发人员既要开发通讯录显示界面又要开发数据库操作 的这种杂糅式研发,成功地变为两组人员独立维护自己范围内的代码片段,用研发同学的专业术 语来说这就叫作"解耦"。
  同理,我们刚才在上面提到了电商中的其他模块,我们可以将其单独开发成服务并部署在单 独的服务器上。
  这里的案例都是在告诉我们要将系统进行不断的拆分,从而实现复杂问题单一化处理。那么 仅仅实现了微服务还不能称之为SOA,因为它缺少了服务治理环节。也就是说,当我们这样的微型 服务越来越多的时候,我们要想实现高效的各个服务之间的调用,就要依靠我们SOA中另一个重要 的部分——我们的注册中心去进行服务治理。
  什么是服务治理?当服务越来越多而调用方也越来越多的时候,这两者关系就会变得非常混
  乱,而且由于每个服务都是由一个独立的团队去进行维护迭代的,那么我们没有办法去实时搞清 楚所有的服务信息变化,因此我们需要统一的对这些关系进行管理的工具。
  再举一个例子来解释。比如我们有一个用户管理服务,一开始只有自营电商中心与卖家中心 在使用。而随着公司业务线的拓展,我们增加了供应商中心、审计中心等,它们都需要调用用户 管理服务。这个时候作为用户管理的提供方,我们只知道为多个模块提供了服务,却不知道具体 为谁提供了服务。
  这种单向联系的模式也就带来了一个隐患,当它自身发生变化的时候,如针对业务扩展后的 需求而增加了一个接口以提供将企业内部人员与企业外部人员进行区分管理的功能,此时我们就 无法很方便地通知到这些调用方。
  同时由于这些业务需求方只通过接口调用了用户管理服务,作为服务的提供方,我们也无法 对不同的调用方进行管理。最常见的问题:在我们的计算资源有限的情况下,要优先为哪一个需 求方提供用户管理服务呢?
  因此我们需要一个类似于注册中心的结构,在这里由调用方主动上报调用的申请人与相关信
  息,再由服务方主动上报变更信息。通过此"服务中介" ,我们能自动化管理企业内部资源,实现资 源协调。
  再举个极端的例子,如果我们不使用SOA的方式进行实现,当我们后台所发布的服务有一天因 为服务器出现了故障而必须更换服务器和域名时,由于我们各个服务器的域名都是直接在App代码
  中"写死"的,我们要进行替换就需要把每一个终端代码打开去挨个进行服务器地址替换。
  而替换完毕之后,我们还需要重新将App端的应用进行打包发布,再提交应用商店审核,以让 用户去更新,这中间平白增加了非常多的流程和环节。如果任何一个环节出了问题,如应用商店 审核时间长、用户更新失败等,而由于之前的服务已经访问不到了,这时候用户面对的就只能是 一个存在故障的应用。在这一段完全不可控的空窗期内,整个业务无疑蒙受巨大的损失。所以我 们不难看到,SOA为我们的整个系统服务带来的帮助是巨大的。
  可以说技术中台在整个企业的软件系统中是一个举足轻重的环节,承载着整个中台的思想的 落地与实现,而能将这一切"魔法"变为现实的核心就是我们的SOA。1.3.3 技术中台的并入
  现在我们就可以将技术中台引入并同步更新整个公司的技术架构了,新的技术架构总体上分 为5个部分,即展现层、接口层、服务层、数据运营和外挂系统,如图12-5所示。
  我来总结下这个新的系统架构:
  最上层是展现层,这里是我们的各条前台业务线,主要为移动端和PC端,由接口层直 接访问技术中台。
  中间层是接口层,负责提供统一的接口体系以完成展现层与服务层间的数据交互。
  下层是服务层,包含3个部分,技术前台是对业务中台的技术实现,技术中台提供底层 服务,技术后台提供直接访问底层硬件相关管理。
  左侧是外挂系统,负责提供不同场景的系统与我们的系统的数据对接服务。
  右侧是数据运营,负责提供数据分析服务,也就是我们的数据中台的技术实现。
  图12-5 中台加入后的IT系统架构
  至此我们已经成功地将技术中台嵌入原来公司的系统群了,伴随着技术中台的篇章结束,至 此我们整个中台方案就已经全部介绍完毕了。总结
  知识点1:搭建技术中台
  搭建技术中台在本质上就是引入SOA来重塑公司的技术体系。
  SOA=微服务+注册中心
  知识点2:微服务
  微服务将业务拆分成独立的模块,让每个模块可以独立上线运行。
  知识点3:注册中心
  微服务统一管理微服务的模块,向各条业务线实时提供微服务模块的运行信息与地址,以便 其他业务方可以动态获知服务的更新。

有套位置不错的凶宅,低于市场价出,可以买吗?有投资价值吗?有套位置不错旳凶宅,低于市场价格出售,有较髙的投资价值,但是,因为是凶宅,你担心买到手又于你不好。而又因售价低,加之地理位置优越,不买又十分不舍。这件事让你十分纠结,左右为难,你拿一线白酒宣布提价,股价却跌了!酒鬼酒古井贡酒跌7,五粮液跌5茅台跌4!白酒股年末怎么走?近期涨的太多了,要回调了,谨慎,见好就收,反复做波段,你会很爽机智白酒将进入中长期熊市。不一定跌多少,但是时间会比较长。这充分说明,利好出尽是利空。前期一些白酒调价前,白酒股一直上DNF普雷新卡片最强右槽宝珠价值8亿,平民需要换吗?新的团本带来新的武器新的装备,同时呢,也带来了一系列的新的附魔卡片,对于玩家们来说肯定还是乐见其成的,毕竟现在主流传说卡片都在漩涡,以后多了一个普雷出产,价格肯定也会相应降低嘛。左经典游戏仙剑奇侠传紫金葫芦要如何才能发挥最大的价值呢?仙剑奇侠传剧情发展到扬州,玩家打败女飞贼就会在蛤蟆山附近发现被毒杀的富商尸体。说实话,我们这一路走过来全都是蛤蟆精,普通人想要从这里走过似乎非常困难吧!这时候玩家在他身上搜索得到了股票如何抄底?抄底是每个投资者的期望,因此抄底话题层出不穷。在讲解抄底的时候,首先要纠正一个大家平时经常犯的错误,底不是某一个点,而是一个区域,只要买在了底部区域,都可以称之为抄底。这里面牵涉到助听器牌子能排上名的有哪些?助听器品牌分别是瑞士峰力,丹麦奥迪康,丹麦瑞声达,丹麦唯听,美国斯达克。建议到专业的听力中心根据自己听力选配适合的助听器。助听器牌子能排上名的,主要是一些世界一线品牌,如瑞士峰力,河北名酒有什么?感谢邀请!说起中国名酒,真的不得不提我大河北,衡水老白干保定刘伶醉邯郸丛台酒在全国都是响当当的名号!可以说驰名中外,美名远扬!河北是美酒的故乡,具体有哪些名酒产自我省呢,听河青君给能不能评价一下宗申阿普利亚srmax250?这车用来摩旅怎么样?专业解析摩托车故障,精准推荐所需车型。大家好,我是骑士分享欢迎您的关注!阿普利亚SRMAX250是本届摩博会上新亮相的一款车型,这款车由国内知名摩托车厂商宗申代工,它的整体外观和阿游戏上瘾之后有什么后遗症?大家好,这里是正经游戏,我是正经小弟。玩家沉迷一款游戏后往往会情不自禁在现实里模仿游戏的举动,前段时间就有个吃鸡狂热玩家在飞机上问空姐过不过P城?可以不可以跳伞?哪里有98k?此话过夜的白开水还可以喝吗?过夜的白开水还可以喝吗?关于这个问题,以下是我自己的看法和回答,希望对你有一定的帮助。我们大家都知道水是我们的生命之源,水在我们的日常生活中,有着无比重要的作用,我们都离不开水。我6张信用卡,9家网贷,总计债务86万,4千块的工资该怎么办?如果你工资只有4000,债务86万,你提问题就是想找方法解决。你先想一想,你这个钱是怎么欠下的,你就不能用类似的办法去挣回来,比如你赌博输掉了?玩期货股票亏掉了?投资做买卖亏掉了?
三年半欠缴员工社保超4000万,营收却160多亿,喊着是兄弟就来砍我的游戏公司要上市了?本文来源时代周报作者赵佳琪2022年1月17日,贪玩游戏宣布升级为中旭未来,入局元宇宙。彼时,有坊间传闻称,贪玩游戏即将进入资本市场。10个月后的11月25日,中旭未来正式向港交所9岁猕猴被植入大脑芯片,可玩电子游戏,马斯克承诺自己也要搞据每日星报12月1日消息,古怪的现世界首富埃隆马斯克宣布他的神经链(Neuralink)大脑芯片已经准备好投入使用他非常自信,发誓要在自己的脑袋里植入一个来进行演示。这项令人兴奋的12月PS会免游戏大小质量效应传奇版85GB左右今日(12月1日),PS游戏数据博主PlaystationSize分享了12月份PlayStation会免游戏质量效应传奇版生化变种和DivineKnockout的各版本的容量大小黑色卡牌游戏邪恶冥刻今日在NS平台发售解密策略战棋类游戏邪恶冥刻今日正式在Switch平台发售,游戏日服eshop售价税后2310日元,支持中文。本作是一部墨黑色卡片主题的冒险史诗,融合了Roguelike牌组构建密室伞顶盖遗址研究揭示中国南方晚更新世石器技术演化的区域性和复杂性现代人起源演化及全球性扩散,一直是学界关注的重要科学问题。近年来,随着多学科交叉研究兴起,科研人员在研究现代人扩散的具体机制与过程,尤其是现代人与不同区域本土人群之间的相互关系方面11种最令人难以置信的史前动物在史前几千年到几百万年的时间里,有许多巨大的生物在黎明时分潜伏在地球上,直到气候变化或早期人类加速了它们的灭亡。史前动物曾经漫游并统治着地球。其中一些,如巨型树懒或长毛犀牛,一般都谷歌发布特别迷你游戏致敬世界卡带游戏机之父82岁诞辰现代游戏机的启蒙级别教父,世界首台卡带游戏机开发者杰瑞罗森可能知道的人不多,谷歌为纪念这位大师诞辰82周年,特别推出了迷你游戏,含有多种启蒙级经典游戏,只要登陆谷歌首页即可游玩。杰江苏省盐城市最新获批的建设工程项目清单来了,含具体投资额2022年第四季度盐城市重大工程和重点项目48个,总投资190。0400亿元,年度计划投资190。0400亿元(其中20个项目列为省重大工程和重点项目,总投资89。0907亿元,年小孩要先学做人,再学知识在成人的世界里,很多人都明白一个道理先学做人,再学做事。但是可惜的是,极少数人明白,在小孩的世界里也应该是先学做人,再学知识。成人的学做人是文明礼貌惜福感恩吃苦耐劳拼搏上进等等小孩正确使用儿童安全座椅和佩戴安全头盔事关儿童乘车安全专家呼吁加强道路安全立法道路交通伤害已成为我国14岁以下儿童的第二位伤害死因,而伴随着儿童出行方式中乘坐私家车和乘坐电动自行车的比例逐渐上升,儿童安全座椅使用与电动自行车头盔佩戴成为影响儿童道路交通安全的长期吸烟却又坚持喝茶的人,后来都怎么样了?看完又涨知识了对于一些长期吸烟的人来说,吸烟已经成了一种生活习惯,而且很多人也在加入到吸烟的队伍当中,特别是一些未成年人,由于好奇心特别的强,最终想要尝试一下,但是却染上了烟瘾。根据数据显示,全