【架构师】什么是单元化架构?

简介: 单元化架构将系统划分为多个自包含单元,每个单元独立部署全套业务与部分数据,支持就近访问、低延迟与异地多活。用户请求在单个单元内闭环完成,提升性能与容灾能力,但需全链路改造、面临数据路由与高成本挑战,适用于大型企业核心场景。

所谓单元,是指一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需的所有服务,以及分配给这个单元的数据。


单元化架构就是把单元作为系统部署的基本单位,在全站所有机房中部署数个单元,每个机房里的单元数目不定,任意一个单元都部署了系统所需所有的应用,数据则是全量数据按照某种维度划分后的一部分。


所以,在单元化架构中,分成很多个单元和一个中心。每个单元之间都是相互独立的。一个单元中完整的部署了一整套业务,如电商交易、金融支付,一次用户操作可以在一个单元内部完成,不需要跨单元执行。


但是如果从数据角度来说,单元内的数据又不是完整的,他只包含这个单元内的数据,其他的单元的数据他是没有的。


所以,多个单元组合在一起,数据才是完整的。比如我们可以把一个淘宝,分成3个单元,如上海单元、北京单元和新加坡单元。


这样,一个杭州的用户下单,就可以直接路由到上海单元,并且在这个单元内把所有流程都走完,一个美国的用户下单,就会路由到新加坡单元,并在这个单元完成所有操作。并且杭州的用户的数据只在上海单元中有,美国用户的数据只保存在新加坡单元中。


除了单元以外,一般还有一个中心的概念,中心的数据就是全量的,所有单元的数据的聚合在一起,都存放在中心上,也会有一部分用户可以路由到中心进行业务操作。


做了单元化以后,一次下单要经过的交易系统、支付系统、数据库、缓存、MQ等等,这些都是在本单元内部独立部署的,所有的请求都不需要跨单元,在单元内部封闭执行完成,可以大大的降低网络的延迟。


并且,做了单元化以后非常方便的扩容,可以在单元内部快速扩容,不会影响到其他单元,也可以直接增加一个新的单元。都有非常好的扩展性。


做了多单元之后,就可以天然实现异地多活,具有很好的容灾性。在用户访问的时候,就可以就近原则,可以得到更快地响应。


当然,单元化也存在一些问题和限制:

  1. 单元化需要全链路改造,在整个环节中,如有一个环节没有做单元化改造,这种情况这个节点就只有中心。那么网络交互就一定会跨单元,跨单元就会带来更多的网络延迟。并且从这个节点开始,后面的所有请求也都只能在中心完成了。
  2. 每个单元都不是完整数据,这就会使得如果用户的路由没做好,就会导致用户的数据跨单元访问后获取不到数据。如果做得好,一个用户只会固定访问一个单元,那么就可能要打破就近原则,比如一个杭州的用户出差美国之后,还会路由到上海单元,那就会访问非常慢。如果给他路由到新加坡单元,速度是快了,但是数据可能没有。
  3. 成本,这个架构方案,成本巨高。所以只在一些大厂中才会采用,并且即使是这些大厂,也没有所有应用都做了单元化改造。并且会衍生出类似强单元化、弱单元化、非单元化等链路,会让这个系统更加复杂。
目录
相关文章
|
Kubernetes 安全 网络协议
【K8S系列】深入解析k8s网络插件—Calico
【K8S系列】深入解析k8s网络插件—Calico
5583 0
|
3月前
|
消息中间件 存储 负载均衡
【高可用】什么是异地多活、同城容灾?
异地多活与同城容灾均为提升系统高可用的分布式架构。前者实现跨地域数据中心实时同步与故障切换,保障全球服务连续性;后者聚焦同城内快速容灾,通过高速网络实现低延迟、高可靠的数据同步与负载均衡,适用于对延迟敏感的业务场景。
188 11
|
3月前
|
Java Spring
IDEA调出services窗口
本教程分两步指导:首先点击指定选项,然后在Templates中添加Spring Boot并应用,即可调出services窗口,快速完成配置。
209 11
|
3月前
|
消息中间件 架构师 Kafka
【架构师】如何做技术选型?
技术选型无绝对优劣,关键在于“更合适”。需综合评估功能满足度、可扩展性、安全性、性能等非功能性需求,同时考量使用人数、社区活跃度、迭代速度、学习与维护成本,以及与现有技术体系的匹配度,权衡利弊后做出最优选择。
165 4
|
3月前
|
架构师 微服务
【架构师】微服务的拆分有哪些原则?
微服务拆分需遵循七大原则:职责单一、围绕业务、中台化公共模块、按系统保障级别分离、技术栈解耦、避免循环依赖,并遵循康威定律使架构与组织匹配,提升可维护性与协作效率。
323 4
|
3月前
|
架构师 Java 程序员
程序员的出路:30岁,我们聊聊那些真实的选择
30岁程序员的迷茫与出路:技术焦虑、薪资倒挂、能力单一困扰着许多人。本文基于真实观察,梳理五条可行路径——深耕技术、理性转管理、务实搞副业、跨界融合、提前布局B计划,并总结三条铁律与自测问题,帮助你在变局中找到方向。出路不在远方,而在你写下的每一行“值钱”的代码里。(238字)
636 117
|
3月前
|
存储 运维 安全
一篇文章带你了解什么是云计算,SaaS PaaS IaaS的区别
云计算将硬件与软件资源集中于云端,企业按需租用,实现弹性扩容、降低成本。相比本地部署,云服务在运维、安全、效率上优势显著,并通过SaaS、PaaS、IaaS分层提供灵活支持,助力企业高效发展。(238字)
572 2
|
存储 安全 API
单元化架构,分布式系统的新王!
【10月更文挑战第9天】
944 0
单元化架构,分布式系统的新王!
|
3月前
|
消息中间件 架构师 Java
【Java架构师】各个微服务之间有哪些调用方式?
微服务拆分后需跨进程通信,常见方式包括HTTP调用(如RESTful、OpenFeign、@HttpExchange)、RPC框架(如Dubbo、gRPC、Thrift)、消息队列(如Kafka、RabbitMQ)及服务网格(如Istio)。不同场景下可依据性能、异步、跨语言等需求选择合适方案。
701 0
|
存储 监控 负载均衡