分布式架构演进过程

news2024/12/24 20:54:01

        分布式的前提,我们得有多台服务器,那么我们需要知道世界上第一台计算机的由来,而第一台计算机的参考模型就是冯诺依曼模型,为此奠定了所有的分布式都在围绕着这个模型里面的某一块或者相互之间模块进行打交道。

搞分布式又有什么意义呢?

1.升级单机处理能力的性价比越来越低 

单机的处理能力主要依靠CPU、内存、磁盘。通过更换硬件 做垂直扩展的方式来提升性能,成本会越来越高。 

2. 单机处理能力存在瓶颈

 单机处理能力存在瓶颈, CPU、内存都会有自己的性能瓶颈, 也就是说就算你是土豪不惜成本去提升硬件,但是硬件的发 展速度和性能是有限制的

3. 稳定性和可用性这两个指标很难达到

单机系统存在可用性和稳定性的问题,这两个指标又是我们 必须要去解决的

分布式架构的常见概念

集群

       小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人 多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能 炒一样的菜,这两个厨师的关系是集群

分布式

      为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切 菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师 也忙不过来了,又请了个配菜师,两个配菜师关系是集群 

节点  

节点是指一个可以独立按照分布式协议完成一组逻辑的程序 个体。在具体的项目中,一个节点表示的是一个操作系统上的 进程。

副本机制  

副本(replica/copy)指在分布式系统中为数据或服务提供的冗 余。 数据副本指在不同的节点上持久化同一份数据,当出现某一个 节点的数据丢失时,可以从副本上读取到数据。数据副本是分 布式系统中解决数据丢失问题的唯一手段。 服务副本表示多个节点提供相同的服务,通过主从关系来实现 服务的高可用方案  

中间件  

中间件位于操作系统提供的服务之外,又不属于应用,他是位 于应用和系统层之间为开发者方便的处理通信、输入输出的一 类软件,能够让用户关心自己应用的部分。 

架构的演进过程

阶段一,单应用架构 

阶段二,应用服务器和数据库服务器分离 

阶段三、应用服务器集群-应用服务器负载告警,如何让应用服 务器走向集群 

各种问题也会慢慢呈现 

  1. 用户请求由谁来转发到具体的应用服务器
  2.  用户如果每次访问到的服务器不一样,那么如何维护 session

阶段四,数据库压力变大,数据库读写分离

这个架构的变化会带来几个问题

1. 主从数据库之间的数据同步  ; 可以使用 mysql 自带的 master-slave方式实现主从复制

2. 对应数据源的选择 ; 采用第三方数据库中间件,例如mycat 

阶段五,使用搜索引擎缓解读库的压力 

阶段六,引入缓存机制缓解数据库的压力 

阶段七,数据库的水平/垂直拆分

垂直拆分:把数据库中不同业务数据拆分到不同的数据库 

水平拆分:把同一个表中的数据拆分到两个甚至跟多的数据库中, 水平拆分的原因是某些业务数据量已经达到了单个数据库的瓶颈, 这时可以采取讲表拆分到多个数据库中 

阶段八,应用的拆分 

这样拆分以后,可能会有一些相同的代码,比如用户操作,在商品 和交易都需要查询,所以会导致每个系统都会有用户查询访问相关 操作。这些相同的操作一定是要抽象出来,否则就会是一个坑。所 以通过走服务化路线的方式来解决 

    那么服务拆分以后,各个服务之间如何进行远程通信呢? 通过RPC技术,比较典型的有:webservice、hessian、http、RMI 等等 前期通过这些技术能够很好的解决各个服务之间通信问题,but, 互联网的发展是持续的,所以架构的演变和优化还在持续。 

什么是分布式架构下的高可用设计 ?

1. 避免单点故障 

a) 负载均衡技术(failover/选址/硬件负载/ 软件负载/去中心化的软件负载(gossip(rediscluster)))

b) 热备(linux HA)

c) 多机房(同城灾备、异地灾备)

2. 应用的高可用

a) 故障监控(系统监控(cpu、内存) /链路监控/日志监 控) 自动预警

b) 应用的容错设计、 (服务降级、限流)自我保护能力

c) 数据量(数据分片、读写分离)

附录:分布式架构的基本理论 CAP、BASE 以及应 用 

CAP理论告诉我们:一个分 布式系统不可能同时满足一致性(C:Consistency)、可用 性( A:Availability)和分区容错性(P:Partition tolerance) 这三个基本需求,最多只能同时满足其中两项。

一致性:所有节点上的数据时刻保持同步 

可用性:每个请求都能接收一个响应,无论响应成功或失 败

分区容错:系统应该持续提供服务,即时系统内部(某个 节点分区)有消息丢失。比如交换机失败、网址网络被分 成几个子网,形成脑裂;服务器发生网络延迟或死机,导 致某些server与集群中的其他机器失去联系  

CAP并不是一个普适性原理和指导思想,它仅 适用于原子读写的NoSql场景中,并不适用于数据库系统。 

BASE 全称 是Basically available,soft-state,Eventually Consistent. 系统基本可用、软状态、数据最终一致性。

Basically available(基本可用),在分布式系统出现不可预 知的故障时,允许瞬时部分可用性 

soft-state(软状态). 表示系统中的数据存在中间状态,并 且这个中间状态的存在不会影响系统的整体可用性,也就 是表示系统允许在不同节点的数据副本之间进行数据同步 过程中存在延时

Eventually consistent(数据的最终一致性),表示的是所有 数据副本在一段时间的同步后最终都能达到一个一直的状 态,因此最终一致性的本质是要保证数据最终达到一直, 而不需要实时保证系统数据的强一致  

BASE理论的核心思想是:即使无法做到强一致性,但每个 应用都可以根据自身业务特点,采用适当的方式来使系统 达到最终一致性 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机毕业设计】7.健身俱乐部会籍管理系统+vue

一、系统截图(需要演示视频可以私聊) 摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的…

关于clickhouse单节点部署

因为公司网络问题,下载clickhouse无法使用命令下载,所以用压缩包进行下载安装。 首先在其官网下载下载安装包 https://packages.clickhouse.com/tgz/stable/ 一共要下载四个包 clickhouse-client clickhouse-common-static clickhouse-common-static-d…

miRNA 在基因调控中的作用

MicroRNA (miRNA) 是什么?“micro”“mi”是微小的意思,顾名思义,miRNA 就是小的非编码 RNA,长度约 23 个核苷酸 (nt),它在转录后的基因调控中发挥关键作用,包括疾病的发生、细胞分化与组织发育&#xff0c…

山东大学线性代数-1-矩阵-2

目录 1.9 初等矩阵 1.9.1 初等矩阵的定义 1.9.2 初等矩阵的性质 1.9.3 初等矩阵与初等变换的关系 1.9.4 满秩矩阵的四种等价表述 1.10 逆矩阵的定义及可逆条件 1.10.1 逆矩阵的定义 1.10.2 矩阵可逆的条件 1.10.3 二阶可逆矩阵的逆矩阵求法 1.11 逆矩阵的求法&#x…

Apollo 应用与源码分析:Apollo工程概述与AUTOSAR架构

目录 Apollo 工程概述 目录结构 软件架构 硬件架构 AUTOSAR架构 Apollo 概述 目录结构 |-cyber 消息中间件,替换ros作为消息层 |-docker 容器相关 |-docs 文档相关 |-modules 自动驾驶模块,主要的定位,预测,感知&#xf…

【Java进阶篇】第四章 异常处理

文章目录1、异常2、类Throwable3、运行时异常和编译时异常4、异常的处理5、异常导致某些代码不能被执行6、try...catch总结7、异常对象的常用方法8、try...catch和finally9、final、finally和finalize的整理区分10、如何自定义异常11、异常在实际开发中的作用12、异常与方法覆盖…

带联网功能的RFID宿舍门禁(六)-两年后的再次总结

文章首发及后续更新:https://mwhls.top/4066.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 带联网功能的RFID宿舍门禁 两年后又来了次总结&#xff0c…

聚观早报|中国制造成世界杯交通主力;特斯拉拟召回32万辆车

今日要闻:中国制造成世界杯交通主力;特斯拉拟召回32万辆车;iPhone14pro发货或延期至2023年;Tik Tok逆势宣布招聘;世界杯部署2.2万电子眼中国制造成世界杯交通主力 据消息,来自中国的新能源客车成了服务本届…

美国、欧洲、中国关于工业互联网的比较分析

工业革命的发展历史 1.0•机械化•大规模 2.0•电气化•自动化 3.0•信息化•产品标准 4.0•网络化•定制 3.0相当于肯德基麦当劳门店全部机械化,全程过程控制,任何一批不合格的产品,都可以追溯到上游任何一个环节 4.0全部设备通过中央控…

【C++笔试强训】第二十九天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦&a…

【linux】coredump问题排查

序言 记录coredump问题的一些定位技巧 1. coredump简介 coredump称为核心转储,就是在进程异常时的一个快照,保存了异常时的内存、寄存器、堆栈等数据当进程接收到某些 信号 而导致异常退出时,就会生成 coredump 文件core文件是ELF文件格式…

docker-compose 安装 Prometheus + Grafana 配置监控页面

安装 Prometheus Grafana docker 编排 prometheus:image: prom/prometheus:v2.40.1container_name: prometheusports:- "9090:9090"volumes:- /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.ymlnetwork_mode: "host"grafana:image: gra…

【Linux】基础:进程控制

【Linux】基础:进程控制 摘要:本文主要介绍关于Linux进程控制内容,分为创建、退出、等待与替换四个板块,希望读者可以掌握每个板块的主要概念以及使用原因和调用方法。 文章目录【Linux】基础:进程控制一、进程创建1.1…

Nginx重定向

Rewrite简介 Rewrite是Nginx服务器提供的一个重要基本功能,是Web服务器产品中几乎必备的功能。主要的作用是用来实现URL的重写。 注意:Nginx服务器的Rewrite功能的实现依赖于PCRE的支持,因此在编译安装Nginx服务器之前,需要安装PCRE库。Ngin…

(续)SSM整合之springmvc笔记(SpringMVC处理ajax请求)(P154-158)

目录 SpringMVC处理ajax请求 一 准备工作 1 新建spring_mvc_ajax com.atguigu 2 .导入依赖 3 添加web模块 4 .配置web.xml 5 . springmvc.xml 6 .创建控制层 7 . index.html 8 静态 9 部暑到tomcat上 10 启动tomcat 二 . 测试SpringMVC处理ajax 1 . ind…

TCP三次握手与四次挥手详解

TCP三次握手(建立TCP连接): 建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连…

GSN前瞻预处理

在数控加工等应用中,要求数控系统对机床进行平滑的控制,以防止较大的冲击影响零件的加工质量。 运动控制器的前瞻预处理功能可以根据用户的运动路径计算出平滑的速度规划,减少机床的冲击,从而提高加工精度。 下面用一个实例来说明…

一文了解Spring MVC(上)

目录 什么是Spring MVC 什么是MVC Spring MVC 和MVC的区别 怎么学Spring MVC Spring MVC的创建和连接 RequestMapping注解 获取参数 传递基础数据类型/包装类型(无注解) 添加RequestParam注解(使用在方法参数上) 传递自…

python——GIL锁详解

文章目录一、GIL全局解释器锁二、为什么会有GIL锁?三、多线程无法利用多核优势?计算密集型和IO密集型计算密集型——采用多进程计算密集型——采用多线程IO密集型——采用多进程IO密集型——采用多线程四、总结一、GIL全局解释器锁 1、GIL锁不是python的…

C语言 数据的存储

C语言 数据的存储一、数据与进制之间的关系1. 十进制与二进制之间的转换2. 二进制与十六进制之间的转换二、整型数据存储1. 原、反、补码2. 整型数据在内存中的存储3. 为什么整型数据存在内存中存储的是补码4. 有符号和无符号的数据类型有符号和无符号的存储范围猜想5. 关于 ch…