一口气说透中台--给你架构师的视角

简介: 一口气说透中台--给你架构师的视角

中台到底是什么鬼?

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

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

信息系统架构

软件开发技术的发展与硬件不一样。冯诺依曼早在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收购了,却只是用来继续做游戏。从组织的角度上来说,阿里完胜。


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

是的,信息系统的核心就是抽象,我们在业务线之上,再抽象一层就完了。所以中台架构的核心思想不再是“拆”了,而是“合”。各自的微服务中必然就有共同的服务,我们可以把这些共同的服务合并、标准化、统一化,封装后对外提供服务。所以就会出现各种中心,这些中心的组合,就是中台:

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

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

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

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

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


相关文章
|
6月前
|
设计模式 编译器 Go
掌握Go类型内嵌:设计模式与架构的新视角2
掌握Go类型内嵌:设计模式与架构的新视角
33 0
|
6月前
|
设计模式 Cloud Native JavaScript
掌握Go类型内嵌:设计模式与架构的新视角1
掌握Go类型内嵌:设计模式与架构的新视角
43 0
|
8月前
|
存储 敏捷开发 缓存
中台架构介绍和应用价值
中台架构介绍和应用价值
341 0
|
5天前
|
API 持续交付 开发者
构建高效微服务架构:后端开发的新视角
【5月更文挑战第8天】 随着现代软件开发的演变,微服务架构已经成为了企业追求敏捷、可扩展和灵活部署的重要解决方案。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术栈选择以及持续集成与部署的最佳实践。我们还将讨论微服务带来的挑战,如数据一致性、服务发现和网络延迟,并提出相应的解决策略。通过本文,后端开发者将获得构建和维护微服务系统所需的深度知识,并了解如何在不断变化的技术环境中保持系统的健壮性和可维护性。
43 8
|
5天前
|
消息中间件 Java 持续交付
构建高效微服务架构:后端开发的新视角
【5月更文挑战第15天】在现代软件开发的浪潮中,微服务架构已成为推动技术创新和服务灵活性的关键因素。本文将探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术栈选择以及持续集成与部署的最佳实践。通过分析微服务的优势和挑战,我们将为后端开发人员提供一个全面的指导,帮助他们在构建可扩展、容错且易于维护的系统时做出明智的决策。
|
5天前
|
负载均衡 JavaScript Java
构建高效微服务架构:后端开发的新视角
【5月更文挑战第13天】在现代软件开发中,微服务架构已经成为一种流行趋势。它通过将应用程序拆分为一组小型、独立的服务来提高可扩展性、弹性和可维护性。本文将探讨如何构建一个高效的微服务架构,包括选择合适的技术栈、设计良好的服务接口、确保数据一致性以及实现有效的服务发现和负载均衡。
|
5天前
|
人工智能 安全 大数据
SDN(软件定义网络)——重塑网络架构的新视角
SDN(软件定义网络)是网络架构革新的关键,通过分离控制与数据平面,实现网络的灵活、高效管理。未来,SDN将更广泛应用于各行业,与云计算、大数据、AI融合,推动数字化转型。开放与标准化的趋势将促进SDN生态发展,提供以业务需求为导向、智能化自动化管理及增强网络安全的新视角。SDN将在更多领域扮演重要角色,支持网络技术的创新与进步。
|
5天前
|
监控 数据管理 API
构建高效微服务架构:后端开发的新视角
【4月更文挑战第12天】在当今快速演变的技术景观中,微服务架构已成为实现灵活、可扩展和容错性高的企业级应用的关键。本文深入探讨了构建高效微服务架构的先进策略和技术实践,旨在为后端开发者提供一种创新的视角来设计和部署可维护且性能卓越的分布式系统。通过分析微服务设计原则、容器化技术、API网关以及持续集成与持续部署(CI/CD)流程,文章揭示了如何优化服务拆分、数据管理、安全性和监控机制,以支撑动态的业务需求和不断变化的市场环境。
|
5天前
|
消息中间件 安全 数据管理
构建高效微服务架构:后端开发的新视角
【4月更文挑战第12天】在现代软件开发领域,微服务架构已成为一种主流设计模式,它通过将应用程序拆分为一系列小型、独立的服务来提高系统的可维护性、扩展性和技术灵活性。本文深入探讨了构建高效微服务架构的关键要素,包括服务划分原则、通信机制、数据管理以及安全性考量。我们将从后端开发的角度出发,分析如何利用最新的技术栈和最佳实践来构建一个既健壮又灵活的微服务系统。
20 2
|
5天前
|
消息中间件 架构师 NoSQL
以架构师的视角,深入剖析如何设计订单超时自动取消的功能
我们在美团 APP 下单,假如没有立即支付,进入订单详情会显示倒计时,如果超过支付时间,订单就会被自动取消。 这篇文章,笔者想以架构师的视角,深入剖析如何设计订单超时自动取消的功能。
以架构师的视角,深入剖析如何设计订单超时自动取消的功能