云原生应用架构中的技术变革 三:从集中专治到分散化
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生应用架构中的技术变革 三:从集中专治到分散化相关的知识,希望对你有一定的参考价值。
云原生应用架构中的技术变革 三:从集中专治到分散化
云原生应用架构为现编程架构设计开辟了全新的征途,以快速创新、服务弹性扩展、支持交付价值等特性为征途奠基,使产品服务在市场中具备真正敏捷的竞争力!
那么我们的服务要上云,除了在文化组织上进行革新。在技术中,我们需要做哪些准备和调整呢?
单体拆分
传统的应用架构设计依托于 N 层单体式应用部署,业务状态与架构部署紧密耦合,甚至有些交互直接与特定机器交织。在代码组织上,模块体积随业务膨胀,内部逻辑耦合度极高,且语言单一。在学习成本上,往往成本就是了解整个模块,不敢松动任何代码,害怕引起蝴蝶效应,学习成本随业务膨胀,且维护成本类似。
你是否也发觉手上的项目也存在类似的问题呢?这些都将是阻碍产品服务快速创新,持续交付,敏捷价值的绊脚石。
云原生讲究快速高效,价值持续流动。想想单体设计的这些问题,怎么能解决掉这些绊脚石呢?
答案可以是,分解 —— 微服务。
微服务
微服务是云原生提倡的最具特色思想之一,将庞大繁杂的功能体进行拆分,以最小服务单元的形式对外提供服务。
举个例子:
比如当前的产品是直播类,那么可以将服务从类型上划分为基础服务、扩展服务、自定义服务等等。
- 基础服务:直播间行为服务「进出直播间、发言、推流、开播…」、用户关系服务「主播等级、房管…」、等等
- 扩展服务:消费服务「送礼、弹窗…」互动服务「连麦、PK…」、榜单服务「礼物排行榜、金主年月榜…」、等等
- 自定义服务:红包服务「特殊节日、活动…」、展示过滤服务「金主隐身、榜首屏蔽…」、等等
通过对业务功能的拆分,微小化处理,分别独立发布部署,进而实现微服务化,大化小,小化微。
微服务设计具有自己独特的特色,详情可见上篇文章 <云原生的崛起 一 :市场竞争中真正敏捷力量! >。
数据拆分
仅仅将单体应用分解为微服务还是远远不够的。数据模型必须要解耦。如果业务能力团队被认为是自主的,却被迫通过单一的数据存储进行协作,那么单体应用对创新的阻碍将依然存在。
“ 数据结构决定架构 ” ,数据的结构关系到架构的链路,毕竟架构为业务服务,业务就是一条条的数据流。
微服务从业务角度做规范,定义边界,且边界内的业务职责单一。
我们将有界上下文与业务职责相关的数据库结合,每个微服务封装、管理和保护自己的领域模型和持久存储。
在每个微服务关联的数据库中,只允许一个应用程序服务访问逻辑数据存储,逻辑数据存储可能是以多租户集群中的单个schema或专用物理数据库中存在。对这些概念的任何外部访问都是通过一个明确定义的业务协议来实现的,该协议的实现方式为API(通常是REST)。
这种分解允许应用拥有 多语言支持的持久性,或者基于数据形态和读写访问模式选择不同的数据存储。 然而,数据必须经常通过事件驱动技术重新组合,以便请求交叉上下文。诸如命令查询责任隔离(CQRS)和事件溯源(Event Sourcing)之类的技术通常在跨上下文同步类似概念时很有帮助。
举个例子:
- 同样产品类为直播,原单体架构中,用户属性为一张总表,里面包含了实名认证、兴趣爱好、业务等级等信息。现微服务拆分之后,实名认证作为一模块单独提供服务拆了出来,那么用户实名认证数据也需要进行拆分,与关联业务服务耦合,与总表进行数据解耦合。
容器化
容器化是云原生提倡的主要技术变革之一,是一种比虚拟机效率更高,成本更低的服务部署方式。
容器利用现代的Linux内核原语,如控制组(cgroups)和命名空间来提供类似的资源分配和隔离功能,这些功能与虚拟机提供的功能相比,具有更少的开销和更强的可移植性。应用程序开发人员将需要将应用程序包装成容器镜像,以充分利用现代云基础架构的功能。
亚马逊和Google等公有云供应商也提供一流的解决方案,用于容器化调度和部署,可谓是风头十足!
集中至分散
各种拆分的目的,是为了将集体进行分散,转移各种抗风险能力,提升产品价值迭代速度同时,保障持续交付。只有这样,才能够快速创新,提供高质量的服务,在竞争日益加剧的市场拥有绝对的敏捷力量!
Q&A
1、云原生那么能,到底是个什么呢?
可见前 “为何使用云原生应用架构” 系列,具体详细可关注后续博文!
2、云原生和云时代有什么联系吗?
云原生是互联网编程搭乘云时代科技进步的快车的结晶,利用云基础设置强大的伸缩能力、海量的资源、等特性,对自身的功能进行变革赋能,使其具备更强健的价值。
3、文中比较笼统讲了技术变革,虽然举了例子,还是比较模糊?
对,文中例子为更清晰理解拆分、微服务,详细的技术变革还有很多,而且具有创造性,和各自业务仅仅贴合,可私信博主交流,或关注后续博文。
附录
当繁杂的事情扑面而来时,需要沉稳思索做取舍,毕竟一定有时间做完一件事。
以上是关于云原生应用架构中的技术变革 三:从集中专治到分散化的主要内容,如果未能解决你的问题,请参考以下文章
云原生应用架构中的文化变革 二:从间接均衡到持续交付!「敏捷开发大揭秘 — 价值驱动成长 !」
云原生应用架构中的文化变革 二:从间接均衡到持续交付!「敏捷开发大揭秘 — 价值驱动成长 !」
云原生应用架构中的文化变革 一:秉承精益制造之魂,启行 DevOps 之路!