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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 一个 SpringBoot 项目(apple.jar)被部署到了服务器上运行。可向其发送网络请求获取网络资源。随着请求数量的逐渐增多,服务器宕机(死机)的可能性也越来越高。 若一个服务器宕机会导致该服务器上的某个系统直接无法被访问,则不是高可用的项目,便产生了单点故障。单点故障:服务器与项目共生。服务器生,项目活;服务器挂,项目死。

一、系统高可用(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 在分布式系统中充当协调者的角色,帮助客户端和分布式服务之间进行沟通,保证系统的正常运行。

在这里插入图片描述

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
20天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
32 2
|
2月前
|
监控 Dubbo 前端开发
快速入门分布式系统与Dubbo+zookeeper Demo
快速入门分布式系统与Dubbo+zookeeper Demo
41 0
|
2月前
|
监控 NoSQL Java
Zookeeper分布式锁
Zookeeper分布式锁
90 1
|
2月前
|
存储 关系型数据库 MySQL
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
【分布式和微服务1】一篇文章详细了解分布式和微服务的基本概念
106 0
|
8天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
9天前
|
存储 Linux 开发工具
Git 分布式版本控制系统基本概念和操作命令
Git 分布式版本控制系统基本概念和操作命令
27 0
|
13天前
|
存储 负载均衡 网络协议
ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
【4月更文挑战第10天】ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
41 1
|
21天前
|
Java 网络安全 Apache
搭建Zookeeper集群:三台服务器,一场分布式之舞
搭建Zookeeper集群:三台服务器,一场分布式之舞
38 0
|
存储 传感器 数据管理
【软件设计师备考 专题 】面向对象数据库和分布式对象:理解新的数据管理概念
【软件设计师备考 专题 】面向对象数据库和分布式对象:理解新的数据管理概念
54 0
|
3月前
|
存储 分布式计算 负载均衡
浅谈分布式共识算法概念与演进
浅谈分布式共识算法概念与演进
43 0