Kubernetes教程(七)了解集群、标签、Pod和Deployment
了解集群、标签、Pod和Deployment
- 一、K8s`资源对象`
- 二、K8s`集群`
- 1. Master
- 2. Node
- 三、Namespace(命名空间)
- 四、Label(标签)
- 五、Pod
- 1. 共享网络命名空间
- 2. 共享数据
- 六、工作负载
- 1. 设置副本数
- 2. 应用升级
- 结语
Kubernetes的知识真的特别庞大,知识点多,还特别看重实践操作。我从
Kubernetes
这个单词怎么拼写到在搭建好K8s集群并运行一个Nginx,花了一周的时间。我现在也是超级菜鸟一个,连入门都不算,只能边学边记录,我看的书籍是下面2本:
《Kubernetes权威指南》
第6版,知识点全面,对概念和原理讲的深入《Kubernetes企业级云原生运维实战》
李振良编写,更偏向实战操作,以便🐮🐴们能用上K8s为老板打工- 个人建议先看
《Kubernetes企业级云原生运维实战》
,不然《Kubernetes权威指南》
的第一章(共47页)都根本看不懂💀
一、K8s资源对象
K8s中的基础概念和术语大多围绕资源对象
来说的,资源对象可分如下几类:
- 基础资源对象:节点(Node)、容器组(Pod)、服务(Service)、存储卷(Volume)
- 基础资源对象相关的事务与控制器:标签(Label)、注解(Annotation)、命名空间(Namespace)、水平扩容、配置(ConfigMap、Secret)、持久化存储(PersistentVolume、PersistentVolumeClaim、StorageClass)、工作负载控制器(Deployment、StatefulSet、DeamonSet、Job、CronJob)
- 资源管控和权限相关:资源限制、资源配额、角色、角色绑定
- 网络相关 :Ingress、网络策略(NetworkPolicy)等
K8s中资源对象
包括几个公共属性:版本(Version)、类别(Kind)、名称(Name)、标签、注解。我们可以用YAML
或JSON
格式声明一个K8s资源对象
,每个资源对象都有自己特定的结构定义,比如Pod
和Service
的YAML文件的格式是不同的。定义好的资源对象会保存在etcd
这非关系型数据库中,以便快速读写。
二、K8s集群
K8s集群(Cluster)是由Master
和Node
组成的。
1. Master
Master
是控制节点,负责管理和控制整个集群,相当于集群的大脑,在每个K8s集群中都需要一个或一组Master
。在Master
上运行一下关键进程:
kube-apiserver
:提供RESTful API接口,是对资源进行增删改查的唯一入口,也是集群控制的入口kube-controller-manager
:所有资源对象的自动化控制中心,相当于“大总管”kube-scheduler
:负责资源调度(Pod调度)
2. Node
Node
是集群中的工作负载节点,是真正干活的打工人。Master
会把工作负载分配给Node
,当某个Node
宕机,其上的工作负载会被Master
转移到其他Node
上。在每个Node
上运行着以下关键进程:
kubelet
:负责Pod
对应容器的创建、启停等任务,听Mater
的指挥,实现集群管理的基本功能kube-proxy
:实现K8sService
通信与负载均衡机制容器运行时(如Docker)
:负责本机容器的创建和管理
查看集群有多少节点
kubectl get nodes查看某个Noded的信息
kubectl describe node <node_name>
三、Namespace(命名空间)
在K8s集群中还有一个重要概念-命名空间(Namespace),在大多情况下用于多租户的资源隔离,典型的思路是给每个租户分配一个命名空间。每个命名空间都是相互独立的,不同命名空间的资源对象是逻辑上
相互隔离。K8s安装运行后,默认会有2个Namespace:
default
:给用户用的,用户创建资源对象时,如不指定命名空间,会放到default命名空间kube-system
:存放系统相关的资源对象如网络组件、DNS组件、监控类组件
若不指定namespace,查看的是default命名空间内的资源对象
kubectl get pods通过参数查看指定命名空间"dev"的资源对象
kubectl get pods --namespace=dev
四、Label(标签)
Label
(标签)是K8s一个核心概念,它就是一个key=value
的键值对,其中key
和value
都是用户自定义。Lable
可以被附加到Node
、Pod
、Deployment
、Service
、Volume
等资源对象上,并且 一个资源对象可以有多个标签。 在实际生产环境中,Pod
应该都是有标签的,下面看个例子,就知道标签的重要性了。
- 下面是个定义
Service
的yaml文件,最后的selector
就是指关联有app=nginx
标签的Pod
apiVersion: v1 # API版本
kind: Service # 资源类型
metadata: # 资源元数据name: nginx # 资源名称
spec: # 资源规格ports: # 端口映射列表- name: # 端口名称port: 80 # 公开端口protocol: TCP # 端口协议,支持TCP、UDP和SCTP,默认TCPtargetPort: 80 # 目标端口,即容器内应用程序监听的端口selector: # 标签选择器app: nginx # Pod标签
打上Label
后的资源对象,之后就可以通过Lable Selector
(标签选择器)查询和筛选,介绍下Lable Selector
的一些例子:
- yaml中配置
release : stable
标签,这个标签的值就是release=stable
release = stable
,匹配具有release=stable
标签的资源对象release != stable
,匹配不具有release=stable
标签的资源对象release in (stable, dev)
匹配具有release=stable
或release=dev
标签的资源对象release notin (stable, dev)
匹配不具有release=stable
和release=dev
标签的资源对象
五、Pod
Pod
(容器组)是K8s中最重要的概念之一,Pod
是K8s中最小的调度单元,每一个Pod
包含一个特殊的Pause容器
(由K8s创建)和一个或多个密切相关的用户业务容器
。
Pod
中多个业务容器
是密切相关的,将Pod
作为最小单位,让Pod
内多个应用一起有效地调度和伸缩。Pod
中的多个业务容器
共享Pause容器
的IP,简化了密切相关容器之间的通信。Pod
中的多个业务容器
共享Volume挂载,简化了密切相关容器之间的文件共享问题。Pod
都有一个唯一的Pod IP
地址,一个Pod
中多个容器共享Pod IP
地址。- 集群中任意两个
Pod
之间都可以支持TCP/IP直接通信。
1. 共享网络命名空间
假设一个场景:有2个业务容器
,一个是Nginx,一个是指标采集程序(负责采集Nginx性能指标)。这2个业务容器
关系是密切相关的。指标采集容器能通过http://127.0.0.1/nginx_status
直接访问Nginx容器吗?答案是不能,因为它们2个容器的网络命名空间是隔离的。但是在Pod中,这个2个容器可以共享网络命名空间,在创建一个Pod
时,K8s会先创建一个Pause容器
,然后业务容器
会接着被创建并加入到Pause容器
的网络命名空间,这样Pod
中的所有容器都在同一个网络命名空间中,可以通过127.0.0.1
访问彼此了。
假设有个collect指标采集程序的镜像,在定义Pod
的yaml文件
可以这样写。
kind
属性的值为Pod
,表明是一个定义Pod
的文件metadata.name
是Pod名称metadata.namespace
是命名空间metadata.labels
是标签,标签的key
和value
都是自定义,所以这个标签值就是"app=pod-network"
spec.containers
是用户容器列表,可以添加一个或多个容器
apiVersion: v1 # API版本
kind: Pod # 资源类型
metadata: # 资源元数据name: pod-network # Pod名称namespace: default # 指定命名空间labels: # Pod标签app: pod-network # 标签的key和value都是自定义,这个标签值就是"app=pod-network"
spec:containers: # Pod中容器列表# 第一个容器(主应用容器)- image: nginx:1.23 # 容器镜像地址name: web # 容器名称# 第二个容器- image: collect:1.0name: collectcommand: ["/bin/bash", "-c", "while true; do sleep 1; done"] # 容器执行的命令
2. 共享数据
还是上面那个场景:一个是Nginx,一个是指标采集程序(负责采集Nginx性能指标),指标采集程序要如何读取到Nginx的访问日志文件呢?我们所熟悉的Docker Volume
在K8s中也有对应的概念–Pod Volume
,它被定义在Pod
中,然后被Pod
中各个容器挂载到自己的文件系统中。
- 在
Pod
所在节点的文件系统创建一个空目录,然后挂载到2个业务容器的日志目录 - Nginx容器的
/var/log/nginx
写入文件后,指标采集容器的/var/log/nginx
也能使用Nginx的日志文件 - 卷定义的
volumes.name
和容器挂载的volumeMounts.name
要一致,这里都叫"log"
apiVersion: v1
kind: Pod
metadata:labels:app: pod-volumename: pod-volumenamespace: default
spec:containers:# 第一个容器(应用容器)- image: nginx:1.23name: webvolumeMounts: # 卷挂载- name: log # 挂载的卷名称mountPath: /var/log/nginx # 卷挂载到容器中路径# 第二个容器(日志采集容器)- image: cooect:1.0name: collectcommand: ["/bin/bash", "-c", "while true; do sleep 1; done"]volumeMounts: # 卷挂载- name: log # 挂载的卷名称mountPath: /var/log/nginx # 卷挂载到容器中的路径volumes: # 定义卷- name: log # 卷名称emptyDir: {} # 卷类型:emptyDir是临时存储,与Pod生命周期一致
在实际生产环境中,不会直接用kind : Pod
这类型的Pod定义文件,一般都会用kind: Deployment
类型的工作负载
,所以一定要好好学习下面的工作负载
。
六、工作负载
通常情况下,每个Service
对应的Pod
副本数量都是固定的,如果一个一个手动创建Pod
副本那也太麻烦了。如果有一个Pod模板,在Pod模板里指定Pod副本数量,然后再根据Pod模板创建多个Pod。从这个Pod模板就引出了K8s中的一个抽象概念:工作负载
。
工作负载
用于更高层次地创建和管理Pod
,它可以定义Pod
的副本数量、运行规格、调度策略等- K8s可以自动处理
Pod
的创建、更新和删除等操作,简化了用户对Pod
生命周期的操作 工作负载
有4种类型,其中最常用的是Deployment
,支持副本管理、副本数扩缩、滚动更新、版本回滚等操作
1. 设置副本数
下面看下一个Deployment
的例子:
-
spec.replicas
:Pod的副本数量 -
spec.template
:用于自动创建新Pod副本的模板 -
spec.selector
:用于指定 Deployment 所管理的 Pod 的标签,这个选择器决定了哪些 Pod 是由这个 Deployment 管理的 -
spec.template.metadata.lables
:定义了 Pod 的标签,这些标签需要与上面的spec.selector
中的选择器匹配,以确保 Deployment 能够识别和管理这些 Pod。
apiVersion: apps/v1 # API版本
kind: Deployment # 资源类型
metadata: # 资源元数据name: deploy-user-service # 资源名称namespace: my-space # 指定命名空间
spec: # 资源规格replicas: 3 # Pod副本数selector: # 标签选择器matchLabels: # 匹配标签app: user template: # Pod模板metadata: # Pod元数据labels: # Pod标签app: userspec: # Pod规格containers: # Pod容器配置- image: user-srvice:v3name: web # 容器名称
2. 应用升级
当源代码需要升级时,需要重新构建镜像并上传到K8s集群中,以下有2中常见的升级方法:
- 修改资源文件,将
Deployment
资源中的image
字段修改为新的镜像地址,然后使用kubectl apply -f <资源文件>
命令。 - 使用
kubectl set image <资源类型>/资源名称 <容器名称>=<镜像地址>
命令更新Deployment
资源的镜像地址。
kubectl set image deployment/deploy-user-service web=user-srvice:v4 -n my-space
结语
K8s的知识体系真的是太庞大了,本篇暂时写到这里,本篇涉及到的Pod
和Deployment
也只是真正相关知识的九牛一毛而已。但是学习一门新技术,不能按部就班地一个一个章节死磕每个知识点。要先对整体有个大概了解,着重看最主要最常用的功能,之后再反复的看书实践,提取知识点。
相关文章:
Kubernetes教程(七)了解集群、标签、Pod和Deployment
了解集群、标签、Pod和Deployment 一、K8s资源对象二、K8s集群1. Master2. Node 三、Namespace(命名空间)四、Label(标签)五、Pod1. 共享网络命名空间2. 共享数据 六、工作负载1. 设置副本数2. 应用升级 结语 Kubernetes的知识真的…...
【BUG分析】微服务无法读取Nacos中的共享配置
项目场景 基于Spring Cloud微服务的商城系统。 使用Nacos进行统一配置管理,在bootstrap.xml中读取配置参数。 问题描述 购物车微服务可以读取Nacos中的共享mybatis配置,商品管理微服务却读不到,启动报错提示无法配置数据库源: …...
SpringMVC (一)基础
目录 SpringMVC 一 简单使用 1 新建模块选择指定参数 2 创建实现类 3 将项目启动 4 运行结果:在浏览器当中响应执行 二 RequestMapping 三 请求限定 SpringMVC SpringMVC是Spring的web模块,用来开发Web应用,SpringMVC应用最终作为B/…...
【ES6】ES6中的类
基础定义和使用 class Animal {constructor(name, species, age) {this.name namethis.species speciesthis.age age} }let dog new Animal("Spot", "Dog", 4)私有变量 变量名前带#即可。 Getter 和Setter方法 继承 // 父类 class Point{construc…...
兴达易控Profinet 转 ModbusTCP跨网段通信模块
Profinet 转 ModbusTCP/跨网段通信模块 Profinet转ModbusTCP/跨网段通信模块,作为现代工业自动化系统中不可或缺的重要组件,正日益受到广泛关注和应用。 这种模块的核心功能是将Profinet网络协议转换为Modbus TCP协议,实现不同网络之间的无缝…...
linux 的免密切换用户PAM配置
/etc/pam.d/su是Linux系统中与用户切换(su命令)相关的PAM(Pluggable Authentication Modules,可插拔认证模块)配置文件。以下是对它的详细介绍: 简介 作用 PAM是一种用于管理系统认证的机制,…...
使用 Python pandas操作 Excel 文件
使用 Python pandas 操作 Excel 文件 flyfish pandas 是 Python 中一个强大的数据处理和分析库,它提供了丰富的数据结构(如 Series 和 DataFrame)和数据操作方法,能够方便地处理各种数据格式,包括 Excel 文件。 安装…...
UE5.5 Niagara 发射器粒子更新模块
Particle State (粒子状态)模块 Particle State 主要用于控制粒子的生存状态,包括死亡、消失、响应事件等。 Particle State Kill Particles When Lifetime Has Elapsed 当粒子的生命周期结束时,销毁这些粒子。 Lifetime &…...
状态模式的C++实现示例
核心思想 状态模式(State Pattern) 是一种行为设计模式,允许对象在其内部状态改变时改变其行为。它将状态相关的逻辑分散到不同的状态类中,避免了使用大量的条件语句来处理不同状态下的行为。 状态抽象化:将对象的状…...
ThinkPHP8.0+MySQL8.0搭建简单实用电子证书查询系统
客户花了100元买了一个系统,开始不能导入,到处找人帮忙解决。给解决能导入了,不能修改,满足不了用户的需求。用户一狠心,花200块钱,叫我给他定制了一个电子证书查询系统。还免费给部署到服务器。惭愧惭愧……...
STM32全系大阅兵(2)
接前一篇文章:STM32全系大阅兵(1) 本文内容参考: STM32家族系列的区别_stm32各个系列区别-CSDN博客 STM32--STM32 微控制器详解-CSDN博客...
upload-labs通关攻略 【Pass-01~Pass-19】
注意:GitHub中upload-labs有多个版本:19关、21关、23关。版本不同,关卡的顺序也很可能不同。此次例子是21关。 项目地址:https://github.com/c0ny1/upload-labs 一、Pass-01 【js前端检测的绕过】 1. 打开Pass-01 访问:ip/uploa…...
HCIP复习拓扑练习(修改版)
拓扑: 实际: 需求: 需求分析 1.这意味着学校内部网络能够正常解析域名并进行互联网访问。 2. PC1和PC2处于同一个内网192.168.1.0/24,其中PC1有权限访问外部网段3.3.3.0/24,而PC2没有。这涉及ACL(访问控制…...
Zabbix 7.2 + Grafana 中文全自动安装ISO镜像
简介 基于Zabbix 官方的Alma Linux 8 作为基础镜像。 镜像源都改为国内大学镜像站,自动联网安装ZabbixGrafana。 安装中文字体、Zabbix和Grafana也配置默认中文。 Zabbix 也指定中文字体,绘图无乱码。 配置时区为东八区,Zabbix配置We…...
使用 Python 将 PDF 转换为文本:打造一个简单高效的提取工具
在数字化时代,PDF 文件是我们日常生活中常见的文档格式。无论是学术论文、工作报告还是电子书,PDF 的广泛使用让提取其中文字内容成为一个常见需求。手动复制粘贴显然效率低下,而借助 Python,我们可以轻松实现自动化提取。本文将介…...
scoop退回软件版本的方法
title: scoop退回软件版本的方法 date: 2025-3-11 23:53:00 tags: 其他 前言 在软件更新后,如果出现了很影响使用体验的问题,那么可以把软件先退回以前的版本进行使用, 但是scoop本身并没有提供直接让软件回退版本的功能,因此…...
网络爬虫-2:正则化
1.正则化 一.正则化 1.转义字符 转义字符含义\s空白字符(空格、制表符等)\d数字字符(0-9)\w字母、数字或下划线.除换行符外的任意字符\n换行符\t制表符 import re result re.findall(r\s, Hello World\nPython) print(result)…...
emacs使用mongosh的方便工具发布
github项目地址: GitHub - csfreebird/emacs_mongosh: 在emacs中使用mongosh快速登录mongodb数据库 * 用途 在emacs中使用mongosh快速登录mongodb数据库, 操作方法: M-x mongosh, 输入数据库名称,然后就可以自动登录,前提是你已经配置好了…...
【Spring】详细剖析Spring程序
文章目录 一、Spring概述1. Spring简介1.1 OCP开闭原则1.2 依赖倒置原则DIP1.3 控制反转IoC 2. Spring8大模块 二、Spring的入门程序1. Spring官网2. 第一个Spring程序2.1 创建工程2.2 配置 pom.xml:2.3 定义bean:User . java2.4 配置文件 spring.xml2.5…...
《MySQL数据库从零搭建到高效管理|库的基本操作》
目录 一、数据库的操作 1.1 展示数据库 1.2 创建数据库 1.3 使用数据库 1.4 查看当前数据库 1.5 删除数据库 1.6 小结 二、常用数据类型 2.1 数值类型 2.2 字符串类型 2.3 日期类型 一、数据库的操作 打开MySQL命令行客户端,安装完MySQL后会有两个客户端…...
docker部署jenkins,安装使用一条龙教程
Jenkins k8s 实现CI/CD 一、简介 1. JenKins是什么? Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 2. 什么是CI / CD…...
图像识别技术与应用-YOLO
1 YOLO-V1 YOLO-V1它是经典的one-stage方法,You Only Look Once,名字就已经说明了一切!把检测问题转化成回归问题,一个CNN就搞定了!也可以对视频进行实时检测,应用领域非常广! YOLO-V1诞生与2…...
【网络通信安全】子专栏链接及简介
目录 操作系统安全:筑牢网络安全根基 网络协议安全:守护数据传输通道 Web 站点安全开发:打造安全的网络交互平台 在数字化浪潮席卷的当下,网络通信已深度融入生活与工作的方方面面,从日常的线上购物、社交互动…...
Oracle比较好的几本书籍
1.《Oracle专家高级编程》 2.《Oracle高效设计》 3.《Oracle9i&10g&11g编程艺术深入数据库体系结构》 4.《让Oracle跑的更快》(1/2) ....... n.《Oracle官方文档的阅读》下面包括这几个部分,可以跟进研读一下: (1)《…...
忘记dedecms后台超级管理员账号和密码的解决方案
解决方案: 方案一、数据库修改: 1、前提是您能登录到数据库后台,登录MySQL数据库管理工具(如phpMyAdmin) 2、打开数据库中的 dede_admin 表,找到管理员记录,将 pwd 字段的值改成 f297a57a5a7…...
处理动态分页:自动翻页与增量数据抓取策略-数据议事厅
一、案例场景 Lily(挥舞着数据报表):“用户反馈我们的股票舆情分析总是缺失最新跟帖!这些动态分页像狡猾的狐狸,每次抓取都漏掉关键数据!” 小王(调试着爬虫代码):“传…...
微服务新手入门
一、微服务概念 微服务是一种软件架构风格,ta是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。 微服务 - 服务拆分 - 远程调用 - 服务治理 - 请求路由 - 身份认证 - 配置管理 - 服务保护 - 分布式事务 - 异步通信 - 消息可靠性 - 延迟消…...
antd浏览器引入的问题
1,在使用ant design vue的4.1.2版本通过浏览器引入的方式遇到的问题,遇到的问题(不确定其他版本有没有问题),通过在页面使用下面的代码 <a-modal v-model:open"apiOpen" title"修改秘钥" ok&q…...
STM32-Unix时间戳
一:什么是时间戳 Unix时间戳(Unix Timestamp)是一个计数器数值,这个数值表示的是一个从1970年1月1日0时0分0秒开始到现在所经过的秒数,不考虑闰秒。 时间戳存储在一个秒计数器里,秒计数器为32位/64位的整…...
【性能测试】Jmeter如何做一份测试报告(3)
本篇文章主要介绍Jmeter中下载插件(Jmeter Plugins) 如何使用监听器插件,线程组插件,梯度压测线程组 测试报告需要去关注的数据,怎么看测试报告图表 目录 一:插件下载 1:下载地址 2ÿ…...
游戏引擎学习第153天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 目前正在进行的是一个比较大的系统调整,原本预计今天会继续深入这个改动,但实际上在昨天的开发中,我们已经完成了大部分的代码编写,并且运行之后几乎一切都能正常工作&#x…...
CentOS7下安装MongoDB
步骤 1:创建 MongoDB Yum 仓库文件 你需要创建一个 MongoDB 的 Yum 仓库配置文件,以便从官方源下载 MongoDB。打开终端并使用以下命令创建并编辑该文件: sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo 在打开的文件中,输入以下…...
Elasticsearch-07-Elasticsearch Java API Client-Elasticsearch 8.0 的高阶api
文章目录 es8 API基础配置和bean注入高阶使用1:引入elasticsearchClient2:查询所有索引3:查询某个索引4:创建索引5:删除指定索引6:查询索引的映射7:创建索引指定映射8:创建文档使用HashMap作为数据存储容器使用自定义类作为数据存储容器使用外…...
【性能优化】MySQL 生产环境 SQL 性能优化实战案例
🚀 MySQL 生产环境 SQL 性能优化实战案例 🏗️ 背景介绍 最近在处理一个项目时,发现在生产环境的工作流相关接口中,某些查询的执行时间异常缓慢,尽管数据量仅为 2 万条。经过分析,发现以下 SQL 语句执行非…...
Docker容器安装软件(完整版)
文章目录 一、安装Docker1.1 docker 相关的命令1.2 配置镜像加速 二. 安装es2.1 创建网络2.2 拉取镜像2.3 创建挂载点目录2.4 部署单点es,创建es容器2.5 编写elasticsearch.yml2.6 重启es容器2.7 测试Elasticsearch是否安装成功 三. 基于Docker安装Kibana3.1 拉取镜…...
DeepSeek-进阶版部署(Linux+GPU)
前面几个小节讲解的Win和Linux部署DeepSeek的比较简单的方法,而且采用的模型也是最小的,作为测试体验使用是没问题的。如果要在生产环境使用还是需要用到GPU来实现,下面我将以有一台带上GPU显卡的Linux机器来部署DeepSeek。这里还只是先体验单…...
11. Pandas :操作Excel文件(Excel报表的案例研究)
从一个装有各种 Excel 文件的文件夹开始,这些文件需要被整合到 Excel 报表中。 它们包含了虚构的电信运营商在全美各营业厅的套餐(金、银、铜)销售情况。每个月有两个文件,子文件夹 new 中的是新用户,子文件夹 existin…...
Qt开源控件库(qt-material-widgets)的编译及使用
项目简介 qt-material-widgets是一个基于 Qt 小部件的 Material Design 规范实现。 项目地址 项目地址:qt-material-widgets 本地构建环境 Win11 家庭中文版 VS2019 Qt5.15.2 (MSVC2019) 本地构建流程 克隆后的目录结构如图: 直接使用Qt Crea…...
freeswitch(多台服务器级联)
亲测版本centos 7.9系统–》 freeswitch1.10.9本人freeswitch安装路径(根据自己的路径进入)/usr/local/freeswitch/etc/freeswitch使用场景: 使用服务器级联需要双方网络可以ping通,也就是类似局域网内,比如A服务器IP 192.168.1.100 B服务器 192.168.1.101,通过C设备注册…...
【大模型统一集成项目】让 AI 聊天更丝滑:WebSocket 实现流式对话!
🌟 在这系列文章中,我们将一起探索如何搭建一个支持大模型集成项目 NexLM 的开发过程,从 架构设计 到 代码实战,逐步搭建一个支持 多种大模型(GPT-4、DeepSeek 等) 的 一站式大模型集成与管理平台ÿ…...
qt 多进程使用共享内存 ,加速数据读写,进程间通信 共享内存
Summary: 项目中我们有时需要使用共享内存共享数据,这样,数据不用进程IO读写,加进数据加载和落地; 程序退出时,再保存到本地;速度提升数十倍; Part1:QSharedMemory Windows平台下进程间通信…...
OpenHarmony-分布式硬件关键技术
前言: OpenHarmony是一款面向未来万物互联场景的操作系统,其设计采用了分布式架构。那么OpenHarmony相比于传统操作系统有哪些关键的分布式技术,本文主要介绍分布式硬件设计理念、跨端分布式硬件核心挑战、以及OpenHarmony分布式硬件平台关键…...
idea超级AI插件,让 AI 为 Java 工程师
引言 用户可在界面中直接通过输入自然语言的形式描述接口的需求,系统通过输入的需求自动分析关键的功能点有哪些,并对不确定方案的需求提供多种选择,以及对需求上下文进行补充,用户修改确定需求后,系统会根据需求设…...
深入Flink运行时架构:JobManager与TaskManager协作全解析
深入Flink运行时架构:JobManager与TaskManager协作全解析 一、Flink分布式执行模型剖析 1.1 运行时架构全景视图 核心组件交互关系: #mermaid-svg-tMSqMSsKP6vwUZi3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...
OSPF-单区域的配置
一、单区域概念: 单区域OSPF中,整个网络被视为一个区域,区域ID通常为0(骨干区域)。所有的路由器都在这个区域内交换链路状态信息。 补充知识点: OSPF为何需要loopback接口: 1.Loopback接口的…...
每日OJ_牛客_过桥_贪心+BFS_C++_Java
目录 牛客_过桥_贪心BFS 题目解析 C代码 Java代码 牛客_过桥_贪心BFS 过桥 描述: dd被困在了一个迷幻森林,现在她面前有一条凶险的大河,河中央有n个神奇的浮块,浮块按1∼n1顺序标号,但两两并不相接&…...
K8S学习之基础二十七:k8s中daemonset控制器
k8s中DaemonSet控制器 DaemonSet控制器确保k8s集群中,所有节点都运行一个相同的pod,当node节点增加时,新节点也会自动创建一个pod,当node节点从集群移除,对应的pod也会自动删除。删除DaemonSet也会删除创建的pod。…...
79.ScottPlot的MVVM实现 C#例子 WPF例子
如何通过数据绑定在 WPF 中实现动态图像显示 在 WPF 应用程序中,通过数据绑定实现动态图像显示是一种高效且优雅的方式。以下是一个简单的教程,展示如何使用 ScottPlot.WPF 库和 MVVM 模式来实现这一功能。 第一步:安装必要的 NuGet 包 首…...
第44天:WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式
时间轴: 44天知识点总结: 1.mysql的增删改查功能 2.根据源码sql语句的三种sql注入:布尔盲注(必须要有回显) 延时判断(都可以) 报错回显(必须要有报错处理机制) 3.两个cms…...
说说人工智能
1. 人工智能与机器学习 核心进展 人工智能(AI)与机器学习(ML)已从理论研究全面渗透到实际应用中。深度学习模型如Transformer架构在自然语言处理(NLP)和计算机视觉(CV)领域实现突破…...