微服务自动化管理初步认识与使用

目录

一、ETCD

1.1、ETCD简介

对于实施工程师:

1.2、特点

1.3. 使用场景

1.4、 关键字

1.5 工作原理

二、ETCD的安装

2.1、下载路径

2.2、介绍

2.3、具体操作

 安装服务端

安装etcd客户端

测试

三、ETCD使用

 3.1、前奏具体操作

3.2、 常用操作


一、ETCD

1.1、ETCD简介

etcd是一个开源的分布式键值存储系统(数据库),通常用于在分布式系统中存储配置信息、元数据等。它是由CoreOS开发的,基于Raft一致性算法实现高可用性和一致性。etcd提供简单的HTTP API,使得应用程序可以方便地读写存储在其中的键值数据。在Kubernetes等容器编排平台中,etcd通常用于存储集群状态信息。

是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。

干什么的:是数据库存储数据,监听状态

对于实施工程师:

服务注册于发现,可以做不同宿主机,里面容器互相通信,因为现在服务器不同了一个是Linux一个是Windows他们两通信,所有需要借助etcd完成

1.2、特点

1. 一致性:etcd使用Raft一致性算法来保证集群中数据的一致性,确保数据的可靠性和正确性。

2. 高可用性:etcd支持自动选举和故障转移,即使部分节点故障,集群仍然可以正常运行,保证系统的高可用性。

3. 高性能:etcd使用Go语言编写,具有高效的读写性能,适用于需要快速响应的应用场景。

4. 安全性:etcd支持SSL/TLS加密传输,可以保护数据在网络传输中的安全,同时支持访问控制和认证机制,确保数据的安全性。

5. 简单易用:etcd提供了简单的HTTP API和命令行工具,方便用户进行数据的读写和管理,降低了系统的维护成本。

1、简单的接口,通过标准的HTTP API进行调用,也可以使用官方提供的 etcdctl 操作存储的数据(通信使用)

2、键值对存储

3、有监听机制,可以监听特定键的变化,并作出响应

总的来说,etcd是一个可靠、高效、安全且易用的分布式键值存储系统,适用于构建分布式系统和微服务架构。

监控机制类似之前抖音: 发一个视频----->发消息到注册中心----->监听节点方式变化任务

1.3. 使用场景

  • 服务发现(Service Discovery)(一需要mysql服务,一个找mysql服务,所有他们会去中心找)
  • 消息发布与订阅
  • 负载均衡(多个人找)
  • 分布式通知与协调
  • 分布式锁

1.4、 关键字

Raft:etcd所采用的保证分布式系统强一致性的算法。
Node:一个Raft状态机实例。
Member: 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
Cluster:由多个Member构成可以协同工作的etcd集群。
Peer:对同一个etcd集群中另外一个Member的称呼。
Client: 向etcd集群发送HTTP请求的客户端。
WAL:预写式日志,etcd用于持久化存储的日志格式。
snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
Proxy:etcd的一种模式,为etcd集群提供反向代理服务。
Leader(领导者):Raft算法中通过竞选而产生的处理所有数据提交的节点。
Follower(跟随者):竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证。
Candidate:当Follower超过一定时间接收不到Leader的心跳时转变为Candidate开始Leader竞选。
Term:某个节点成为Leader到下一次竞选开始的时间周期,称为一个Term。
Index:数据项编号。Raft中通过Term和Index来定位数据。

1.5 工作原理


第1部分是HTTP Server: 用于处理用户发送的API请求,以及其它etcd节点的同步与心跳信息请求
第2部分是Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现
第3部分是Raft:Raft强一致性算法的具体实现,是etcd的核心
第4部分是WAL:Write Ahead Log(预写式日志),是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。
在WAL中,所有的数据提交前都会事先记录日志。Snapshot是为了防止数据过多而进行的状态快照;Entry表示存储的具体日志内容

二、ETCD的安装

2.1、下载路径

  • etcd项目地址:https://github.com/coreos/etcd/
  • etcd下载地址:https://github.com/etcd-io/etcd/releases 根据需要查找对应版本下载即可

2.2、介绍

  • etcd在生产环境中一般推荐集群方式部署
  • etcd使用的2个默认端口号:2379和2380
    2379:用于客户端通信(类似于sqlserver的1433/oracle的1521/mysql的3306)
    2380:用于与集群中的Peer通信
  • 因为etcd是go语言编写的,安装只需要下载对应的二进制文件,并放到合适的路径就行。

2.3、具体操作

1、 创建etc存放路径并切换到下载目录

mkdir /usr/local/mytools && cd /usr/local/mytools

 mytools放etcd工具----安装包

&&:同时执行多个命令

2、下载安装包,并存放到目录上

wget https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz 

下载比较慢

3、解压文件到当前目录

 tar xzvf etcd-v3.4.3-linux-amd64.tar.gz

4、进入解压后的文件,查看内容

切换至etcd根目录,运行查看命令ls,里面会有一些文档和2个二进制文件etcd和etcdctl。etcd是server端,etcdctl是客户端

cd etcd-v3.4.3-linux-amd64 && ls

 安装服务端

5、复制到bin,--------------------就安装服务端好了

将etcd和etcdctl二进制文件复制到/usr/local/bin目录, 这样系统中可以直接调用etcd/etcdctl这两个程序

bin:二进制文件

cp etcd etcdctl /usr/local/bin

etcd启动市数据含义 

1.name表示节点名称,默认为default。

2.data-dir 保存日志和快照的目录,默认为当前工作目录default.etcd/目录下。

3.在http://localhost:2380和集群中其他节点通信。

4.在http://localhost:2379提供客户端交互。

5.heartbeat为100ms,该参数的作用是leader多久发送一次心跳到followers,默认值是100ms。

6.election为1000ms,该参数的作用是重新投票的超时时间,如果follow在该时间间隔没有收到心跳包,会触发重新投票,默认为1000ms。

7.snapshot count为10000,该参数的作用是指定有多少事务被提交时,触发截取快照保存到磁盘。

8.集群和每个节点都会生成一个uuid。

9.启动的时候会运行raft,选举出leader

6、查看etcd版本

etcd --version

安装etcd客户端

注意:etct3.4.3默认使用v3命令所以步骤7可省略,之前版本此步骤不可少,例如:v3.3.10

1、配置环境变量

#编辑配置文件
vi /etc/profile

加的内容:

# 最后一行指定etcdctl命令的版本为v3
export ETCDCTL_API=3

i进入编辑模式,ESC :wq退出并保存

2、 刷新环境变量 


source /etc/profile


#查看当前etcdctl的版本信息
#v2版本命令和v3命令是不一样的,例如:
#v2查看版本号
etcdctl -version或 etcdctl -v
#v3查看版本号
etcdctl version
# 更多命令帮助可以查询
etcdctl --help  

测试

#v3查看版本号
etcdctl version

三、ETCD使用

 3.1、前奏具体操作

  1. 建立两个etcd相关目录(即数据文件和配置文件的保存位置,类似mysql里面的data文件夹)
    /etc目录是整个Linux系统的中心,其中包含所有系统管理和维护方面的配置文件,所以etcd的配置也放在这里

1、创建文件夹

创建新的:因为etcd做一个数据库,默认之前安装的服务,不去指定存储路径,所有需要做配置,重新做一个新的etcd服务,所有只具备存储数据功能

mkdir -p /var/lib/etcd/ && mkdir -p /etc/etcd/

lib存数据,etc放配置文件夹 

2、切换到目录中,创建etcd配置文件

cd /etc/etcd/

3、重命名

 配置文件名必须叫etcd.conf

mv etcd-单机版.conf  etcd.conf

4、做成服务

cd /etc/systemd/system

 

5、服务重命名

  配置文件名必须叫etcd.service

mv etcd-单机版.service  etcd.service

7、重新加载systemd服务

systemctl daemon-reload

  

8、设置开机自启动

systemctl enable etcd

9、查看etcd运行状态

systemctl status etcd

10、启动etcd 

systemctl start etcd

 

其他操作:

停止服务
systemctl stop etcd

重启etcd
systemctl restart etcd
 

3.2、 常用操作

1、 如何获取帮助

etcdctl -h

2、put把值放到键里 

etcdctl put /testdir/testkey "Hello world"

 testdir---键

"Hello world"-----值

支持的选项包括
--ttl '0' 该键值的超时时间(单位为秒),不配置(默认为0)则永不超时
--swap-with-value value 若该键现在的值是value,则进行设置操作
--swap-with-index '0' 若该键现在的索引值是指定索引,则进行设置操作

3、get通过键获取值

etcdctl get /testdir/testkey

--sort 对结果进行排序
--consistent 将请求发给主节点,保证获取内容的一致性。

4、del删除

# 清空数据--清除所有
etcdctl del / --prefix#删除所有/test前缀的节点----清除指定的
etcdctl del /test --prefix

 

5、watch监听

#1. 增加一个key,(客户端窗口1)
etcdctl put key1 "hello"

#2. 打开一个新的客户端窗口2,监听key1的变化
etcdctl watch key1#3. 回到窗口1,向key1 中put新值
etcdctl put key1 "hello work"# 4. 此时可以在窗口2中看到监听输出# 查看版本信息
curl http://127.0.0.1:2379/version

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

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

相关文章

ROS——Ubuntu环境搭建

Ubuntu安装 首先下载 Ubuntu 的镜像文件,链接如下:ubuntu-releases-20.04安装包下载_开源镜像站-阿里云ubuntu-releases-20.04安装包是阿里云官方提供的开源镜像免费下载服务,每天下载量过亿,阿里巴巴开源镜像站为包含ubuntu-releases-20.04…

【Android 内存优化】KOOM 快手开源框架线上内存监控方案-源码剖析

文章目录 前言OOMMonitorInitTask.INSTANCE.initOOMMonitor.INSTANCE.startLoopsuper.startLoopcall() LoopState.Terminate dumpAndAnalysisdumpstartAnalysisService回到startLoop方法总结 前言 这篇文章主要剖析KOOM的Java层源码设计逻辑。 使用篇请看上一篇: 【Android …

使用阿里云服务器搭建网站简单吗?超简单教程

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

Pytorch学习 day08(最大池化层、非线性激活层、正则化层、循环层、Transformer层、线性层、Dropout层)

最大池化层 最大池化,也叫上采样,是池化核在输入图像上不断移动,并取对应区域中的最大值,目的是:在保留输入特征的同时,减小输入数据量,加快训练。参数设置如下: kernel_size&#…

Linux网络基础2之协议

(。・∀・)ノ゙嗨!你好这里是ky233的主页:这里是ky233的主页,欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 1.协议 1.序列化与反序列换 2.协议定制 二…

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记10 - STM32的SDIO学习2

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记10 - STM32的SDIO学习2 一、问题回顾二、本次的任务三、 需要注意的问题3.1 Card Identification Mode时的时钟频率3.2 CMD0指令的疑似问题3.3 发送带参数的ACMD41时要注意时间时序和时效3.4 CPSM的指令发送问题3.5 调试过程中的SD卡的…

linuxOPS基础_linux系统注意事项

Linux严格区分大小写 Linux 和Windows不同,Linux严格区分大小写的,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如,Win7 系统桌面上有文件夹叫做Test,当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…

R统计学2 - 数据分析入门问题21-40

往期R统计学文章: R统计学1 - 基础操作入门问题1-20 21. 如何对矩阵按行 (列) 作计算? 使用函数 apply() vec 1:20 # 转换为矩阵 mat matrix (vec , ncol4) # [,1] [,2] [,3] [,4] # [1,] 1 6 11 16 # [2,] 2 7 12 17 # [3,] …

嵌入式Linux串口和 poll() 函数的使用

一、poll() 函数的介绍 poll() 函数用于监控多个文件描述符的变化的函数。它可以用来检查一个或多个文件描述符的状态是否改变,比如是否可读、可写或有错误发生。它常用于处理 I/O 多路复用,这在需要同时处理多个网络连接或文件操作时非常有用。 头文件…

CentOS 7.6安装部署Seafile服务器

今天飞飞和你们分享CentOS 7.6上安装基于MySQL/MariaDB的Seafile服务器的方法,包括下载和安装7.0.5版本、配置数据库、启动服务器等步骤。安装成功后,需要通过nginx反向代理才能访问seafile服务。 通过预编译好的安装包来安装并运行基于 MySQL/MariaDB …

高吞吐SFTP连接池设计方案

背景 在现代的数据驱动环境中,安全文件传输协议(SFTP)扮演着至关重要的角色,它提供了一种安全、可靠的文件传输方式。我们目前项目是一个大型数据集成平台,跟上下游有很多文件对接是通过SFTP协议,当需要处…

果蔬作物疾病防治系统|基于Springboot的果蔬作物疾病防治系统设计与实现(源码+数据库+文档)

果蔬作物疾病防治系统目录 目录 基于Springboot的果蔬作物疾病防治系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、果蔬百科列表 2、公告信息管理 3、公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

【蓝桥·算法双周赛】第七场分级赛——小白入门赛

2.霓虹【算法赛】 - 蓝桥云课 (lanqiao.cn) st数组用来存第i个位置&#xff0c;这个字母有没有编号j #include<bits/stdc.h> const int N1e610; using lllong long; std::map<std::string,std::string> mp;std::string a,aa; int st[N][10];// int stt[N][10];//对…

Qt 拖动事件

文章目录 1 自定义控件 TextEdit2 实现打开文件功能3 实现鼠标滚轮放大字体 QEvent::DragEnter 当拖动文件进入到窗口/控件中时&#xff0c;触发该事件&#xff0c;它对应的子类是QDragEnterEvent QEvent::DragLeave 当拖动文件离开窗口/控件时&#xff0c;触发该事件&#xff…

WordPress高端后台美化WP Adminify Pro优化版

后台UI美化WP Adminify Pro修改自定义插件&#xff0c;适合建站公司和个人使用&#xff0c;非常高大上&#xff0c;下载地址&#xff1a;WP Adminify Pro优化版 修复记录&#xff1a; 1、修复已知BUG 2、修复手机版兼容问题 3、修复打开速度&#xff0c;原版打开速度太慢 4…

自动裁剪人脸:简化你的数字人素材准备

在做数字人时,需要对采集的数据进行预处理,然后才能进行模型训练, 预处理常用的操作有:去背景 音频重采样 视频裁剪 音频特征提取等等,今天我们来分享一个自动化脚本: 对原图/视频进行人脸检测并根据目标尺寸以人脸为中心进行裁剪. 目录 1. 效果 2. 对图片进行裁剪 3.对视频…

DeepLearning in Pytorch|共享单车预测NN详解(思路+代码剖析)

目录 概要 一、代码概览 二、详解 基本逻辑 1.数据准备 2.设计神经网络 初版 改进版 测试 总结 概要 原文链接&#xff1a;DeepLearning in Pytorch|我的第一个NN-共享单车预测 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用…

umi4 项目使用 keepalive 缓存页面(umi-plugin-keep-alive、react-activation)

umi4使用keepalive 配置文件config\config.ts export default defineConfig({plugins: [umi-plugin-keep-alive], });安装add umi-plugin-keep-alive yarn add umi-plugin-keep-alive页面 A import { KeepAlive, history, useAliveController } from umijs/max; const Page…

CSAPP Malloc lab

CSAPP Malloc Lab 目标 实现一个简单的动态存储分配器。 评分标准 空间利用率应当减少internal 和 external fragmentation. memory utilization memory utilization payload / heap size fragmentation internal fragmentation external fragmentation throughput T 越接…

【深度学习笔记】6_9 深度循环神经网络deep-rnn

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 6.9 深度循环神经网络 本章到目前为止介绍的循环神经网络只有一个单向的隐藏层&#xff0c;在深度学习应用里&#xff0c;我们通常会用…