微服务实战系列之ZooKeeper(上)

news2024/12/23 13:23:22

前言

历经1个多月的创作和总结,纵观博主微服务系列博文,大致脉络覆盖了以下几个方面:

  1. 数据方面(缓存&安全)
    比如Redis、MemCache、Ehcache、J2cache(两级缓存框架)、RSA加密、Sign签名…
  2. 传输方面(消息系统)
    MQ、通信基础
  3. 服务方面(支撑服务)
    Feign、Token、Sentinel、Nacos、Gateway

显然,我们可以观察到,如果只有这些工具或组件,还不足以支撑一个中型微服务系统。

如此,今天博主继续拉新,谈一谈 ZooKeeper 是怎么回事,为什么我们有时候对它望而生畏而又难以割舍呢?
在这里插入图片描述
我们一起走进今天的话题,请各位盆友紧随博主,以防迷路。

走进ZooKeeper

ZooKeeperis a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.

翻译成大白话:
ZooKeeper 是一个“中央处理器”,主要面向配置管理与维护目录服务分布式集群服务提供相关能力和支持。

一、配置管理

提到Zookeeper的配置管理,我们是不是立刻可以想到另外一个工具:Nacos?对了,Nacos也可以管理配置,实现热部署。那么ZooKeeper 又是怎么回事?

首先这里的配置比较泛泛而谈,可以见到理解为一段文本或一个服务信息等等。比如我们经典的dubbo,使用ZooKeeper作为注册中心,其实利用了它的该特点,也充当了“配置或服务管理员”的角色。

在这里插入图片描述
每个Client(客户端)初始化时,会向ZooKeeper注册一个Watcher,通过它实现监听与同步,最终完成配置或服务的一致性管理。

二、目录和命名管理

目录和命名服务又是什么?是否可以立刻联想到JNDI(Java Naming and Directory Interface,Java命名和目录接口)?,当年大名鼎鼎SUN提供的一整套命名服务API,为J2EE的建设立下了汗马功劳。

比如我们常见的datasource 配置就是典型的JNDI服务:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
	<local-tx-datasource>
		  <jndi-name>myds-msql</jndi-name>
		  <connection-url>jdbc:mysql://localhost:3306/test</connection-url>
		  <driver-class>com.mysql.jdbc.Driver</driver-class>
		  <user-name>root</user-name>
		  <password>123456</password>
	</local-tx-datasource>
</datasources>

那么ZooKeeper又是怎么设计的呢?请转向下图:
在这里插入图片描述
ZooKeeper提供了一种 树形 结构的数据存储方式。这样做的好处是在分布式环境下,实现全局唯一性。
在这里插入图片描述

我们可以提前把各种服务、各种地址、各种目录,比如地址信息以数据存储于ZooKeeper中。在使用的时候,只需从中读取即可,原理与JNDI类似。

统一命名的含义,可以理解为对一个服务转为一个代号。比如我们经常使用的域名,其实就是对某个主机IP的“翻译”

三、分布式集群

谈到分布式,其实我们实现微服务就是为了分布式部署和运行。ZooKeeper作为分布式的利器,主要体现在强大的集群运行能力。

博主首选带着各位盆友看一下,集群是如何运行的:

在这里插入图片描述

这是官方提供的ZooKeeper集群运行示意图。从上图我们可以看到,ZooKeeper集群并非采用Master-Slave模式,而是采用了Leader-Follower模式。上图中除了标识为“Leader(领袖)”的Server节点外,其他Server均为“Follower(随从)”。当然还有另外一种角色是“Observer(观察员)”,我们后面再讲它。

当然Zookeeper集群中,哪个节点应该做领袖,哪个节点应该是随从,说来话长,且听下回分解。


结语

通过以上总结性叙述,博主简单介绍了ZooKeeper具备的核心能力。当然它还具备一些非主打的特性,在这里就不再详细展开了。

此刻,博主不禁感慨:离开了ZooKeeper,分布式将变的困难的多;离开了分布式,微服务也将黯然失色。

好了,ZooKeeper第一篇到此为止,希望对各位盆友有所帮助,GoodNight!


历史回顾

  • 微服务实战系列之MQ
  • 微服务实战系列之通信
  • 微服务实战系列之J2Cache
  • 微服务实战系列之Cache(技巧篇)
  • 微服务实战系列之MemCache
  • 微服务实战系列之EhCache
  • 微服务实战系列之Redis
  • 微服务实战系列之Cache
  • 微服务实战系列之Nginx(技巧篇)
  • 微服务实战系列之Nginx
  • 微服务实战系列之Feign
  • 微服务实战系列之Sentinel
  • 微服务实战系列之Token
  • 微服务实战系列之Nacos
  • 微服务实战系列之Gateway
  • 微服务实战系列之加密RSA
  • 微服务实战系列之签名Sign

在这里插入图片描述

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

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

相关文章

【LSM tree 】Log-structured merge-tree 一种分层、有序、面向磁盘的数据结构

文章目录 前言基本原理读写流程写流程读流程 写放大、读放大和空间放大优化 前言 LSM Tree 全称是Log-structured merge-tree, 是一种分层&#xff0c;有序&#xff0c;面向磁盘的数据结构。其核心原理是磁盘批量顺序写比随机写性能高很多&#xff0c;可以通过围绕这一原理进行…

Redis 的常见使用场景

01 缓存 作为 Key-Value 形态的内存数据库&#xff0c;Redis 最先会被想到的应用场景便是作为数据缓存。而使用 Redis 缓存数据非常简单&#xff0c;只需要通过 string 类型将序列化后的对象存起来即可&#xff0c;不过也有一些需要注意的地方&#xff1a; 必须保证不同对象的…

面对.mkp病毒:专业咨询,文件恢复,帮您应对.mkp病毒

引言&#xff1a; 近期&#xff0c;网络上出现了一种新型的勒索病毒&#xff0c;被称为.halo。这种威胁采用高度复杂的加密算法&#xff0c;将用户的数据文件锁定&#xff0c;并要求支付赎金以解锁。本文将介绍.halo勒索病毒的特征、应对方法&#xff0c;以及如何预防此类攻击…

RabbitMQ插件详解:rabbitmq_web_stomp【RabbitMQ 六】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 《RabbitMQ Web STOMP&#xff1a;打破界限的消息传递之舞》 前言STOMP协议简介STOMP&#xff08;Simple Text Oriented Messaging Protocol&#xff09;协议简介STOMP与WebSocket的关系 WebSocket和R…

云原生之深入解析Kubernetes中服务的性能

一、Pyroscope 简介 ① 什么是 Pyroscope&#xff1f; 开发人员通常需要查看生产应用程序中的性能瓶颈以确定问题的原因&#xff0c;为此通常需要可以通过日志和代码工具收集的信息。不幸的是&#xff0c;这种方法通常很耗时&#xff0c;并且不能提供有关潜在问题的足够详细信…

PR模板,漂亮的文字帖子视频模板,方形标题PR项目工程文件下载

Premiere Pro模板&#xff0c;具有6个方形设计PR视频帖子标题文字PR项目工程文件。使用附带的颜色控制器调整和修改颜色&#xff0c;与您自己的品牌相匹配。使用这些效果来增强视频画面。包括视频教程。 适用软件&#xff1a;PR2019 | 分辨率&#xff1a;10801080&#xff08;方…

Android APP 常见概念与 adb 命令

adb 的概念 adb 即 Android Debug Bridge 。在窗口输入 adb 即可显示帮助文档。adb 实际上就是在后台开启一个 server&#xff0c;会接收 adb 的命令然后帮助管理&#xff0c;控制&#xff0c;查看设备的状态、信息等&#xff0c;是开发、测试 Android 相关程序的最常用手段。…

第P7周:咖啡豆识别(VGG-16复现)

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/rbOOmire8OocQ90QM78DRA) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** 一、前期工作 import …

Linux 常用命令----mktemp 命令

文章目录 基本用法实例演示高级用法注意事项 mktemp 命令用于创建一个临时文件或目录&#xff0c;这在需要处理临时数据或进行安全性测试时非常有用。使用 mktemp 可以保证文件名的唯一性&#xff0c;避免因文件名冲突而导致的问题。 基本用法 创建临时文件: 命令 mktemp 默认…

【IC验证】perl脚本——分析前/后仿用例回归情况

目录 1 脚本名称 2 脚本使用说明 3 nocare_list文件示例 4 脚本执行方法 5 postsim_result.log文件示例 6 脚本代码 1 脚本名称 post_analysis 2 脚本使用说明 help&#xff1a;打印脚本说明信息 命令&#xff1a;post_analysis help 前/后仿结束后&#xff0c;首先填…

餐饮品牌小红书探店怎么做?建议收藏

对于餐饮行业来说&#xff0c;消费者的口味和选择越来越多样化&#xff0c;如何在众多竞争者中脱颖而出&#xff0c;成为消费者的心头好&#xff0c;探店活动便应运而生。小红书作为国内知名的社交电商平台&#xff0c;拥有庞大的用户群体&#xff0c;特别是年轻人和美食爱好者…

多域名https证书购买选择

多域名https证书是一种特殊的SSL证书&#xff0c;它允许一个证书同时保护多个域名&#xff0c;并且不限制域名的类型&#xff0c;可以保护多个域名和子域名&#xff0c;确保网站传输信息时不被窃取、篡改。那么我们该怎么选择符合需求的多域名https证书呢&#xff1f;今天就随S…

Python神器:快速删除文本文件中指定行的方法

1. 简介 文件操作是编程中的重要方面。Python作为强大的编程语言&#xff0c;提供了处理文件的能力。删除特定行是文件处理中常见的需求。 2. 打开文件和读取内容 当打开文件并读取其内容时&#xff0c;open()函数和with语句是Python中常用的工具。以下是展示如何使用它们的…

由@EnableWebMvc注解引发的Jackson解析异常

同事合了代码到开发分支&#xff0c;并没有涉及到改动的类却报错。错误信息如下&#xff1a; Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.conv…

第1章:企业级研发测试流程

通过实际&#xff08;自研互联网&#xff09;企业的研发流程一览图。 我们发现分为9个阶段&#xff0c;当然每个公司细节并不一样。 所以我希望你能理解这句话&#xff1a; 一切的流程、行为、结果都是围绕“产品质量”这4个字开展活动。而作为测试&#xff0c;你该考虑的是如何…

数据结构与算法—查找算法(线性查找、二分查找、插值查找、斐波那契查找)

查找算法 文章目录 查找算法1. 线性查找算法2. 二分查找算法2.1 二分查找思路分析2.2 应用实例 3. 插值查找3.1 基本原理3.2 应用实例 4. 斐波那契4.1 基本原理4.2 应用实例 5. 查找总结 在java中&#xff0c;常用的查找有四种&#xff1a; 顺序(线性)查找二分查找/折半查找插值…

JS基本语法

JS基本语法 变量数据类型原始数据类型 函数定义第一种方式第二种方式 JS 对象ArrayStringJavaScript 自定义对象JSONDOMBOM JS 事件事件监听事件绑定常见事件 变量 数据类型 原始数据类型 函数定义 第一种方式 第二种方式 JS 对象 Array String JavaScript 自定义对象 JSON …

2023版本QT学习记录 -2- 标准文件对话框

头文件的使用 #include "QFileDialog"函数原型 getOpenFileName效果 参数 未完待续

电阻的运用

本文引注 https://baijiahao.baidu.com/s?id1749115196647029942&wfrspider&forpc 一、零欧电阻 在电子电路设计时经常用到的一种元件就是电阻&#xff0c;我们都知道电阻在电路中起到分压限流的作用。然而&#xff0c;实际使用时会用到一种特殊的电阻&#xff1a;零…

3ds max软件中的一些常用功能分享!

3ds max软件有很多小伙伴反馈说&#xff0c;明明有很多3ds max教程资料。却不知道如何入门3dmax。 掌握3dmax基本功能是开始使用3dmax的基础之一&#xff0c;所以&#xff0c;小编带大家盘点一下3dmax常用操作。 3dmax常用功能介绍如下&#xff0c;快快跟着小编一起看起来。 1…