远方的灯塔 - 专注于服务端技术分享 远方的灯塔 - 专注于服务端技术分享
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)

Terwer Green

一个后端老菜鸟
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)
  • JavaSE

  • 开源框架

  • Linux

  • Struts2

  • Hibernate

  • Webservice

  • 分布式

    • RPC架构设计及IO模型
    • NIO编程及其三大核心原理
    • NIO三大核心之缓冲区(Buffer)
    • NIO三大核心之通道(Channel)
    • NIO三大核心之选择器(Selector)
    • Netty核心原理
    • 线程模型以及传统IO阻塞模型
    • Reactor模型
    • Netty线程模型
    • Netty核心API介绍
    • Netty入门与异步模型
    • Netty高级进阶之Netty编解码器
    • Netty高级进阶之基于Netty的群聊天室案例
    • Netty高级进阶之基于Netty的HTTP服务器开发
    • Netty高级进阶之基于Netty的Websocket开发网页聊天室
    • Netty高级进阶之Netty中的粘包和拆包的解决方案
    • Nety源码剖析
    • 自定义RPC框架之分布式架构网络通信理论
    • 自定义RPC框架之基于Netty实现RPC框架
    • 分布式架构理论
      • 分布式架构介绍
        • 什么是分布式系统
        • 分布式与集群的区别
        • 分布式系统的特性
        • 分布式系统面临的问题
    • 分布式理论之数据一致性
    • 分布式理论之CAP定理
    • 分布式理论之BASE定理
    • 分布式一致性协议之两阶段提交协议(2PC)
    • 分布式一致性协议之三阶段提交协议(3PC)
    • 分布式一致性协议之NWR协议
    • 分布式一致性协议之Gossip协议
    • 分布式一致性协议之Paxos协议
    • 分布式一致性协议之Raft协议
    • 分布式一致性协议之Lease机制
    • 分布式系统设计策略之心跳检测
    • 分布式系统设计策略之高可用
    • 分布式系统设计策略之容错性
    • 分布式系统设计策略之负载均衡
    • 分布式架构服务调用
    • 分布式服务治理之服务协调
    • 分布式服务治理之服务削峰
    • 分布式服务治理之服务降级
    • 分布式服务治理之服务限流
    • 分布式服务治理之服务熔断
    • 分布式服务治理之服务链路追踪
    • 架构设计基本原则之开闭原则(OCP)
    • 架构设计基本原则之单一职责原则(SRP)
    • 架构设计基本原则之接口隔离原则(ISP)
    • 架构设计基本原则之里式替换原则(LSP)
    • 架构设计基本原则之依赖倒置原则(DIP)
    • 架构设计基本原则知识扩展
    • 分布式架构知识拓展与总结
  • 分布式框架

  • 后端开发
  • 分布式
terwer
2022-04-17
目录

分布式架构理论

本文分析了分布式架构应用广泛的理论。

# 分布式架构理论

2022/04/6 校对完成

文章更新历史

2022/04/02 初稿。

# 分布式架构介绍

# 什么是分布式系统

分布式系统是一个硬件或者软件分布在不同的网络计算机上,彼此之间仅仅通过消息传递通信和协调的系统。

通俗的理解,分布式系统是,一个业务分拆成多个子业务,分布在不同的服务器节点,共同构成的服务器系统成为分布式系统。

同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,服务器可能放在不同分机柜中,也可能放在不同不同的机房中,深圳分布在不同的城市。

image-20220314224421105

# 分布式与集群的区别

集群:多个服务器做同一件事情

image-20220314224722066

分布式:多个服务器做不同的事情

image-20220314225045381

# 分布式系统的特性

1、分布性

空间中可以随机分布。这些计算机可以分布在不同机房,不同城市,甚至是不同国家。

2、对等性

分布式系统中的计算机没有主/从之分,组成分布式的所有节点都是对等的。

3、并发性

同一个分布式系统中的多个节点,可能会并发的操作一些共享的资源,例如数据库或者分布式存储。

4、缺乏全局时钟

由于各个计算机依赖交换信息进行通信,很难定义两件事件的先后顺序,缺乏全局时钟控制序列。

5、故障总会发生

组成分布式系统分计算机,都有可能在某一时间崩掉。分的计算机越多,崩的几率越大。如果考虑设计程序时的故障,则故障的概率会大大的增加。

6、处理单点故障

单点SPoF(Single Point of Failure):某个角色或者功能只有某一台计算机在支撑,在这台计算机出现的故障叫做单点故障。

# 分布式系统面临的问题

  1. 通信异常

    网络本身不可靠,因此每次通信都会面临网络不可用的风险(光纤、路由器、DNS等硬件系统的不可用),都会导致分布上系统无法顺利进行一次网络通信。即使分布式各个节点直接的网络能够进行通信,延迟也会大于单机操作,存在巨大的时延,这样会影响消息的收发,消息丢失和消息延迟变的很普遍。

image-20220314231834864

  1. 网络分区

    网络中出现了网络不连接,但是各个系统之间的子网链接正常,从而导致网络环境被切割成若干个孤立的区域,分布式系统会出现局部小集群。极端情况下,小集群会完成原本需要整个分布式系统才能完成的任务。包括事务的处理,这对分布式的一致性带来了很大的挑战。

image-20220314231952023

  1. 节点故障 指的是分布式系统中节点出现宕机,每个节点又有可能出现故障或者僵死,并且经常发生。

image-20220314232419799

  1. 三态

    分布式系统中每一次请求都存在三态,即:成功、失败和超时。

image-20220314232625668

  1. 重发

    分布式系统在调用是可能会发生 失败 和 超时 ,这时需要重新发起调用。

image-20220314232852790

  1. 幂等

    一次或者多次请求同一个资源本身应该有相同的结果(网络超时等问题除外)。即任意多次执行对资源本身产生的影响均与第一次执行的影响相同。

image-20220314233421353 image-20220314233522102 image-20220314233559509

编辑 (opens new window)
#rpc
上次更新: 2023/02/13, 17:01:26
自定义RPC框架之基于Netty实现RPC框架
分布式理论之数据一致性

← 自定义RPC框架之基于Netty实现RPC框架 分布式理论之数据一致性→

最近更新
01
解决css部分border被圆角切掉之后圆角的边框消失问题
03-18
02
使用TypeScript开发一个自定义的Node-js前端开发脚手架
03-08
03
Github-Actions使用release-please实现自动发版
03-06
更多文章>
Theme by Vdoing | Copyright © 2011-2023 Terwer Green | MIT License | 粤ICP备2022020721号-1 | 百度统计
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式