云原生技术中台:从分布式到云平台设计

978-7-115-59623-9
作者: 陈涛 索海燕
译者:
编辑: 刘雅思

图书目录:

详情

本书清晰、完整地展现云平台技术架构相关的知识,包含3个部分:第一部分介绍服务扩容的发展历程,概述分布式架构与中台架构。第二部分分析传统分布式架构的核心技术,围绕中心化协同工作机制和分布式服务间的通信问题,介绍ZooKeeper、Netty、Dubbo等分布式技术的原理和实战案例。第三部分分析云平台技术组件,主要包括构建PaaS平台所用到的核心技术组件。这一部分首先分析Docker容器技术以及Kubernetes编排引擎的搭建和基础原理,然后介绍指标采集功能、告警功能以及日志管理框架,最后对微服务治理框架Istio在云平台的应用场景进行展望。 本书结合算法与源码展示云原生应用全景,阐述开源技术,能够帮助读者搭建私有云平台,适合高校计算机及相关专业学生、容器云初学者,以及对Docker有一定了解并希望深入研究和探索云技术的工程师阅读。

图书摘要

版权信息

书名:云原生技术中台:从分布式到云平台设计

ISBN:978-7-115-59623-9

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    陈 涛 索海燕

责任编辑 刘雅思

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e59623”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


本书清晰、完整地展现云平台技术架构相关的知识,包含3个部分:第一部分介绍服务扩容的发展历程,概述分布式架构与中台架构。第二部分分析传统分布式架构的核心技术,围绕中心化协同工作机制和分布式服务间的通信问题,介绍ZooKeeper、Netty、Dubbo等分布式技术的原理和实战案例。第三部分分析云平台技术组件,主要包括构建PaaS平台所用到的核心技术组件。这一部分首先分析Docker容器技术以及Kubernetes编排引擎的搭建和基础原理,然后介绍指标采集功能、告警功能以及日志管理框架,最后对微服务治理框架Istio在云平台的应用场景进行展望。

本书结合算法与源码展示云原生应用全景,阐述开源技术,能够帮助读者搭建私有云平台,适合高校计算机及相关专业学生、容器云初学者,以及对Docker有一定了解并希望深入研究和探索云技术的工程师阅读。


早期的互联网产品用户量少、并发量低、数据量小,系统服务只需要部署单个服务器即可满足吞吐量需求。随着用户规模和业务量的不断上涨,单个应用服务器会到达性能瓶颈,分布式系统帮助企业用多台廉价机器完成了复杂计算或存储任务。

近年来,随着微服务技术、容器集群管理技术和工具的不断发展,各大互联网公司纷纷效仿“大中台战略”,建设适应自家组织架构的“云平台”,以应对市场变化,灵活、快速地做出策略调整。架构演进的主要推动因素就是互联网产品面临的庞大用户量问题。总体来说,云原生是分布式架构的扩展。

本书系统介绍云原生技术,从安装入门到应用部署,展示云原生应用全景,采用大量的源码及图表进行分析,让读者知其然并知其所以然,达到深度学习和理解技术组件的目标。本书“零基础”起步,深入浅出,抽丝剥茧,清晰透彻地阐述复杂的知识,帮助读者建立云原生技术知识体系。

本书的技术选型主要源自Apache软件基金会和云原生计算基金会(Cloud Native Computing Foundation,CNCF)的核心项目,这两个基金会主持的技术社区比较成熟,技术的更新频率高且应用广泛。

本书首先介绍分布式架构设计,阐述分布式中心化协同框架、微服务通信框架的原理与应用。然后在分布式架构的基础上,结合企业大中台战略,进一步分析云平台常用的核心技术模块,包括容器编排、运维监控告警、服务治理等,从而清晰、完整地展现云平台技术架构。

本书共分为3个部分,包含8章,下面详细介绍本书的组成结构。

第一部分(第1章)主要介绍计算机服务扩容的发展历程。早期的互联网信息系统通常为单节点架构,随着用户数量的增多,系统逐渐发展为分布式架构。

第二部分(第2章和第3章)主要介绍传统分布式架构的核心技术。在分布式领域,围绕中心化协同工作机制,产生了一批优秀的分布式开源框架,分布式中心化集群框架Apache ZooKeeper(简称ZooKeeper)是其中的典型代表。

第2章介绍ZooKeeper分布式协同技术的原理与应用。ZooKeeper实现了中心化的管理方式,提供了注册中心和配置中心,解决了分布式系统需要从一个中心地址获取配置的问题。当然仅有ZooKeeper是不够的,分布式架构还需要解决高并发通信问题。

第3章介绍Netty与Apache Dubbo(简称Dubbo)技术的原理与应用。Netty是一个基于Java NIO类库的异步通信框架,可以实现高并发通信,并维持大规模的TCP通信连接。它具有异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性等特点。Netty框架结合RPC框架Dubbo,可实现高可用的服务器调用、负载均衡和自定义路由策略功能。

第二部分介绍的分布式架构设计图如图1所示。

图1 分布式架构设计图

图1展示了分布式架构下服务消费者(简称消费者)调用服务提供者(简称提供者)的流程。

(1)提供者通过Dubbo发起服务注册请求。提供者业务线程在启动过程中通过通信框架Netty发起服务注册请求。

(2)消费者通过Dubbo获取提供者信息。Dubbo在启动时会从ZooKeeper拉取提供者信息并缓存在本地。这些提供者信息包括提供者实例IP地址、版本号、接口信息、序列化算法、参数校验规则、返回值类型等。

(3)消费者业务线程发起请求。消费者通过业务线程向Dubbo发起请求。这个请求可以是同步的,也可以是异步的。如果该请求是同步的,那么业务线程将会被阻塞挂起,由Dubbo统一管理请求。Dubbo遍历本地缓存的提供者列表,协调负载均衡策略和容错策略,筛选出符合条件的提供者实例,最终通过通信框架Netty发出该请求。

(4)Netty处理通信请求。通信框架Netty负责发送和接收实际请求,消费者和提供者是直接建立连接的,整个请求报文不会再通过注册中心代理发送。

(5)Dubbo调用提供者方法。Dubbo在接收到Netty的请求报文时,先序列化和组装参数,然后调用提供者业务线程的具体方法。之后Dubbo拿到提供者方法的调用结果时,会再次序列化返回值,最后传递给通信框架Netty,由Netty负责回传给消费者。

第三部分(第4章至第8章)的重点是构建PaaS层。这一部分首先会分析平台底座,主要阐述如何将IaaS层提供的相对分散的虚拟机组成一个集群环境,涉及的主要技术包括Docker容器和Kubernetes编排引擎。

第4章介绍Docker容器技术的原理与应用。Docker是目前最流行的Linux容器解决方案之一,它是基于Go语言开发的开源应用容器技术,集成了开发、打包、发布应用等功能,是PaaS中台的基石。

第5章介绍Kubernetes编排引擎的原理与应用。Kubernetes是开源的容器编排(orchestration)系统,简称K8s,是用于自动部署、扩展和管理容器化应用程序的开源系统。它将应用程序的容器组合成逻辑单元,以便于管理和服务发现。

大中台战略背景下涌现了很多优秀的PaaS中台架构设计,本书给出的是一种通用的PaaS中台架构设计,它融合了运维层的集群日志管理和指标监控告警功能,被统称为云平台架构设计。云平台架构设计图如图2所示。

图2 云平台架构设计图

在图2中,云平台架构设计围绕着PaaS层展开,PaaS层需要依赖IaaS层提供的各种支持,包括云主机、云存储、云网络、云安全。IaaS层最终把不同规格的硬件组装或拆分,提供统一规格的虚拟机给PaaS层使用。PaaS层为SaaS层提供服务。

PaaS层、SaaS层和IaaS层都会用到运维层,运维层提供日志管理、指标监控与告警等功能。这些功能也是PaaS层的基本能力。本书参考Kubernetes开源社区,挑选了两个经典的框架来阐述运维层的实现方式。

第6章介绍Prometheus框架指标监控与告警的原理与应用,该框架支持通过拉取被监控目标上的HTTP端点来收集指标,还支持自定义告警功能和可视化查询界面。

第7章介绍Kubernetes集群日志管理的功能,重点分析Elastic Stack框架,该框架依赖分布式搜索引擎,实现了日志采集和可视化查询界面。

如果说PaaS层的基本功能是为微服务提供运行环境,那么服务治理能力则是它的加分项。第8章对微服务治理框架Istio在云平台的应用场景进行展望。Istio是由谷歌、IBM与Lyft共同开发的开源项目。Istio是服务网格,能够为微服务提供流量管理机制,同时提供其他增值功能,包括安全性、监控、路由、连接管理与策略等。

读者可以依据本书介绍的技术,快速搭建分布式架构环境或云平台架构环境,为企业微服务的稳定运行保驾护航。

本书适合对Docker有一定了解并希望探索和深入研究云技术的工程师阅读。本书注重剖析技术原理,采用大量的源码及图表进行分析,让读者知其然并知其所以然,达到深度学习和理解技术组件的目标。

本书适合容器云初学者阅读。本书简明、清晰地讲解云平台核心组件技术的基本知识,同时在讲解过程中穿插实战演练,使读者对云平台技术有较为全面的理解,是一本快速入门容器云的图书。

本书也适合计算机等相关专业学生阅读,可帮助高校学生提升云原生技能。当前互联网企业大多处于应用服务规模化发展阶段,企业在招聘时普遍会考察应聘者开发分布式或云平台微服务的能力,因此应聘者需要对云平台有初步的认识和基本的实践能力。


陈涛,毕业于浙江大学(软件工程硕士)和浙江师范大学(软件工程硕士),现就职于毕马威信息技术服务(南京)有限公司,主要从事与Docker、Kubernetes相关的研究工作。拥有丰富的系统架构设计经验,曾参与多个大型分布式网站的架构设计与开发工作,指导过多个互联网系统的微服务改造工作,擅长Java多线程、分布式框架和PaaS平台设计,对云原生有深入的研究。曾就职于华为南京研究所,从事华为云研究工作,擅长运营商私有云服务治理解决方案,其负责的华为微服务引擎CSE(Cloud Service Engine)项目已在全球广泛部署。此外,还曾就职于南京焦点科技股份有限公司,从事分布式即时通信系统的设计和开发工作。

索海燕,毕业于苏州大学(通信与信息工程硕士),现就职于江苏省人民医院信息处,从事医疗信息系统的建设和管理工作,拥有丰富的系统建设和运维管理经验。重点关注云计算、大数据、人工智能、区块链等技术领域,对云计算、网络技术、网络存储有深刻认识,致力于将医疗信息化建设工作与各类新技术结合。参与了《健康数据分析》(Healthcare Data Analytics)一书的翻译工作。


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

您还可以扫码右侧二维码, 关注【异步社区】微信公众号,回复“e59623”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

本书提供配套源码。要获得相关配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品等。

扫描下方二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书技术审校等工作,可以发邮件给本书的责任编辑(liuyasi@ptpress.com.cn)。

如果您来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出版图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作者、译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


一部分主要介绍计算机服务扩容的发展历程。早期的互联网信息系统相对简单,通常为单节点架构,随着用户数量的增多,系统逐渐发展为分布式架构。随着企业业务的不断扩大,传统的分布式架构已经不能满足日益增长的需求,大中台战略的概念逐渐被企业重视起来。


在过去的几十年里,互联网改变了我们的生活方式。通过互联网提供的服务通常是由复杂的软件系统提供支持的,这些软件系统跨越大量服务器并且通常在地理位置上相距很远。这种系统在计算机科学术语中被称为分布式系统。为了正确、高效地运行大型系统,系统内的进程应能够以容错方式正确实现任务调度,进程间遵守的协议被称为分布式协议。为了更好地理解分布式系统中进程协作的原理,我们先来介绍计算机服务扩容的发展历程。

早期的互联网信息系统通常为单节点架构,随着用户数量的增多,系统逐渐发展为分布式架构。

早期的互联网信息系统业务相对简单,应用访问量较少,软件服务提供商通常将所有功能都部署在单一服务中,以减少部署节点的成本。在这个阶段,数据库性能优化是系统优化的关键。这种单一服务部署的模式被称为单一应用架构方式,如图1-1所示。

图1-1 单一应用架构方式

采用单一应用架构方式时,用户请求直接发送到单一服务,然后由单一服务处理请求并对数据库进行操作。这里的数据库也可以部署在独立服务器上面。

当信息系统业务成熟、应用访问量增多时,在单一应用架构方式下服务器很快会遇到性能瓶颈。这个时候,增加服务器是解决问题最高效的方式之一。例如,可以将应用和数据库分别部署在专用服务器上,该方式不仅能提高单机负载,也能增加系统的稳健性,减少系统宕机风险。

当应用访问量继续增加时,可以通过再次增加应用服务器的方式,将应用分别部署在不同的服务器上,从而提升前端应用的访问效率。在这个阶段,各个应用服务器相互隔离,依赖唯一的数据库统一提供服务,如图1-2所示。

图1-2 集群架构方式

采用集群架构方式时,用户请求经过统一路由器后,按照负载均衡策略,被分发给集群中相对空闲的服务实例进行处理。这些集群中的服务实例负责处理请求,但仍将访问同一个数据库。

应用被集群化管理后,数据库的短板逐渐显现,单节点部署的数据库无法完全承担集群化应用的数据处理请求。为了优化单节点数据库负载,系统引入数据库缓存机制,把常用数据提前加载到内存当中;引入读写分离机制来缓解数据库的压力,把查询操作放到一个数据库实例上进行,把新增、删除和修改(简称增删改)操作放到另一个数据库实例上进行,并在两个数据库之间建立同步机制。所以,当单节点数据库不能解决性能问题时,多实例部署数据库逐渐成为趋势。多实例部署数据库的架构如图1-3所示。

图1-3 多实例部署数据库的架构

在图1-3中,用户请求经过统一路由器后,按照负载均衡策略,被分发给集群中相对空闲的服务实例进行处理。这些集群中的服务实例会进一步细分业务逻辑,增删改操作会直接请求数据库主库,纯粹的查询操作会直接请求数据库备库。主库将依据同步策略将变化的数据同步给备库。

随着企业互联网业务应用的不断发展延伸,企业建立业务生态圈后,业务应用数据量不断增加和规模不断扩大。此时,可以分别将应用、数据库拆分成几个互相独立的应用和数据库,部署在不同的服务器节点上,从而提升系统性能和吞吐量,这种模式通常被称为垂直应用架构方式。

例如,电商系统在垂直应用架构方式下,根据业务的类型大体上可以分为4个集群,即客户管理系统集群、商品管理系统集群、订单管理系统集群和物流管理系统集群,每个集群都拥有自己的数据库集群,如图1-4所示。从运维层面来说,应用与数据库彼此相对独立,不管是业务实例集群还是数据库集群,通常都部署在独立服务器上面。例如,订单管理系统需要访问其他3个系统时,可通过点对点直接建立连接,实现数据互通。

图1-4 垂直应用架构方式

当然,垂直应用架构方式也存在一些弊端。系统管理员难以监控上下游应用的状态,例如,某些提供者已经失效了,而消费者只有在发起请求并捕捉到异常后,才能够判断出提供者的状态。此外,在高并发的场景下,如果系统没有设计熔断或流量管理机制,那么消费者将无法均匀地分发请求,只能使用轮询或者随机的负载均衡策略。

分布式系统最重要的特性之一就是解决服务与服务之间的通信问题。当单一服务被拆分后,各个服务之间的通信与交互复杂度增加。为使业务应用程序灵活地适应外界环境的变化,实现服务之间的松耦合,分布式架构设计的重点就转变为微服务设计。分布式架构将单一进程的应用做了拆分,形成独立对外提供服务的组件,每个组件通过网络协议对外提供服务。

在分布式架构下,服务之间的通信方式主要有3种。

第一种方式是通过Web服务基于简单对象访问协议(simple object access protocol,SOAP)实现,其本质是发送HTTP或HTTPS的扩展模块(extended module,XM)格式文本数据,缺点是通信协议比较“笨重”,难以管理。使用SOAP发送HTTP或HTTPS的可扩展标记语言(extensible markup language,XML)格式文本数据时,消费者与提供者是直连的,如果消费者类型和提供者类型比较多,那么管理起来就很棘手。例如,一个消费者要调用不同提供者的接口实现访问,假设该访问还有顺序要求,当其中一个提供者接口不可用时,将会造成本次访问失败。消费者需要对每个提供者实现容错机制和负载均衡。Web服务点对点直连架构方式如图1-5所示。

在图1-5中,所有服务都采用点对点直连的通信方式,拓扑图看起来像一个五角星的结构,消费者将直接向提供者发起请求。这里的通信协议不局限于SOAP、HTTP,报文格式也不局限于XML、JSON格式。在这种架构下,每个集群需要配置其他集群的实例地址信息。如果这些实例地址经常变动,那么管理起来将会非常麻烦。

图1-5 Web服务点对点直连架构方式

第二种方式是通过企业服务总线的方式完成服务之间的通信调用。但通常情况下,企业服务总线没有注册中心,因而很可能“牵一发而动全身”,服务变更进而影响到总线变更。企业服务总线架构方式如图1-6所示。

图1-6 企业服务总线架构方式

在图1-6中,服务与服务之间的请求是通过企业服务总线进行派发的,企业服务总线配置了每个集群的实例地址,当某一实例地址发生变动时,只需要在企业服务总线统一维护。企业服务总线扮演的角色是代理者,消费者的所有请求都通过企业服务总线进行代理,转发给提供者。由于通信过程中可能产生报文堆积,企业服务总线需要依赖消息队列机制保障即时通信能力。例如,在Apache Kafka分布式消息队列系统中,企业服务总线统一维护负载均衡策略,并监控每个实例的运行状态。

第三种方式是建立注册中心,服务之间的寻址由注册中心协同完成,服务之间使用轻量级的通信协议直接通信。消费者可以从注册中心订阅提供者的状态,及时获取变更通知。该通信方式也是本书重点介绍的对象。注册中心架构方式如图1-7所示。

在图1-7中,集群启动时,商品管理系统、客户管理系统和物流管理系统需要向注册中心注册自己的服务和角色。订单管理系统需要从注册中心获取对应服务实例信息,然后由订单管理系统直连提供者实例,发起请求并完成调用。注册中心还负责监控集群的运行状态,保存统一配置。因为订单管理系统直连提供者,所以实际上负载均衡策略需要订单管理系统自己实现。

图1-7 注册中心架构方式

纵观计算机服务扩容的发展历程,我们可以看出计算机服务扩容经历了从单一应用架构到集群架构,从集群架构到垂直应用架构,最后到微服务与分布式架构的发展过程。

分布式架构通过建立注册中心来管理服务之间的通信,服务之间的寻址由注册中心协助完成,服务之间使用轻量级的通信协议直接通信。对于单个独立的大型业务,软件服务商需要将核心业务抽取出来作为独立服务,这些服务逐渐形成稳定的服务中心,能够更快速地响应多变的市场需求。

分布式架构的设计理念是将核心业务抽取出来作为独立的服务,这些服务逐渐形成稳定的服务中心,然后拆分这些核心服务来提升服务中心的性能,达到更快速的需求响应。

以电商系统为例,其中很多核心业务是公共模块(如会员中心、购物车和商品管理)。不管是在微信小程序还是在移动端,这些模块的后台系统都是相同的。可以将这些模块拆分成单独的服务,对外提供统一的接口,从而提高模块的复用效率。分布式架构的核心思想是性能优化,主要有两个指标:吞吐量系统容错性。对吞吐量而言,不同种类的服务的吞吐量需求是不一样的。为了实现高吞吐量,需要一个健壮的通信框架,该框架能够同时保持大量的连接并及时处理请求,如基于Java NIO多路复用技术的通信框架Netty。对系统容错性而言,通信框架需要支持自定义容错策略配置,如失败以后重试、失败以后抛出异常、失败以后忽略异常信息等。

分布式架构的实现依赖高并发的通信框架。在分布式架构场景下,最重要的问题之一是解决分布式服务之间的通信问题,然后才进入设计服务集群方式的环节,这个问题很有挑战性。在分布式场景下编写高并发、高可用的应用,需要相当丰富的编程经验,这对于一些中小型团队是一个巨大的挑战。对大型团队来说,提供一个高并发的框架也需要投入大量的研发人员。因而,良好的通信框架需要具备开箱即用的特性和简单的设计模式,同时需要有开源社区的支持。活跃的社区能够通过不断升级第三方组件依赖版本来优化性能,并修复安全漏洞。

分布式架构依赖高可用的注册中心,在生产环境下,注册中心必须是一个集群。注册中心需要提供原子性的操作,否则多个服务在同时注册时可能会产生冲突。注册中心以集群的方式对外提供接口,避免了单点故障,以应对不稳定的网络环境。此外,注册中心还需要提供分布式锁等集群通用功能。

在分布式架构中,提供者需将服务注册到注册中心中,由注册中心持久化提供者信息。注册中心本身是一个集群,会把提供者信息同步到集群的每个节点上,以提供主备能力。消费者从注册中心拉取信息并将信息缓存到本地,然后向注册中心订阅提供者实例状态信息。当提供者失去和注册中心的连接或者提供者主动注销时,注册中心向订阅提供者实例状态信息的消费者发送通知。消费者将不可用的提供者信息从本地缓存中删除。注册中心集群工作方式如图1-8所示。

图1-8 注册中心集群工作方式

注册中心还提供对服务治理功能进行统一配置的功能。注册中心需要对消费者和提供者做统一的配置,当消费者和提供者实例启动时,消费者和提供者将从配置中心获取动态配置信息。这些动态配置信息包括负载均衡策略、路由策略、重试策略、访问限制、黑白名单、鉴权方式、令牌验证、黏滞连接、服务降级和发布模式等。

在分布式场景下,具有相同服务能力的提供者会被分组管理。消费者调用提供者时,实际上是调用这一组服务。这种消费者按组调用服务的功能依赖于注册中心的能力,消费者从注册中心订阅一种服务接口,该接口的实现方式对应一组提供者实例。同时,消费者能及时从注册中心获取提供者的变化信息,这是一种经典的观察者设计模式。

分布式应用发生故障的情况无法避免且很难预测,如应用崩溃、网络突发故障等情况。正是这些不得不面对的情况,要求我们在构建分布式系统时,要综合考虑系统的一致性、可用性、吞吐量。

一致性要求在分布式系统中的任意一个节点都会查询到相同的信息。解决一致性的问题要求分布式框架能够提供中心化协同工作机制,提供服务注册和订阅功能,即注册中心。此外,通信框架需要设计统一的控制中心来分发服务配置,或者把调整的配置通知到各个服务应用实例,以支持服务配置热加载的功能。中心化协同工作机制需要提供安全策略、加解密的算法、序列化消息等通用功能。

服务的可用性指的是当部分提供者失效时,整个分布式系统服务依然可用的特性。例如,各种原因导致的网络或硬件故障,甚至是软件自身的故障,都可能会使提供者不可用,在这种情况下,消费者需要能够及时发现并排除这些不可用的提供者,避免整个系统瘫痪。系统的通信框架需要支持自定义容错策略配置,如失败以后重试、失败以后抛出异常、失败以后忽略异常信息等。

分布式框架在设计上需要考虑服务之间调用的吞吐量。在解决了可用性的问题后,接下来需要解决稳定性的问题。由于网络请求不稳定,因此需要建立完备的负载均衡策略,把流量分散开来,以降低部分节点的突发负荷。也就是说,这是如何增大吞吐量的问题。

吞吐量问题本质上是分布式框架性能的问题。通信框架需要在支持业内主流负载均衡策略的同时,支持动态配置自定义路由机制,以适应复杂的业务调用关系。

随着企业业务的不断扩大,传统的分布式架构已经不能满足日益增长的需求,企业技术架构转型被提上日程,大中台战略的概念逐渐被企业重视起来。在中台概念出现之前,信息系统被分为前台和后台两部分。前台通常是指用户直接使用的终端业务系统,是企业服务与用户的交互平台,如日常使用的邮箱、即时通信工具、购物软件、手机银行等应用软件。前台需要保持良好的用户响应能力,能够及时满足企业扩展生态链的需求,同时要求其更迭速度越快越好。

相比之下,后台通常指由企业各个后端管理系统组成的平台,主要分为两类系统:一类是用于管理企业核心资源的系统,如财务管理系统、仓库物流追溯系统、企业资源计划系统等;另一类是为前台应用提供算力和数据支撑(如通信并发管理、数据压缩能力等)的基础平台。这些系统往往庞大而复杂,甚至还受到法律、法规、审计等相关合规性的约束,要求其稳定至上,更迭速度自然是越慢越好。

随着企业业务的不断发展壮大,用户的业务需求也逐年增长。在保证后台稳定的前提下,大量的业务逻辑被强加至前台系统中,使得前台系统不断膨胀,这种“野蛮”发展导致前台系统的维护和开发效率越来越低,成本投入却越来越高。

为了提高用户响应效率,避免新业务不断重复“造轮子”,降低前台业务创新更迭的成本,衍生出中台概念。中台是将前台中稳定且通用的业务沉降到中台层,恢复前台的响应效率,以及将后台系统中需要频繁变化或前台直接使用的业务提取到中台层,提高这一部分业务的响应效率,降低后台维护更迭的成本,为前台提供高效、可靠的支撑服务。中台的产生解决了前台创新更迭速度快与后台稳定发展更迭速度缓慢之间的矛盾,最大限度地提升了前台和后台的协作效率。

国内首先尝试应用大中台战略的公司是阿里巴巴集团(简称阿里巴巴)。在2015年考察芬兰的游戏公司后,阿里巴巴提出“大中台,小前台”的战略,将集团相关的可复用业务“下沉”,形成中台业务中心,以灵活、迅速地响应前台需求。在享受到使用中台的“红利”后,阿里巴巴坚定地应用大中台战略。在2018年,阿里巴巴又提出“业务−数据”双中台策略。在2020年阿里云线上峰会上,阿里巴巴提出“做厚中台”的战略。此外,华为提出“大平台炮火支撑精兵作战”的发展战略,将中台规划为战略指挥平台,科学、高效地为前台“精兵”提供支撑物资和方案。

近年来,随着微服务技术和架构、容器集群管理技术和工具的不断发展,各大互联网公司纷纷效仿大中台战略,建设适应自家组织架构的“中台”,用以应对市场变化,灵活、快速地做出策略调整。随着中台模式的不断发展和演变,中台的建设初衷由快速响应用户需求,逐渐演变为为集团提供运营数据能力、技术能力、支撑能力、产品能力等。这时,企业大中台战略的应用不再只着力于建设平台即服务(platform as a service,PaaS)中台,还包括数据中台、算法中台、业务中台等的建设与应用。

PaaS中台作为软件开发和维护人员的工具与组件,可为其他业务提供基础设施的重用功能,帮助其他系统快速搭建、部署和上线。PaaS中台主要包括服务器基础设施和项目开发管理工具。为了满足各应用在各种操作环境中快速上线的需求,PaaS中台引入了Docker容器技术,实现了应用、操作系统、系统资源的有效隔离,保证各个应用互不干扰。此外,PaaS中台利用Kubernetes技术对PaaS中台中的容器进行编排、调度、治理,最终实现了诸如自动部署、自动重启、自动扩容、微服务治理等基础服务功能,实现了对服务资源的自动管理和调度,提升了前台业务应对大并发的能力,也提升了资源的利用效率。

PaaS中台还包括开发管理模块,该模块为开发、数据分析、算法、测试、维护、管理等人员提供了一系列集成工具,可实现代码发布、运维、系统监控、日志查询、流量监控、链路分析和追踪、告警等功能,方便技术人员使用,提升工作效率。

随着企业信息化建设的不断深入,要想实现多个业务线业务过程的规范化、便捷化管理,并同时满足不同部门的生产和管理需求,势必要引入公众号、小程序、移动App等适配于客户端、PC端的各类软件产品。传统的信息化建设忽略了业务数据的价值,每个业务系统自主发展。当企业高层需要实时关注生产数据及企业效能时,这些分散在不同网络环境、不同存储平台的数据,并不能及时响应,提供的数据会出现无效甚至相互矛盾的情况,不能满足企业管理要求。为了能够将这些分散的业务数据可靠地收集起来,转化为有价值且能够给企业高层提供辅助决策的数据,企业需要构建数据平台来实现信息系统由便捷化到智能化的转变。

数据中台的目的是让数据持续用起来,最终实现企业的智能化管理,通过数据中台提供的工具、方法、运行机制,把数据转变为一种服务能力,最终反馈给业务,引导业务朝着更高效、更规范的方向发展。数据中台不仅包括对业务数据的治理,还包括对不同业务数据进行汇聚、传输、建模/存储、统计分析/挖掘、可视化等。

数据汇聚是数据中台的核心工具,数据中台本身并不生产数据,必须通过数据库同步、埋点、消息队列等方式,将分散在各个系统中结构化或半结构化的数据收集到一起,这是数据治理及建模的基础。数据汇聚完成后,经过开发人员及算法建模人员对数据加工、建模后,就可以建设企业的数据体系。数据治理是指通过数据治理清理脏数据,保证所需数据的一致性、准确性、完整性。在完成数据治理后,系统将数据抽取或分发至计算平台,然后通过不同的分析手段根据业务板块、主题进行多维度分析、加工处理,得到有价值的数据并将其用于展现、辅助决策分析。

算法中台又称AI中台。算法中台提供算法能力,帮助业务提供更加个性化的服务。一方面,算法中台为业务部门提供通用功能,开发人员在设计通用功能时更加重视重复使用的场景,如日志数据挖掘分析、CPU内存的峰值预测、业务请求量和服务器吞吐量的统计、通用预警模型等;另一方面,算法中台为业务部门提供定制功能,定制功能有复用率低和业务价值大的特点,能提供更好的用户体验,如在线客服系统的智能机器人客服,这里的客服需要针对每个行业做单独的定制化处理。如果是保险行业,可能需要对保险种类以及理赔方式做特别的算法优化。千篇一律的售前模式和售后模式不可能适用每一个细分领域。

通常情况下,算法中台需要深度结合数据中台,因为算法模块开发完成后,需要数据中台提供数据进行模型训练。在企业中台构建初期,可以考虑将数据中台和算法中台合并为一个中台。但从长久的发展考虑,大数据技术和机器学习技术必然不是一个发展方向。

PaaS中台从项目基础设施的角度出发,数据中台从业务数据的角度出发,业务中台则从企业全局角度出发,从整体战略、业务支撑、连接用户、业务创新等方面进行统筹规划。

业务中台需要按当前企业所处的行业进行规划。以电商行业为例,可以将支付系统、会员系统、广告系统等比较通用的模块作为业务中台。这些通用的功能在由业务中台统一开发和管理后,前端就可以非常便捷地进行调整了。

例如,对于一个母婴垂直电商销售网站和一个体育用品电商销售网站,它们只是在页面上销售的商品不一样,以及少数展示的定制型网站页面不一样,而支付系统、会员系统以及广告系统通常是相同的。通过搭建业务中台,可以最大化地提高通用业务系统的复用性。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e59623”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


相关图书

生成式AI入门与AWS实战
生成式AI入门与AWS实战
云原生Spring实战Spring Boot与?Kubernetes实践
云原生Spring实战Spring Boot与?Kubernetes实践
华为云计算实战指南
华为云计算实战指南
Amazon Web Services云计算实战(第2版)
Amazon Web Services云计算实战(第2版)
AWS云计算实战
AWS云计算实战
OpenStack云计算实战手册(第3版)
OpenStack云计算实战手册(第3版)

相关文章

相关课程