【ZooKeeper】① 分布式的基本概念

本文探讨了系统高可用性理论,包括主备、主从和高可用集群模式,比较了分布式与微服务架构,并深入剖析了分布式应用中的存储、计算和协调服务,以ZooKeeper为例。通过实例理解分布式技术在大数据和高并发场景中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、系统高可用(High Availability)

(1) 啥是 “高可用” ?

高可用的目的:保障业务的连续性。实现在用户眼里,业务永远是正常对外提供服务的。
在这里插入图片描述
一个 SpringBoot 项目(apple.jar)被部署到了服务器上运行。可向其发送网络请求获取网络资源。随着请求数量的逐渐增多,服务器宕机(死机)的可能性也越来越高。 若一个服务器宕机会导致该服务器上的某个系统直接无法被访问,则不是高可用的项目,便产生了单点故障。单点故障:服务器与项目共生。服务器生,项目活;服务器挂,项目死。

高可用希望实现两个目标:
① 系统的健壮性,不允许出现单点故障
② 提高系统的处理能力,保证系统的运行效率

(2) 集群

服务器就是计算机,计算机就是服务器。

高可用:项目依赖于多台服务器,某台服务器宕机不会导致项目无法提供服务

集群(cluster):一组 相互独立的、通过高速网络互联的计算机的集合。

  • 多台计算机构成一个组,它们被一种 单一系统的模式 加以管理
  • 一个客户向集群服务器发送请求时,集群(多台计算机的集合)像是一台独立的服务器一样
  • 集群模式:多台计算机的组合方式

① 主备模式

  • 多台服务器,其中有 1 台为主服务器。正常情况下由主服务器提供服务,主服务器处于 active 状态
  • 除主服务器之外的都是备用服务器。备用服务器平时提供服务,处于 standby(待命、后备人员)状态
  • 若主服务器出现故障、若主服务器宕机,挑选众多备用服务器中的一台作为主服务器继续提供服务
    在这里插入图片描述

② 主从模式

  • 多台服务器,每台服务器都提供服务
  • 服务器的功能(角色)可能不一样
    在这里插入图片描述

③ 高可用模式

Queries-per-second:单个进程每秒请求服务器的成功次数(每秒查询率)

  • 多台服务器,每台服务器的角色和功能都一样
    在这里插入图片描述

④ 总结

主备集群:避免单点故障
主从集群:避免单点故障;提高并发度;吞吐量
高可用集群:避免单点故障;提高并发度;吞吐量

(3) 分布式

  • 分布式是一种系统部署的方式
    在这里插入图片描述
    上图部署应用的方式是【单机部署】

  • 应用服务器(Tomcat)和数据库服务器(MySQL)部署在同一台服务器上

  • Tomcat 和 MySQL 沟通的网络开销很小

  • Tomcat 和 MySQL 共享服务器的内存空间


在这里插入图片描述
上图部署应用的方式是【分布式部署】

  • 服务器之间通过网络访问(存在网络开销)
  • 应用服务(Tomcat)和数据库服务器(MySQL)被部署在不同的服务器上
  • Tomcat 和 MySQL 独享自己所在服务器的内存空间

(4) 微服务

  • 微服务是系统的一种架构设计方式
  • 微服务一定是分布式,但分布式不一定是微服务
    在这里插入图片描述
    上图把一个应用全部的功能置于同一个项目、同一个应用、同一个 jar 包中,这是单体应用。

在这里插入图片描述
上图根据模块进行划分,每个模块通过服务之间的网络调用进行访问,是微服务架构。

(5) 分布式和微服务的对比

① 单体架构所有的模块全都耦合在一块。代码量大,维护困难。微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。

② 单体架构所有的模块都共用一个数据库,存储方式比较单一。微服务每个模块都可以使用不同的存储方式(如有的用 redis,有的用 MySQL),数据库也是单个模块对应自己的数据库。

③ 单体架构所有的模块开发所使用的技术一样。微服务每个模块都可以使用不同的开发技术,开发模式更灵活。


二、分布式应用

大数据时代,将会面临三个重大的问题:① 海量数据如何存储?② 如何对海量数据进行运算?③ 高并发的请求如何处理?
这些问题都可通过【分布式】进行解决。分布式存储解决海量数据的存储;分布式计算处理海量数据之间的运算;分布式系统处理高并发的请求。

(1) 分布式存储

在这里插入图片描述
使用 MySQL 数据库可存储数据,但其存储的数据是有限的。假如 MySQL 可存储的数据是 1T,那固定了只能存储 1T 的数据,若数据容量超过 1T 就无法存储了。

HBase:Hadoop Database 是一个高可靠性、高性能、面向列、可伸缩分布式存储系统。利用 HBase 技术可在廉价 PC Server 上搭建起大规模的结构化的存储集群。【百度百科】
在这里插入图片描述

(2) 分布式计算

分布式计算:分而之,把一个大的计算任务分解为多个小的计算任务进行计算操作。把小的计算任务的计算结果进行汇总,进而得到大的计算任务的结果。
在这里插入图片描述
上图,有一个计算海量数据中字母个数的任务。每种数据被存放在不在的服务器中,计算字母个数的代码放在 A 服务器。把每个服务器的数据都移动到 A 服务器并进行计算会非常耗费时间和性能。最好的做法是:把计算字母个数的代码移动到不同的服务器,在数据所在的服务器统计完字母个数后再把计算结果进行汇总。
一份计算字母个数的代码可能最多100M,而不同服务器上的一份数据肯定是远大于100M的,移动代码(运算)比移动数据划算。

分布式计算强调:移动运算,而不是移动数据

(3) 分布式系统

把应用服务器(Tomcat)和数据库服务器(MySQL)部署在不同的服务器上,Tomcat 和 MySQL 之间的沟通通过网络进行。


三、分布式协调服务(以 ZooKeeper 为例)

在这里插入图片描述
上图,客户端若想访问秒杀服务,需要知道有那些秒杀服务器可访问;需要知道秒杀服务的动态变化(那些服务器宕机了,那些新的服务器上线了)
但实际上,客户端是没有必要知道服务器的状态的。

ZooKeeper 在分布式系统中充当协调者的角色,帮助客户端和分布式服务之间进行沟通,保证系统的正常运行。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张国庆Jagochan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值