什么是微服务?什么是中台?阿里的中台战略?

编写代码边撸猫 2019-06-17 21:07:10 ⋅ 789 阅读

什么是微服务?

微服务架构将单体应用,按照业务领域拆分为多个高内聚低耦合的小型服务,每个小服务运行在独立进程,由不同的团队开发和维护,服务间采用轻量级通信机制,如HTTP RESTful API,或者RPC,独立自动部署,可以采用不同的语言及存储。

微服务体现去中心化、天然分布式,是中台战略落地到IT系统的具体实现方式的技术架构,用来解决企业业务快速发展与创新时面临的系统弹性可扩展、敏捷迭代、技术驱动业务创新等难题。

微服务解决什么问题?

传统的单体应用有很大的局限性,应用程序随着业务需求的迭代、功能的追加扩展,最终成为一个庞然大物。单体应用的局限性大体包括以下几方面:


  • 复杂性高:业务规模和团队规模发展的一定阶段,模块耦合严重,代码难以理解,质量变差。

  • 交付效率低:构建和部署耗时长,难以定位问题,开发效率低,全量部署耗时长、影响范围广、风险大,发布频次低。

  • 伸缩性差:单体只能按整体横向扩展,无法分模块垂直扩展。

  • 可靠性差:一个bug有可能引起整个应用的崩溃。

  • 阻碍技术创新:受技术栈限制,团队成员使用同一框架和语言。

微服务有什么特点?


  • 易于开发与维护:微服务相对小,易于理解;

  • 独立部署:一个微服务的修改不需要协调其它服务;

  • 伸缩性强:每个服务都可按硬件资源的需求进行独立扩容;

  • 与组织结构相匹配:微服务架构可以更好将架构和组织相匹配,每个团队独立负责某些服务,获得更高的生产力;

  • 技术异构性:使用最适合该服务的技术,降低尝试新技术的成本;

  • 企业环境下的特殊要求:去中心化和集中管控/治理的平衡,分布式数据库和企业闭环数据模型的平衡;

什么是中台?

中台的定义应该是:企业级能力复用平台。

  • 企业级-定义了中台的范围,中台不同于单系统的服务化和微服务。

  • 能力-定义了中台的主要承载对象,可以是业务能力,技术能力,数据能力,甚至是财务能力,人力资源管理能力。

  • 复用-定义了中台的核心价值,传统的IT系统对于复用没有太多的关注,而中台要求组织需要通过复用实现数字化敏捷力。

  • 平台-定义了中台的主要形式,区别于传统IT系统的烟囱式构建,通过对能力的更细粒度识别,实现企业能力的柔性复用。

共享服务体系是业务中台的核心中枢。

  • 对这些服务中心的服务稳定性、服务能力的扩展性、服务需求的快速响应能力提出了更高要求。

  • 构建共享服务体系,需要采用一套服务化框架来支撑整个服务体系的运转。

服务中心的服务形态多样性:

1. 接口是服务最主要的形式。

如果服务中心的服务都完全拘泥于接口这种形式,那又大大局限了服务中心的服务能力,或者会增加上层业务的使用成本。

2. 服务中心也可提供界面形式的服务能力。

淘宝的商品中心的商品发布能直接提供用户操作的界面,商品的类目管理也会有淘宝小二操作的界面,类似的交易中心、营销中心都有提供界面形式的服务能力。

为什么中台化落地需要使用微服务架构?

中台强调核心基础能力的建设,基础能力以原子服务的形式来建设,并通过将原子服务产品化,支撑业务端各种场景的快速迭代和创新;原子服务和微服务所倡导的服务自闭环思想不谋而合,使得微服务成为实现原子服务的合适架构。

支撑业务场景的应用也是通过服务来实现,其生命周期随业务变化需要非常灵活的调整,这也和微服务强调的快速迭代高度一致,所以业务应用服务也适合通过微服务来实现。

中台化系统建设不是一蹴而就的,需要长期动态的演进,加上其技术体系已经在互联网领域被证明且相当成熟,其在企业落地、执行的土壤已经具备。

阿里的中台战略是什么?

阿里的中台大约有十几个共享业务单元,包括用户中心、商品中心、交易中心等。淘宝、天猫、聚划算等 25 个大型业务应用都是由中台的共享业务单元支持的,共享业务单元则由阿里云平台支持。共享业务单元的划分原则其实不是可以简单掌握的,要综合考量设计、运营和工程因素,尽可能遵循“高内聚、低耦合”、“数据完整”、“业务可运营”和“渐进”的原则。阿里在划分中台时非常重视其业务价值和基于业务的设计,而且有业务架构岗位,每个共享单元都有业务架构师。但总体来讲,其业务架构仍然是领域性的。

服务中心的设计--基本原则:

  • 高内聚、低耦合原则;

  • 数据完整性原则;(服务化架构一个很重要的业务价值,就是数据模型统一)

  • 业务可运营型原则;(期望服务中心是承载业务逻辑、沉淀业务数据、产生业务价值的业务单元)

  • 渐进性的建设原则;(小步快跑的方式逐步推进,服务化从简单开始,只有真实的业务需求才会锤炼出稳定可靠的共享服务)

业务通过中台进行共享支持后,基础设施基于阿里云支持高并发和可扩展。阿里采用去中心的 HSF/Dubbo 分布式服务框架,以支持服务的点对点调用,解决 ESB 可能产生的瓶颈问题;采用微服务设计方式,提高变化响应速度,并通过大力推行 DDD(领域驱动开发)设计模式,提升设计效率;自研设计了分布式数据层框架 TDDL(Taobao Distributed Data Layer)以及分布式数据库 DRDS;研发了支持分布式事务处理的 TXC;支持高效故障定位和运维监控的鹰眼平台;实现了限流和优雅降级设计,以及做保障的全链路压测平台、业务一致性平台等。这是一套完整的基础设施,提供针对电商业务特点的支持。

在阿里的中台战略中,共享服务中心是中台架构的基石,如何构建稳定可靠、最高效地支撑上层业务快速创新的共享服务能力是中台战略成功落地的关键。

来源:软件架构原文链接:https://www.toutiao.com/a6688240781519487500

---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦





全部评论: 0

    我有话说:

    DDDplus 1.0.2 发布,轻量级业务开发框架

    DDDplus 简介 一套轻量级业务开发框架,以DDD思想为本,致力于业务资产可沉淀可传承,全方位解决复杂业务场景扩展问题,实现核心要素,赋能建设。 融合了前复杂生态协作方法论

    SQL 语句 where 条件后 写上 1=1 什么意思!

    这段代码应该由程序(例如Java)生成,where条件 1=1 之后条件通过 if 块动态变化。例如: String sql="select * from

    【开源资讯】JWCloud 专业版 v1.0.0 发布,基于 SpringCloud 研发服务框架

    简介 JavaWeb_Cloud 服务一款基于 SpringCloud 框架研发分布式微服务框架,主要使用技术栈包括: SpringCloud、Vue、ElementUI

    「转载」服务分布式架构,如何实现日志链路跟踪?

    背景 开发排查系统问题用得最多手段就查看系统日志,在分布式环境一般使用ELK来统一收集日志,但是在并发大时使用日志定位问题还是比较麻烦,我们来看下面图     上图

    DDDplus 1.1.0 发布,轻量级业务开发框架

    DDDplus一套轻量级业务开发框架,以DDD思想为本,致力于业务资产可沉淀可传承,全方位解决复杂业务场景扩展问题,实现核心要素,赋能建设。 融合了前复杂生态协作方法论,充分

    老板逼你上服务了吗?

    “ 这些年软件设计规模越来越庞大,业务需求也越来越复杂,针对系统性能、高吞吐率、高稳定性、高扩展等特性提出了更高要求。   图片来自 Pexels可以说业务需求软件架构能力

    面试官:HashMap为什么线程不安全

    一直以来只知道HashMap线程不安全,但是到底HashMap为什么线程不安全?

    【开源资讯】cppweb 1.0.2 发布,基于 C++ 开发 Web 服务器

    cppweb一个基于C++开发 WEB 服务器,支持C/C++、Python、Java等多语言混合开发WEB应用。 cppweb同时也一个跨平服务开发框架,通过两个核心组件

    精品推荐:JDFlutter | 京东技术新一代跨平台开发框架

    DFlutter 商城共享技术部-多端融合技术部推出新一代跨平台开发框架,可快速集成至现有 Android/iOS 工程,开发者可借助 JDFlutter 平台快速完成 Flutter 业务开发。

    字节跳动 | 服务架构如何优雅地重试?

    背景 在服务架构,一个大系统被拆分成多个小服务,小服务之间大量 RPC 调用,经常可能因为网络抖动等原因导致 RPC 调用失败,这时候使用重试机制可以提高请求最终成功率,减少故障影响,让系统

    服务化改造实践 | 如何在 Dubbo 支持 REST

    随着服务流行以及多语言互操作诉求日益增多,在 Dubbo 暴露 REST 服务变成了一个不容忽视诉求。

    Gradle 6.7.1 发布,修复 6.7 严重错误

    Gradle 6.7 修补版本,修复了 Gradle 6.7 几个严重错误,更新内容包括: 修复反向移植工具链错误问题 修复安装 Openjdk-11 后,Java 工具链在

    阿里大牛谈垃圾回收算法如何设计

    前言 如果大家关注 JDK,会发现在频繁发布 JDK 版本,和垃圾回收相关 JEP (JDK Enhancement Proposals,Java 增强提案)越来越多了,垃圾回收

    项目为什么用docker?

    前几天,公司一批服务器就要到期了,由于服务器15年购买,硬件性能远比现在新出云主机低,因此决定把所有服务器都换成新一代服务器,但是小编整准备动手迁移服务器时,内心一阵阵崩溃感涌上心头,仔细一

    Martian-cloud 4.0,跟注册中心拜拜了,基于传染机制分布式组件诞生

    这次真要跟注册中心讲拜拜了,服务不再需要占用一套注册中心集群了,大大节约了运维成本 更新点如下 丢弃了一开始【生产者->注册中心->消费者】模型 采用传染机制,实现服务发现与

    浅谈httpCache-Control

    前言   我们用http访问时,会先发送一个请求,之后服务器返回一个应答,在Chrome开发者工具(按F12或右击选择检查)展现了整个过程:     第一部分

    【重磅】软正式宣布 .NET5支持跨平、移动开发

    前言近期软正式宣布 .NET Core 3.0 之后下一个版本将 .NET 5 。

    JetLinks 物联网基础平 1.6 RELEASE 发布

    JetLinks 开源物联网平 JetLinks 基于Java8,Spring Boot 2.x,WebFlux,Netty,Vert.x,Reactor等开发, 一个开箱即用,可二次开发企业