百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

分布式架构方案最全详解(9大主流架构方案)

ccwgpt 2024-10-03 18:21 25 浏览 0 评论

分布式解决方案是大型企业为了应对大规模、高并发的技术架构,是非常关键的技术,下面我就全面来详解分布式@mikechen

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

分布式架构

分布式架构:它通过将系统分解成多个独立的组件、或服务,并部署在不同的节点上协同工作,从而提高系统的扩展性、容错性、和灵活性。

主要特点:

  • 分布式:分布式的场景,系统中的节点、或者服务器...等,是分布网络多个节点;
  • 可扩展性:通过增加节点,来提升系统处理能力;
  • 垂直扩展:通过增强单个节点的资源,来提升性能;
  • 高可用性:通过多副本、集群、和负载均衡..来实现高可用性;
  • 独立性:不同服务可以使用不同的编程语言、框架、和数据库,各个服务可以独立开发、测试和部署。

常见的分布式架构,会涉及到:微服务、负载均衡、分布式存储、分布式事务...等等技术场景和架构@mikechen

微服务架构

微服务架构,具有以下六大特点:

1. 小服务

微服务架构,将大型单体应用拆分为多个小型服务,每个服务专注于一个特定的业务功能或领域。

这种拆分使得每个服务的代码库、和部署单元都相对较小,易于理解、和维护。

2. 独立进程

每个微服务,运行在独立的进程中,可以独立部署和扩展。

这种独立性使得一个服务的失败、或异常不会影响其他服务的正常运行,增强了系统的稳定性、和可靠性。

3. 轻量级通信

微服务之间,通过轻量级的通信机制进行交互,常见的通信方式,包括:基于HTTP的RESTful API、或者基于RPC的通信协议(如gRPC)..等。

这种通信方式简化了服务间的耦合度,支持异步通信、和松耦合。

4. 基于业务模型

每个微服务,被设计为围绕特定的业务领域或业务功能构建。

这种设计理念,使得每个服务能够更好地反映业务的现实世界,并通过限界上下文划分清晰的边界。

5. 独立部署

每个微服务,可以独立进行开发、测试、和部署。

这种独立部署,性质使得团队可以快速迭代、和发布新功能,降低了发布新版本的风险和成本。

6. 无集中管理

微服务架构推崇去中心化的治理模式,服务团队有更大的自主权和责任,能够选择适合自己服务的技术栈和开发流程。

优点:

  • 高可维护性:小的服务易于理解和修改;
  • 高可扩展性:可以独立扩展服务以满足特定功能的需求;
  • 高容错性:单个服务的失败不会导致整个系统崩溃。

缺点:

  • 复杂性增加:服务间通信、数据一致性、和分布式事务处理变得复杂。
  • 运维挑战:需要完善的服务发现、监控、和日志管理机制。

适用场景:

  • 大型复杂应用,需要频繁迭代、和部署。
  • 多团队协作开发,服务之间职责分明。

SpringCloud

SpringCloud:是微服务架构的经典实现,在国内使用非常多。

Spring Cloud ,可以用于快速构建分布式系统中的常见模式,比如:服务发现、服务治理、负载均衡、断路器、配置管理...等。

如下图所示:

1.服务发现

通过服务发现,微服务可以动态地注册自己的实例,并发现其他服务的实例,从而实现服务之间的解耦、和动态调用。

Spring Cloud 提供了集成服务注册、与发现的解决方案,比如:使用 Eureka 、或者 Zookeeper 等作为服务注册中心。

2. 服务治理

Spring Cloud 提供了通过注册中心管理服务的能力,包括:监控、管理、统计和安全控制...等功能。

3. 断路器

断路器模式在微服务架构中非常重要,用于防止由于服务故障导致的级联故障。

Spring Cloud 集成了 Hystrix 等断路器库,可以帮助开发者实现服务的容错机制,自动地断开不可用服务的调用,快速恢复可用状态。

4. API 网关

网关实现路由、过滤、安全性、监控...等功能,简化了微服务架构中的外部访问控制。

Spring Cloud 提供了 :Zuul 等 API 网关组件,用于统一管理和转发微服务的 API 请求。

5. 分布式追踪

链路追踪:是在分布式系统中提升可观测性、和排障效率的重要工具,特别在微服务架构中更显其重要性。

通过集成 Zipkin、Spring Cloud Sleuth ...等组件,Spring Cloud 支持分布式系统的请求链路追踪。

SpringCloudAlibaba

Spring Cloud Alibaba,通过集成阿里巴巴的优秀开源组件、和云服务,为开发者提供了一套完善的微服务架构、解决方案。

如下图所示:

1.Nacos

Nacos 是一个动态服务发现、配置管理和服务管理平台,作为 Spring Cloud Alibaba 的核心组件之一。

提供了服务注册与发现、配置中心、动态 DNS 服务...等功能。

开发者可以使用 Nacos 实现服务的注册、发现/和动态配置管理。

2.Sentinel

Sentinel 是阿里巴巴开源的一款流量控制、和熔断降级工具,用于保护微服务应用在高并发场景下的稳定性。

在 Spring Cloud Alibaba 中集成 Sentinel,可以实现对服务调用的流量控制、熔断降级、系统负载保护...等功能。

3.Dubbo

Dubbo 是阿里巴巴开源的高性能 Java RPC 框架,用于实现服务之间的远程调用、和通信。

4.RocketMQ

RocketMQ 是阿里巴巴开源的分布式消息中间件,支持高并发、低延迟的消息发布和订阅。

Spring Cloud Alibaba 集成了 RocketMQ,提供了便捷的消息驱动能力,可以用于实现异步通信、事件驱动...等场景。

RocketMQ,是一个分布式消息中间件,提供了高可靠性、高吞吐量的消息传递服务。

ServiceMesh

Service Mesh(服务网格),是一种新兴的微服务架构模式。

Service Mesh可以形象地理解为,一个由许多微小的服务(Service)、和它们之间复杂的交互和连接(Mesh)构成的网络。

如下图所示:

Service(服务)

微服务架构中的每个独立的服务单元,每个服务负责执行特定的业务功能或服务。

Mesh(网格)

在Service Mesh中,每个服务都有一个专门的代理(通常称为sidecar)。

如下图所示:

Sidecar"(侧车),这个术语源自摩托车的侧边车,它附加在主要载体旁边,用于提供额外的功能、或服务。

Sidecar 是一个重要的概念,特别是在 Service Mesh(服务网格)模式中被广泛采用。

在 Service Mesh 中,每个微服务都有一个专门的 Sidecar 代理与之配对。

这个 Sidecar 代理负责管理服务间的通信,实现:流量控制、熔断降级、服务发现、负载均衡等......功能。

优点:

  • 提高了微服务间通信的可靠性和安全性。
  • 简化了微服务架构的运维和管理。
  • 提供了丰富的可观测性和控制能力。

缺点:

  • 引入了额外的复杂性和资源开销。
  • 学习曲线较陡,需要掌握新的工具和概念。

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。


分布式数据存储

分布式数据存储是一种数据存储架构,数据分布在多个物理位置、或服务器上。

如下图所示:

提供数据分片、复制和一致性保证的机制,具体如下:

1.数据分片

将数据集拆分成更小的片段,每个片段存储在不同的节点上,这样可以平衡负载并提高系统的性能、和容量。

2.数据复制

在多个节点上存储数据的副本,以提高数据的可用性、和可靠性。

即使某个节点发生故障,其他节点上的副本仍然可用。

3.一致性模型

数据副本可能会暂时不同步,但最终会达到一致状态。

优点:

  • 提高了数据存储的可扩展性和容错性。
  • 可以处理大规模数据和高并发请求。

缺点:

  • 数据一致性管理复杂。
  • 分布式事务处理难度较大。

分布式缓存

将热点数据缓存在多个节点上,提高数据访问速度,常见的分布式缓存系统有:Redis、Memcached等。

优点:

  • 显著提高数据访问性能,降低数据库负载。
  • 提供数据分片和复制机制,确保缓存的高可用性。

缺点:

  • 数据一致性问题需要特别处理。
  • 缓存过期和失效策略管理复杂。

适用场景:

  • 读多写少的应用,如内容管理系统、社交媒体平台。
  • 需要快速响应的实时数据应用。

分布式事务

分布式事务是在分布式系统中,跨多个独立的数据存储、或服务节点执行的事务操作。

如下图所示:

分布式事务,需要保证所有涉及的操作要么全部成功,要么全部失败。

常见的解决方案,有两阶段提交(2PC)、三阶段提交(3PC)等。

两阶段提交(2PC)

  • 协调者向所有参与者发送准备请求,各参与者执行事务操作并锁定资源,但不提交,返回准备好的状态;
  • 如果所有参与者都准备好了,协调者发送提交请求,各参与者提交事务;
  • 如果有任何一个参与者准备失败,协调者发送回滚请求,各参与者回滚事务。

三阶段提交(3PC)

是2PC的改进,增加了一个“预提交”阶段,进一步减少协调者崩溃导致不一致的风险。

补偿机制

如果某个本地事务失败,触发补偿操作以回滚之前的操作,保证数据一致性。

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

相关推荐

Java开发中的区块链技术应用:让代码更“链”接未来

Java开发中的区块链技术应用:让代码更“链”接未来嘿,各位Java开发者们!今天咱们就来聊聊一个超级热门的话题——区块链技术在Java开发中的应用。可能有些人听到区块链就想到比特币,但其实区块链的应...

gRPC Java 的开发StepByStep(javarpc原理)

一、环境准备1.安装依赖JDK:确保安装Java8或更高版本(推荐Java11+)。构建工具:选择Maven或Gradle(以下示例以Maven为主)。Protobuf编译器:...

谷歌发布开源LMEval框架:打破AI模型比较壁垒

IT之家5月27日消息,科技媒体TheDecoder昨日(5月26日)发布博文,报道称谷歌推出开源框架LMEval,为大语言模型和多模态模型提供标准化的评测工具。评测新型AI...

简约轻量的 VPN 客户端:LightVPN

Android自带的VPN需要设定锁屏密码才能启用,显然对于使用滑动或图案解锁的VPN用户来说,这是极为不友好的。为了改善这个情况,@喝雪碧的虾PeterCxy开发出了LightVPN这...

如何有效的去除安卓手机软件中的广告

【搞科技教程】安卓软件多同时广告也多,时不时的弹出来还一条条的切换,费流量的同时一不小心点到了还跳转了页面,这在玩游戏看视频的时候尤其令人烦躁。小安推荐大家一个轻量,高效的去除广告工具MinMinGu...

四款精品安卓软件推荐:让你的手机流畅的不像安卓机

目前国产软件的乱象,大部分软件不断后台自启,相互唤醒,这也是为什么安卓手机使用一段时间后就变卡的原因,今天小编为大家带来四款软件,能让你的手机流畅的像刚买时一样。绿色守护休眠进程和省电必备神器,最佳控...

生命不息,折腾不止:在 Android 上自制单手模式

手机屏幕做大,在视觉体验上带来的提升是非常明显的,但也因为屏幕变大,单手操作已不再那么现实。针对这种情况,各大厂商都相继推出了相应的解决方案,Android阵营比较有代表性的有魅族、锤子的下拉悬停和...

Windows11安卓增强指南(win11 安卓 效率)

在Win11上,让人感受最深的莫过于可以运行安卓格式的APK软件,但是对于更加发烧的玩家来说,安卓系统没有ROOT,就无法实现一些骚操作,那么今天就来看看怎么给Win11的WSA加上ROOT吧。注意:...

2025年安卓虚拟机APP推荐TOP5(附下载教程)

身为25岁非二元性别的自媒体人,我视频剪辑、内容创作样样精通。多平台运营离不开安卓虚拟机APP。今天,就来聊聊2025年我最爱的5款虚拟机APP,附上教程,助你创作更高效!一、安卓虚拟机APP有什么用...

全民风险管理理论之COSO-ERM(全面风险管理的参与者)

萨班斯-奥克斯利法案内控体系COSO-ERM,2004八个要素COSO——ERM(2017版)框架五要素20个原则企业的经营目标不是价值最大化风险管理各要素间的关系各级关系全面风险管理与内...

透过照片学习摆姿技巧 你能拍出妹子的曲线么?

大多数人认为拍妹子都一个套路,但随着社会的发展,人们受到外来文化的影响越来越多,个性的照片也越来越被大家所接受。到底怎样的一幅人像照才是好照片,今天我们就从模特摆姿的方面来谈一谈人像照片中怎样能够完美...

手把手教你拍好局部风光!(如何拍好风光片)

外出旅行,游历名山大川、江河湖海,日升日落……总能看到绝佳的风景,有时置身于无与伦比的风景中反而容易眼花缭乱、迷失自己。我们不仅要欣赏远处雄浑壮阔的雪山,但是也不要忽略脚下和身边的局部优美风光。下面就...

C# 从代码入门 Mysql 数据库事务(c#数据库操作实例)

目录生成数据库数据Mysql数据库事务基础数据库的并发一致性问题数据库事务的隔离级别BeginTransaction()和TransactionScope的区别BeginTransaction...

真香预警!尼康大炮500mm F4 FL E试用心得

NicolasStettler是一位来自瑞士的17岁野生动物摄影师,他最近购买了尼康最新一代长焦镜头AF-S尼克尔500mmf/4EFLEDVR,并将其与他的旧镜头进行了比较,以下是他的详细...

佳能RF 50mm f1.2L USM 被吹捧还是凭实力?新老对比能否一战?

镜头的定位佳能RF50mmf1.2LUSM是佳能EOSR全画幅无反光镜系统的标准定焦镜头RF50mmf1.2LUSM可以看作是之前12年推出的EF50mmf1.2LUSM的继承者。...

取消回复欢迎 发表评论: