K8S核心组件etcd详解(上)
1 介绍
https://etcd.io/docs/v3.5/
etcd是一个高可用的分布式键值存储系统,是CoreOS(现在隶属于Red Hat)公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据,并使用Raft协议实现了分布式一致性。etcd广泛应用于Docker、Kubernetes等分布式系统中,用于存储配置信息、服务发现、领导者选举等方面。
2 etcd高可用集群部署
2.1 服务器配置
主机名 | ip地址 | cpu数量 | 内存数量 |
---|---|---|---|
etcd1 | 172.18.101.39 | 4 | 8 |
etcd2 | 172.18.101.40 | 4 | 8 |
etcd3 | 172.18.101.41 | 4 | 8 |
2.2 部署etcd集群
安装包下载地址
https://github.com/etcd-io/etcd/tags
以下操作在三个etcd节点上进行
[root@etcd-1 ~]# wget https://github.com/etcd-io/etcd/releases/download/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz [root@etcd-1 ~]# tar xvf etcd-v3.4.27-linux-amd64.tar.gz [root@etcd-1 ~]# mv etcd-v3.4.27-linux-amd64/etcd* /usr/local/bin/ ##复制etcd命令文件 [root@etcd-1 ~]# mkdir -p /var/lib/etcd/ ##创建数据存放目录 [root@etcd-1 ~]# mkdir -p /etc/etcd ##创建配置文件存放目录
三个节点设置etcd配置文件,三个节点的防火墙要放行2379及2380端口
#etcd节点1 [root@etcd-1 ~]# cat /etc/etcd/etcd.conf ETCD_NAME=etcd1 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.39:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.39:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.39:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.39:2379"#etcd节点2 [root@etcd-2 ~]# cat /etc/etcd/etcd.conf ETCD_NAME=etcd2 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.40:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.40:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.40:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.40:2379"#etcd节点3 [root@etcd-3 ~]# cat /etc/etcd/etcd.conf ETCD_NAME=etcd3 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.41:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.41:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.41:2379"
-
ETCD_NAME
:指定ETCD节点的名称。每个节点在集群中应具有唯一的名称,以便进行识别和通信。 -
ETCD_DATA_DIR
:指定ETCD存储数据的目录路径。ETCD使用此目录来持久化存储数据。 -
ETCD_LISTEN_PEER_URLS
:指定ETCD节点监听对等节点连接的URL。对等URL用于节点之间的通信和数据同步。 -
ETCD_LISTEN_CLIENT_URLS
:指定ETCD节点监听客户端连接的URL列表。客户端URL用于与ETCD集群进行交互,例如执行读取或写入操作。 -
ETCD_INITIAL_ADVERTISE_PEER_URLS
:指定ETCD节点初始公告对等节点连接的URL。当新节点加入集群时,将向其他节点宣告自己的URL,以便其他节点可以找到并连接到它。 -
ETCD_INITIAL_CLUSTER
:指定ETCD集群的初始成员列表及其对等节点连接URL。每个成员由名称和对等节点连接URL组成,用逗号分隔。在启动集群时,指定初始成员列表用于插入新节点。 -
ETCD_INITIAL_CLUSTER_STATE
:指定ETCD集群的初始状态。可选值为"new"和"existing"。"new"表示创建一个新的集群,"existing"表示已经存在的集群。 -
ETCD_INITIAL_CLUSTER_TOKEN
:指定ETCD集群的初始令牌。所有成员在启动时应使用相同的令牌,以便它们可以识别和加入相同的集群。 -
ETCD_ADVERTISE_CLIENT_URLS
:指定ETCD节点公告给客户端的连接URL。客户端连接URL用于向应用程序或工具公开ETCD节点,以便进行读取和写入操作。
配置systemd管理etcd,三个节点配置相同
[root@etcd-1 ~]# cat /usr/lib/systemd/system/etcd.service [Unit] Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target[Service] User=root Type=notify EnvironmentFile=-/etc/etcd/etcd.conf ExecStart=/usr/local/bin/etcd Restart=on-failure RestartSec=10s LimitNOFILE=40000[Install] WantedBy=multi-user.target
三个节点上启动服务
[root@etcd-1 ~]# systemctl enable etcd [root@etcd-1 ~]# systemctl start etcd
2.3 部署后集群状态检查
2.3.1 查看集群成员
[root@etcd-1 ~]# etcdctl member list ##列出集群成员 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false 9f9b71960dcb7180, started, etcd3, http://172.18.101.41:2380, http://172.18.101.41:2379, false [root@etcd-1 ~]# etcdctl -w table endpoint status --endpoints=172.18.101.39:2379,172.18.101.40:2379,172.18.101.41:2379 ##查看集群leader是哪个节点 +--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | 172.18.101.39:2379 | 9a04401d57e3afba | 3.4.27 | 20 kB | true | false | 123 | 14 | 14 | | | 172.18.101.40:2379 | 916281517eb238d9 | 3.4.27 | 20 kB | false | false | 123 | 14 | 14 | | | 172.18.101.41:2379 | 9f9b71960dcb7180 | 3.4.27 | 20 kB | false | false | 123 | 14 | 14 | | +--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
2.3.2 查看集群成员的健康状态
[root@etcd-1 ~]# etcdctl -w table endpoint health --endpoints=172.18.101.39:2379,172.18.101.40:2379,172.18.101.41:2379 +--------------------+--------+------------+-------+ | ENDPOINT | HEALTH | TOOK | ERROR | +--------------------+--------+------------+-------+ | 172.18.101.39:2379 | true | 2.190331ms | | | 172.18.101.41:2379 | true | 2.517434ms | | | 172.18.101.40:2379 | true | 3.06371ms | | +--------------------+--------+------------+-------+
3 某个节点异常如何处理
-
使用命令移除节点
-
删除异常节点数据目录
-
重新将节点添加至集群
3.1 移除节点
假设etcd3出现了异常
[root@etcd-1 ~]# etcdctl member list ##第一列为节点的id 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false 9f9b71960dcb7180, started, etcd3, http://172.18.101.41:2380, http://172.18.101.41:2379, false [root@etcd-1 ~]# [root@etcd-1 ~]# etcdctl member remove 9f9b71960dcb7180 ##通过节点的id将节点删除 Member 9f9b71960dcb7180 removed from cluster 8356fccf618a037f [root@etcd-1 ~]# etcdctl member list 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false
3.2 删除异常节点的数据目录
[root@etcd-3 ~]# rm -rf /var/lib/etcd [root@etcd-3 ~]# cat /etc/etcd/etcd.conf ##修改ETCD_INITIAL_CLUSTER_STATE为exsiting ETCD_NAME=etcd3 ETCD_DATA_DIR="/var/lib/etcd" ETCD_LISTEN_PEER_URLS="http://172.18.101.41:2380" ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://172.18.101.41:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER="etcd1=http://172.18.101.39:2380,etcd2=http://172.18.101.40:2380,etcd3=http://172.18.101.41:2380" ETCD_INITIAL_CLUSTER_STATE="existing" ##修改为existing ETCD_INITIAL_CLUSTER_TOKEN="singless" ETCD_ADVERTISE_CLIENT_URLS="http://172.18.101.41:2379"
3.3 将节点添加至集群
[root@etcd-1 ~]# etcdctl member add etcd3 --peer-urls=http://172.18.101.41:2380 Member 51fc8f5f71060fdc added to cluster 8356fccf618a037f [root@etcd-1 ~]# etcdctl member list ##可以看到节点添加后处于一个未启动的状态,需要手动去etcd-3节点上启动一下etcd服务 51fc8f5f71060fdc, unstarted, , http://172.18.101.41:2380, , false 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false
在etcd-3上启动服务即可
[root@etcd-3 ~]# systemctl start etcd [root@etcd-1 ~]# etcdctl member list ##重新添加后,节点的id会变,属于正常现象 51fc8f5f71060fdc, started, etcd3, http://172.18.101.41:2380, http://172.18.101.41:2379, false 916281517eb238d9, started, etcd2, http://172.18.101.40:2380, http://172.18.101.40:2379, false 9a04401d57e3afba, started, etcd1, http://172.18.101.39:2380, http://172.18.101.39:2379, false
4 etcdctl增删改查操作
https://github.com/etcd-io/etcd/tree/main/etcdctl
etcdctl
是用于与 ETCD 进行交互的命令行工具,它提供了一系列命令和选项,用于检索、设置、修改和删除 ETCD 中的数据。
4.1 etcd的数据存储模型
前面介绍过,etcd是一个分布式的键值存储系统。etcd在键的组织上采用了层次化的空间结构,类似于文件系统中目录的概念。但是并不存在目录的那种层级关系。
例如现在
类似于文件系统中的目录(文件夹)结构,ETCD的命名空间允许以键的层次结构来组织数据,并且每个键可以唯一地标识一个节点。顶层节点被称为根节点,然后可以在根节点下创建子节点,子节点又可以包含更多子节点,以此类推。这种层次化的结构可以用于将数据进行分类、分类和组织。
例如,假设我们有以下目录结构:
-
/singless/test
-
/singless/test/gender
在上述示例中/singless/test
和/singless/test/gender
,有类似于目录一样的共同的索引前缀/
和/singless
,但是并不存在目录的那种层级关系。它们都可以作为一个key存储相应的value。
4.2 增和改
增加数据和修改数据需要用到put命令进行操作
[root@etcd-1 ~]# etcdctl put /singless/test/gender male ##创建一个键/singless/test/gender,值为male OK [root@etcd-1 ~]# etcdctl put /singless/test true ##创建一个键/singless/test,值为test OK
4.3 查询操作
查询操作需要使用到get参数
[root@etcd-1 ~]# etcdctl get /singless/test/gender ##根据具体的key查询对应的值 /singless/test/gender male [root@etcd-1 ~]# etcdctl get --prefix / ##根据索引前缀查询,这里查询的是以/为前缀的key、value,所以能看到所有的键值对 /singless/test true /singless/test/gender male [root@etcd-1 ~]# etcdctl put /singless/test false ##使用put修改键/singless/test的value OK [root@etcd-1 ~]# etcdctl get /singless/test /singless/test false
4.4 删除操作
删除操作使用del命令
[root@etcd-1 ~]# etcdctl del /singless/test ##可以指定key进行删除 1 [root@etcd-1 ~]# etcdctl get --prefix / /singless/test/gender male [root@etcd-1 ~]# etcdctl del --prefix / ##也可以执行索引前缀进行删除 1 [root@etcd-1 ~]# etcdctl get --prefix /
5 k8s中的etcd
5.1 介绍
k8s中所有对象的manifest都需要保存到某个地方,这样他们的manifest在api server重启和失败的时候才不会丢失,因此引入了etcd。在k8s中只有api server和etcd直接交互,其它组件都通过api server间接和etcd交互,这样做的好处如下。
-
增强乐观锁系统及验证系统的健壮性
-
方便后续存储的替换,只需修改api server组件的相关接口。
etcd是一个响应快、分布式、一致的KV存储,也是k8s存储集群状态和元数据的唯一地方。
5.2 查看k8s中etcd存储的数据
[root@k8s-master01 ~]# kubectl get pod -n kube-system |grep etcd etcd-k8s-master01 1/1 Running 1 47d etcd-k8s-master02 1/1 Running 0 47d etcd-k8s-master03 1/1 Running 0 47d [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl exec -it -n kube-system etcd-k8s-master01 -- /bin/sh sh-5.1# etcdctl member list --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key 15c808b23512a31a, started, k8s-master02, https://10.0.107.77:2380, https://10.0.107.77:2379, false 5ca9692dbcd57e55, started, k8s-master03, https://10.0.113.204:2380, https://10.0.113.204:2379, false f8b45063ae1a7dfa, started, k8s-master01, https://10.0.87.66:2380, https://10.0.87.66:2379, false
k8s中的etcd需要使用到证书进行认证
查看etcd中存储的数据,可以手动在master节点上安装etcdctl命令
[root@k8s-master01 ~]# export ETCDCTL_API=3 ##指定使用的api版本 [root@k8s-master01 ~]# etcdctl get --prefix "" --endpoints=10.0.87.66:2379,10.0.107.77:2379,10.0.113.204:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key |head -2
--endpoints指定etcd节点,另外要使用到k8s证书,证书通常在/etc/kubernetes/pki/目录下,以下输出可以看到etcd中存储的k8s相关的键值数据。
相关文章:

K8S核心组件etcd详解(上)
1 介绍 https://etcd.io/docs/v3.5/ etcd是一个高可用的分布式键值存储系统,是CoreOS(现在隶属于Red Hat)公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据,并使用Raft协议实现了分布式一致性。etcd广泛应用…...

STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA
STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA 在较低容量存储领域,EEPROM是常用的存储介质,可以通过直接或者文件操作方式进行读写。不同容量的EEPROM的地址对应位数不同,在发送字节的格式上有所区别。EEPROM是非快速访问存储…...

微服务—远程调用(RestTemplate)
在微服务的所有框架中,SpringCloud脱颖而出,它是目前国内使用的最广泛的微服务框架 (官网地址),它集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱…...

Fine tune简介
目录 Intro Related work Example .1 重新训练 .2 使用新的数据集进行fine tune .3 修改net结构 References 移学习不是一种算法而是一种机器学习思想,应用到深度学习就是微调(Fine-tune)。通过修改预训练网络模型结构(如修改样本类别输出个数),选择性载入预训练网络…...
centos nginx配置ipv4和ipv6的地址都可以访问同一个网站
标题centos nginx配置ipv4和ipv6的地址都可以访问同一个网站 在 Nginx 中配置使 IPv4 和 IPv6 地址都可以访问同一个网站相对简单。只需要确保 Nginx 配置文件正确地配置了监听 IPv4 和 IPv6 地址的监听器即可。 打开你的 Nginx 配置文件,通常位于 /etc/nginx/nginx…...

高教杯数学建模2020C题总结
🧡1. 前言🧡 跟队友花了三天模拟2020C题,现在整理一下一些数据处理的代码,以及在模拟中没有解决的问题。方便以后回溯笔记。 🧡2. 数据处理🧡 2.1 导入数据,并做相关预处理 import pandas a…...

Swagger
目录 简介 使用方式: 常用注解 简介 使用Swagger你只需要按照他的规范去定义接口及接口相关信息再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等。 官网:https://swagger…...
Android 13像Settings一样获取热点和网络共享
一.背景 由于客户定制的Settings里面需要获取到热点和网络共享状态,所以需要实现此功能。 目录 一.背景 二.前提条件 三.调用api 二.前提条件 首先应用肯定要是系统应用,并且导入framework.jar包,具体可以参考: Android 应用自动开启辅助(无障碍)功能并使用辅助(无障碍…...

操作系统搭建相关知识
文章目录 系统篇netstat命令systemctl命令Systemd系统资源分类(12类) 网络篇ifconfig命令操作系统配置动态IP脚本dhcp服务的安装与配置防火墙相关知识 操作系统常用配置文件 系统篇 netstat命令 netstat指路 systemctl命令 常用于重启系统的每个服务…...

【校招VIP】前端校招考点之vue底层特性
考点介绍: 大家在面试途中遇到的相对多的问题,也是难点的问题,一般都有vue底层原理。对于只会用但是不懂的小白来说真是太痛苦了,仅仅能说出来 一些 数据劫持,双向数据绑定,虚拟dom树的名词来说远远不够。 …...

vue3+vite配置vantUI主题
❓在项目中统一配置UI主题色,各个组件配色统一修改 vantUI按需安装 参考vantUI文档 创建vantVar.less文件夹进行样式编写 vantVar.less :root:root{//导航--van-nav-bar-height: 44px;//按钮--van-button-primary-color: #ffffff;--van-button-primary-backgr…...

C++基础语法——继承
1.继承是什么? 继承是一种面向对象编程的概念,它允许一个类(称为子类或派生类)从另一个类(称为基类或父类)继承属性和方法。继承使得子类能够使用基类已有的代码,并且可以在此基础上进行扩展或修…...
vim配置之spf13-vim
文章目录 vim配置:spf13-vim什么是spf13-vim安装*nix and os x安装 spf13-vim使用技巧或快捷键spf13的vim默认没有启用剪切板,需要在vimrc中设置 vim配置:spf13-vim 什么是spf13-vim 官网:http://vim.spf13.com/ 它是一个完全跨平台发布,保持vim的感觉…...

Azure如何启用网络观察应用程序
文章目录 基础概念介绍实操 基础概念介绍 Azure中的网络观察应用程序是一种用于监视和诊断Azure网络的工具。它提供了一种集中管理和监控网络流量、连接性和性能的方式。网络观察应用程序能够提供网络流量分析、连接监视、性能监视和故障诊断等功能,用于帮助管理员…...
分步注册方式 编写驱动
作业:通过分步注册方式,编写LED灯驱动:(驱动文件mycdev.c 测试文件test.c 头文件head.h) mycdev.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/io.h> …...

repmgr出现双主,并且时间线分叉,删除了最新的时间线节点
遇到的问题如下: 2023-08-17 20:24:21.566 CST [1556001] LOG: database system was interrupted; last known up at 2023-08-17 20:21:41 CST 2023-08-17 20:24:21.770 CST [1556001] LOG: restored log file "00000009.history" from archive cp: 无法…...
ThinkPHP中实现IP地址定位
在网站开发中,我们经常需要获取用户的地理位置信息以提供个性化的服务。一种常见的方法是通过IP地址定位。在本文中,我们将介绍如何在ThinkPHP框架中实现IP地址定位。 一、IP地址定位的基本原理 IP地址是Internet上的设备在网络中的标识符。每个设备都有…...

使用Python批量将Word文件转为PDF文件
说明:在使用Minio服务器时,无法对word文件预览,如果有需要的话,可以将word文件转为pdf文件,再存储到Minio中,本文介绍如何批量将word文件,转为pdf格式的文件; 安装库 首先ÿ…...

XDR解决方案成为了新的安全趋势
和当今指数倍增长的安全数据相比,安全人才的短缺带来了潜在的风险。几乎所有的公司,无论规模大小,在安全资源能力上都有限,需要过滤各种告警才能将分析量保持在可接受范围。但这样一来,潜在的威胁线索就可能被埋没&…...

001-Nacos 服务注册
目录 Nacos介绍注册中心架构面临问题源码分析实例注册-接口实例注册-入口实例注册-创建一个(Nacos)Service实例注册-注册(Nacos)Service Nacos 介绍 Dynamic Naming and Configuration Service 动态的命名和配置服务 反正可以实现注册中心的功能 注册中心架构 服务提供者 …...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...