编 辑:彭文华

来 源:大数据架构师(ID:bigdata_arch)

彭友们好,我是你的老彭友。因公众号迁移,老文章都搜索不到了。这是之前的原创文章,现在重新再发一遍,看过的彭友直接略过就行哈~~

中台到底是什么鬼?

很多人写类似的文章,想告诉大家什么是“中台”。反正我看一篇扔一篇,原因是没有一篇能够说清楚。这也不怪谁,原因其实是一个“概念”,其实是所有人的想象的合集。

从技术角度上来说,中台是一种技术架构方法;从组织角度上来说,中台也是一种组织架构方法。我只能看清中台在这两个角度上的投影,都与架构相关,唯独与“万能”无关。今天我就从技术架构的角度帮大家捋一捋中台是什么鬼。

信息系统架构

软件开发技术的发展与硬件不一样。冯诺依曼早在1945年就提出了“冯·诺依曼体系结构”的硬件架构,几十年间基本没有任何变化。

但是软件开发的架构,却在不断的进化。从最早的单体架构到最新的云原生架构,都是为了应对不断复杂的需求和爆发式增长的数据。

OK,Let's Go!

单体架构

在当年单机时代,所有的软件架构都是单体架构。当时流行的架构区分为C/S架构和B/S架构。C/S指的是客户端(那时叫客户机)和服务端(那时叫服务器),是桌面程序。B/S指的是浏览器和服务器。

当时是不叫单体架构的,因为还没区分出其他架构。当时最典型的架构框架叫做MVC,即medel(代表数据)、view(代表展示)、controller(代表业务逻辑处理),如下图所示:

架构敏感的同学会立刻生出一堆问题:

  • 怎么支持超多超复杂的业务啊?

  • 扩展性怎么做?

  • 怎么解决复用的问题?

  • 耦合太紧,一旦出问题就全部完蛋,怎么办?

是的,但是不用担心,当时的需求并没有那么复杂,基本上从业务逻辑到数据访问到返回结果一路写下来也就搞定了。

所以单体架构的优点非常明显:

  • 开发简单

  • 测试简单

  • 部署简单

分层架构

当业务逻辑复杂到一定程度,单体架构就没法支撑了,上述问题也就逐一暴露出来。当时的程序员们就想了各种办法,核心就是“拆”。那么,有几种拆的方式呢?

tips:架构演进的过程中,“拆”和“合”基本就是所有的核心方法论。

是的,有两种拆分方法,横向和纵向。横向把业务逻辑拆分为网关层、业务逻辑层和数据访问层,这就是“水平分层架构”。所谓的“前后端分离”,也属于水平分层的进一步拆分。

纵向按照业务进行拆分,每个模块提供一个单独的服务,这就是“垂直分层架构”,也就是大名鼎鼎的“面向服务架构”--SOA。

拆完之后,该抽象抽象,该解耦解耦,各自对外提供相应服务,单体结构遇到的复杂业务、复用、一错全崩等问题都迎刃而解了。

微服务架构

但是,当需求提的越来越多,业务变得越来越复杂的时候,我们发现,无论是水平拆分还是垂直拆分,都无法再提升我们的开发效率,一些公共耦合会导致系统的复杂度提升,程序包慢慢变成祖传屎山。这时候又要祭出架构的法宝“拆”字诀。

我们把每一个业务的每一层单独拆成一个小模块,各自改各自的东西,不需要再去公共组件中去修改了。在进行进一步解耦之后,每个模块的复杂度降低了,模块之间的耦合度也降低了。由于有多个DAO,sql执行的效率也提升了。

同时,为了应对高吞吐量和海量请求,微服务还对静态资源和代理进行进一步拆解,引入了MQ将同步请求解耦为异步请求,加入RPC框架,进行远程服务调用等等。

这时候就会有人问了,这得拆多少个微服务?这对管理简直是一个灾难!各管一滩事,谁去统一管控?所以微服务架构还有一个事情是必须做的,就是增加管理组件。

这些组件的核心作用就是对各种微服务进行统一管控,不仅能管理微服务的全生命周期,还能在某个微服务被流量撑爆的时候进行各种丢车保帅的操作,在长长的链路中,可以不断向下跟踪,发现问题的根源。

服务网格架构

是的,您发现了,解决一个问题必然会带来其他问题。微服务做到了进一步解耦,解决了很多分层架构的很多问题,但是遇到了以下挑战:

  • 每个微服务可能会用不同语言的不同版本

  • 有太多的基础框架和工具需要学习

  • 所有的client、server都需要维护n个版本

  • 上下游需要同步升级,否则你懂的

解决办法呢?能不能进一步解耦?有人说了,都解耦到这种程度了,再解,那得变成啥德行啊?

还真可以。

这个时候,我们的整个微服务体系,就变成了这个网格的样子,所以叫服务网格架构。

这个架构的好处就显而易见了,所有的通信都让代理实现,服务就只做自己的事情就好了。所有的跨语言问题、各个微服务版本的问题、上下游的问题全部解决了。

中台架构

懒婆娘的裹脚布,终于一层层的解开到最后,终于该说中台架构了。以服务网格架构为分界线,前面的架构优化思路只有一个,就是“拆”。到服务网格,就没法再拆下去了,那么还有更好的模式吗?既然提到了中台,那么这自然就是解决之道。

Supercell的故事就不用再重复了。这里必须八卦一下阿里和腾讯,阿里向Supercell学习了中台方法论,并把它进化成超级武器;腾讯把Supercell收购了,却只是用来继续做游戏。从组织的角度上来说,阿里完胜。

每个微服务都是个性化的,在单一业务线中,这就是最优的架构。但是业务线一多,或者上下游系统太多,每条业务线都在重复造轮子,存在大量资源浪费的情况;不同业务线之间的数据也是孤立的,无法打通。那该怎么办呢?

是的,信息系统的核心就是抽象,我们在业务线之上,再抽象一层就完了。所以中台架构的核心思想不再是“拆”了,而是“合”。

各自的微服务中必然就有共同的服务,我们可以把这些共同的服务合并、标准化、统一化,封装后对外提供服务。所以就会出现各种中心,这些中心的组合,就是中台:

在业务逻辑部分做这种抽象整合重组,就是业务中台;

在数据部分做这种抽象整合重组,就是数据中台;

在算法部分做这种抽象整合重组,就是算法中台;

在技术底层做这种抽象整合重组,就是技术中台。

而想要实现上述任何一种中台,必须要先做组织的抽象整合重组,这就是组织中台。这也说明了,任何一个中台并不是孤立的,没有组织中台,妄想单独做其中一个中台,把中台当做银弹,那么必死无疑。

一口气写这么多,累死我了.......

4个小时的写作,能换你一杯咖啡不?盖饭也行啊!实在不行,矿泉水也可以的!

如果对您有用,请帮忙转发,多帮助一位需要的彭友。我替他们感谢您!

排版 | 老彭

审校 | 老彭  主编 | 老彭

老文新看:一口气说透中台--给你架构师的视角相关推荐

  1. 老文新读 | 大数据于国内影视行业的意义及应用

    编者注:本文由作者4年前发表于知乎专栏,前两天编者偶然读到,觉得很有意思,于是转过来与大家分享.原文标题:评析:触不到的大数据 作者 | 王义之,凡影合伙人 最近这几年,我们可以听到很多关于大数据在影 ...

  2. 郭东白:《从中台技术谈架构师的独立思考能力》

    文章摘自与数据同行     作者:郭东白 个人读后总结了其中提到的主要观点,供大家参考: 1.中台是个完全正确的方向: 2.中台的挑战:(1)创新的遏制:有说法说,一个业务靠拖中台的拉拽就能编排出来了 ...

  3. 不停歇的Java即将发布JDK16新特性速览及从菜鸟到架构师[图]

    一.不停歇的Java即将发布JDK16新特性速览 当开发者深陷Java8版本之际,这边下一版本Java16有了最新的消息,与Java15一样,作为短期版本,Oracle仅提供6个月的支持. 根据发布计 ...

  4. 搞懂什么是中台——来自阿里巴巴架构师总结

    一切业务数据化,一切数据业务化. "中台"概念这几年非常火,特别是阿里.腾讯.百度.京东等互联网公司最近频繁的基于中台调整组织架构,把"中台"的热度又上升到另一 ...

  5. 【新网数码】急聘研发总监/架构师

    北京新网数码信息技术有限公司(www.xinnet.com 新网)成立于1993年,中国数码集团下属子公司,是国内顶级的互联网基础应用服务提供商.业务范围包括域名注册服务.主机服务.电子邮箱服务.公有 ...

  6. 用 Java Servlet 实现文件上载(老文新发)

    作者按: ****************************************************************** 近日上网冲浪,发现还有人在问"B/S 中如何上 ...

  7. BAT架构师技术文档:Redis+Nginx+Dubbo精选+面试题+架构师精选视频(免费领)

    最近花了很长的时间去搜罗整理Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档.今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题 ...

  8. Nervos 的架构师的视角看Nervos的过去、现在和未来

    Nervos是什么 Nervos 是一个比较有想法的项目.它是一个公链,但是当大部分公链项目在做 PoS 的时候,我们在做 PoW:大部分人在走账户模型路线的时候,我们在做 UTXO:大部分链在做 S ...

  9. 阿里巴巴架构师:十问业务中台和我的答案

    文 |王思轩 来源 | 阿里巴巴中间件(ID: Aliware_2018) 一切业务数据化,一切数据业务化. "中台"概念这几年非常火,特别是阿里.腾讯.百度.京东等互联网公司最近 ...

最新文章

  1. 年终收藏!吴恩达盘点2020年度AI热门事件
  2. Android通用简洁的下载器
  3. mysql 5.7.11 my.ini,mysql5.7以上版本配置my.ini的详细步骤
  4. exec 和 call 用法详解
  5. 【转】2.3【MySQL】运行原理(三)InnoDB 逻辑存储结构
  6. Makefile赋值符号的使用——= := ?= +=
  7. GDI+图像处理前言
  8. 读《Javascript高级程序设计》中的javascript事件处理程序(事件侦听器)心得
  9. 9型转x型 cobol_9家企业入列省首批试点 建设培育产教融合型企业
  10. 每天一个linux命令(30):cal 命令
  11. (机器人学导论--运动学)(三)DH表达法顺向运动学
  12. matlab 自定义直方图匹配_[转载]Matlab 直方图均衡化和直方图匹配
  13. 安卓电子书格式_这几种电子书格式的关系与区别,资深Kindler有必要了解了解 !...
  14. 【音乐】火速收藏!KTV新歌 +老歌10000首+点歌系统支持手机点歌1.6t音乐文件
  15. 使用JS监听键盘按下事件
  16. 月薪过万的运维工程师都要会干什么
  17. 用好“亲和图”带你拨开云雾见月明
  18. 局域网本地连接计算机,Windows XP下让电脑通过无线网卡共享本地连接实现局域网共享宽带上网...
  19. Sublime 使用总结
  20. 打破数字化盐碱地:传统型企业如何踏稳数字化转型第一步

热门文章

  1. 车削加工编程一般包含X和Z坐标运动及绕Z轴旋转的转角坐标
  2. 一个纯java写成的贪吃蛇下游戏(《利用一维数组》附完全版源码和素材图片)
  3. 计算机上画正比例函数,几何画板如何画正比例函数图像
  4. 安卓h5混合开发照片上传的问题
  5. SSI-DDI:基于子结构相互作用的药物-药物反应预测
  6. 超级详细flutter开发环境搭建
  7. 好压软件测试大乐,国产压缩软件好压2.0 Beta完全评测
  8. Python使用图片作为像素生成像素画
  9. 软键盘弹出时popwindow_PopupWindow与软键盘冲突
  10. 常用ASCII码详细对照表 (0—255)