Kubernetes(四)——项目生命周期管理和yml文件编写

文章目录

  • 前言
  • 一、项目生命周期管理
    • 1、项目生命周期阶段
    • 2、创建阶段(kubectl create)
    • 3、发布阶段(kubectl expose)
    • 4、更新阶段(kubectl set)
    • 5、回滚阶段(kubectl rollout)
    • 6、删除阶段(kubectl delete)
  • 二、发布版本
    • 1、三种发布方式概述
    • 2、金丝雀发布实战
  • 三、声明式资源管理方法
    • 1、基本原理
    • 2、查看和解释配置清单
    • 3、修改资源配置清单并应用
    • 4、删除资源配置清单
  • 四、yaml文件编写方法
    • 1、kubernetes支持两种文件格式
    • 2、yaml语法格式
    • 3、api资源版本标签
    • 4、yaml文件示例
      • 4.1、创建deployment和Pod
      • 4.2、创建service
      • 4.3、详解k8s中的Port
    • 5、快速生成yaml文件模板方法
      • 5.1、快速生成yaml方法示例
      • 5.2、查看快速生成的yaml文件
      • 5.3、通过命令查看帮助(重点)
  • 总结

前言

本文围绕 K8s 项目生命周期全流程展开,详解发布策略、声明式资源管理及 YAML 文件编写技巧,为实操运维提供清晰指引。


一、项目生命周期管理

1、项目生命周期阶段

创建 → 发布 → 更新 → 回滚 → 删除

2、创建阶段(kubectl create)

创建”容器端口“

# 创建并运行一个或多个容器镜像。 # 创建一个deployment 或job 来管理容器。 kubectl create --help //启动 nginx 实例,暴露容器端口 80,设置副本数 3 kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3 kubectl get pods kubectl get all

# 查看容器端口 kubectl get pods -o custom-columns="NAME:.metadata.name,PORT:.spec.containers[0].ports[0].containerPort" # 查看归属(是不是受控Pod) kubectl get pods -o custom-columns="NAME:.metadata.name,CONTROLLER:.metadata.ownerReferences[0].kind,NAME:.metadata.ownerReferences[0].name"

3、发布阶段(kubectl expose)

将资源暴露为 Service

kubectl expose --help kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

1)service 类型:

2)扩展端口类型
port
port 是 k8s 集群内部访问service的端口,即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到service
nodePort
nodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP: nodePort 可以从外部访问到某个service。
targetPort
targetPort 是 Pod 的端口,从 port 或 nodePort 来的流量经过 kube-proxy 反向代理负载均衡转发到后端 Pod 的 targetPort 上,最后进入容器。
containerPort:
containerPort 是 Pod 内部容器的端口,targetPort 映射到 containerPort。
3)查看网络状态与服务端口

#查看pod网络状态详细信息和 Service暴露的端口 kubectl get pods,svc -o wide ##查看关联后端的节点 kubectl get endpoints #查看 service 的描述信息 kubectl describe svc nginx


4) 负载均衡查看(节点上)

#在 node01 节点上操作,查看负载均衡端口 yum install ipvsadm -y ipvsadm -Ln TCP 192.168.10.21:44847 rr -> 172.17.26.3:80 Masq 1 0 0 -> 172.17.36.2:80 Masq 1 0 0 -> 172.17.36.3:80 Masq 1 0 0 TCP 10.0.0.189:80 rr -> 172.17.26.3:80 Masq 1 0 0 -> 172.17.36.2:80 Masq 1 0 0 -> 172.17.36.3:80 Masq 1 0 0 curl 10.0.0.189 curl 192.168.10.20:44847 ###在master01操作 查看访问日志 kubectl logs nginx-cdb6b5b95-fjm2x kubectl logs nginx-cdb6b5b95-g28wz kubectl logs nginx-cdb6b5b95-x4m24

轮询查看:

4、更新阶段(kubectl set)

#更改现有应用资源一些信息。 kubectl set --help #获取修改模板 kubectl set image --help Examples: # Set a deployment's nginx container image to 'nginx:1.9.1', and its busybox container image to 'busybox'. kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1 # 查看当前 nginx 的版本号 curl -I http://192.168.10.20:44847 curl -I http://192.168.10.21:44847 ##将nginx 版本更新为 1.15 版本 kubectl set image deployment/nginx nginx=nginx:1.15 kubectl get pods -w #/处于动态监听 pod 状态,由于使用的是滚动更新方式,所以会先生成一个新 的pod,然后删除一个旧的pod,往后依次类推 kubectl get pods -o wide #再看更新好后的 Pod 的 ip 会改变

更新示例:

5、回滚阶段(kubectl rollout)

##对资源进行回滚管理 kubectl rollout --help //查看历史版本 kubectl rollout history deployment/nginx //执行回滚到上一个版本 kubectl rollout undo deployment/nginx //执行回滚到指定版本 kubectl rollout undo deployment/nginx --to-revision=1 //检查回滚状态 kubectl rollout status deployment/nginx

回滚示例:

6、删除阶段(kubectl delete)

//删除副本控制器 kubectl delete deployment/nginx //删除service kubectl delete svc/nginx-service kubectl get all

删除示例:

二、发布版本

1、三种发布方式概述

  • 蓝绿发布:同时部署新版本(绿)和旧版本(蓝)两套环境,验证通过后直接切换流量到新版本,旧版本作为备份随时回滚。
  • 滚动发布:按批次逐步替换旧版本 Pod,每替换一批验证一批,全程无服务中断,支持灰度放量和风险可控。
  • 金丝雀发布:先将少量流量切到新版本(金丝雀版本),验证无问题后再逐步扩大流量占比,最终全量切换。

2、金丝雀发布实战

1)监控更新的过程
kubectl get pods -w
2)更新deployment的版本,并配置暂停deployment
kubectl set image deployment/nginx-deployment nginx=nginx:1.15 && kubectl rollout pause deployment/nginx-deployment
可以看到已经新增了一个资源,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令

验证版本号:正常轮询,新创建的就是1.15所以正常的,只要看到1.14.2即可
curl -I 10.96.0.147:80

3)确保更新的pod没问题了,继续更新
kubectl rollout resume deployment/nginx-deployment
curl -I 10.96.0.147:80

3、k8s发布的方法
使用的滚动发布

三、声明式资源管理方法

1、基本原理

1.适合于对资源的修改操作
2.声明式资源管理方法依赖于资源配置清单文件对资源进行管理,资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
3.对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群里
4.语法格式:kubectl create/apply/delete -f xxxx.yaml

2、查看和解释配置清单

//查看资源配置清单(yaml的格式) kubectl get deployment nginx -o yaml //解释资源配置清单 kubectl explain deployment.metadata # 查询yaml文件相关命令参数 kubectl get service nginx -o yaml # 查看service的yaml格式展示的内容 kubectl explain service.metadata

查看资源配置清单:

3、修改资源配置清单并应用

离线修改:
修改yaml文件,并用 kubectl apply -f xxxx.yaml 文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建资源

# 导出yaml文件模板 kubectl get service nginx -o yaml > nginx-svc.yaml vim nginx-svc.yaml #修改port: 8080 # 删除该yaml文件产生的旧资源 kubectl delete -f nginx-svc.yaml # 重新加载该文件 kubectl apply -f nginx-svc.yaml kubectl get svc

在线修改:
直接使用 kubectl edit service nginx 在线编辑资源配置清单并保存退出即时生效(如port: 888)
PS:此修改方式不会对yaml文件内容修改

4、删除资源配置清单

陈述式删除:(命令行操作)
kubectl delete service nginx
声明式删除:(yaml文件进行操作)
kubectl delete -f nginx-svc.yaml
扩展:一般都是使用陈述式删除,声明式创建资源

四、yaml文件编写方法

1、kubernetes支持两种文件格式

支持yaml和json格式来管理资源对象
json格式:主要用于 api 接口之间消息的传递
yaml格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读

2、yaml语法格式

● 大小写敏感
● 使用缩进表示层级
● 不支持Tab键制表符作缩进,只能使用空格缩进
● 缩进的空格格数不重要,只要相同层级对齐即可,通常用两个空格
● 符号字符后面一个空格 如:冒号、逗号、-等
● ”—“表示一个yml文件的开始,用于分割yml文件
● ”#“ 表示注释

3、api资源版本标签

注意点:
如果是业务场景一般首选使用 apps/v1
带有beta字样的代表的是测试版本,不用在生产环境中,如apps/v1beta1
api版本标签的作用:
1) 区分资源的 “成熟度”,控制功能迭代 。
区分稳定版 / 测试版,指导生产环境使用;
2) 规范资源 YAML 的定义格式
YAML 必须指定正确版本,K8s 才能解析
3)保证集群的版本兼容
集群升级时,通过版本平滑过渡,避免功能中断
4)按功能分组,管理资源范围
按业务域归类资源,让 API 结构更清晰
输出api版本标签:

kubectl versions

输出:

4、yaml文件示例

4.1、创建deployment和Pod

mkdir /opt/demo && cd /opt/demo
vim nginx-deployment.yaml

# 第一部分:资源的“身份标识”——告诉 K8s 这是什么类型的资源、用什么版本解析 apiVersion: apps/v1 # 【必选】指定解析这个资源的API版本 # 通俗:相当于“文件格式版本”,Deployment 必须用 apps/v1,写错会报错 # 核心:Deployment/StatefulSet 用 apps/v1;Pod/Service 用 v1;Ingress 用 networking.k8s.io/v1 kind: Deployment # 【必选】定义资源类型 # 通俗:告诉 K8s 你要创建“部署控制器”(Deployment),而非 Service/Ingress 等 # 核心:常用值——Deployment(部署应用)、Service(服务入口)、Ingress(域名路由)、Pod(最小运行单元) # 第二部分:资源的“基础信息”——给资源起名字、打标签、指定归属 metadata: # 【必选】资源的元数据(描述信息),固定字段 name: nginx-deployment # 【必选】资源名称(Deployment的名字) # 核心:同一 Namespace 内名称必须唯一,比如不能有两个叫 nginx-deployment 的 Deployment labels: # 【可选】给 Deployment 本身打标签(不是 Pod 的标签!) app: nginx # 标签键值对:key=app,value=nginx # 作用:方便用标签筛选资源,比如 kubectl get deploy -l app=nginx # 第三部分:资源的“核心配置”——定义 Deployment 要管理多少 Pod、Pod 长什么样 spec: # 【必选】Deployment 的核心配置段,固定字段 replicas: 3 # 【必选】指定要运行的 Pod 副本数 # 通俗:启动 3 个相同的 Nginx Pod,实现负载均衡 # 核心:改这个数值可以扩缩容,比如改成 5 就是 5 个 Pod selector: # 【必选】标签选择器——Deployment 靠这个找到要管理的 Pod matchLabels: # 【必选】匹配标签规则(精确匹配) app: nginx # 核心:必须和下面 template.metadata.labels 里的标签完全一致! # 作用:Deployment 只管理带 app=nginx 标签的 Pod,避免管错其他 Pod template: # 【必选】Pod 模板——定义要创建的 Pod 长什么样(所有副本都按这个模板创建) metadata: labels: # 【必选】给 Pod 打标签(关键!) app: nginx # 核心:必须和上面 selector.matchLabels 一致,否则 Deployment 找不到 Pod spec: # 【必选】Pod 的核心配置段 containers: # 【必选】定义 Pod 里的容器(一个 Pod 可以有多个容器) - name: nginx # 【必选】容器名称(Pod 内唯一) image: nginx:1.15.4 # 【必选】容器使用的镜像(镜像名+版本) # 核心:不写版本默认拉 latest,生产环境必须指定具体版本(如 1.15.4),避免镜像更新导致故障 ports: # 【可选】声明容器要暴露的端口(仅声明,不实际映射) - containerPort: 80 # 声明容器监听 80 端口 # 注意:这只是“告诉 K8s 容器用了 80 端口”,要对外访问还需配 Service

创建资源对象:
kubectl create -f nginx-deployment.yaml

验证结果:
查看Pod和deployment
kubectl get all 或 kubectl get pods

查看Pod的ip和部署的node节点
kubectl get pods -o wide

查看pod的标签
kubectl get pods --show-labels

4.2、创建service

vim nginx-service.yaml

# 第一部分:资源身份标识——告诉 K8s 这是 Service 类型的资源 apiVersion: v1 # 【必选】Service 属于核心资源,固定用 v1(和 Deployment 的 apps/v1 区分开) # 通俗:Service 的“文件格式版本”,写错会报错(比如写成 apps/v1 就识别不了) kind: Service # 【必选】定义资源类型为 Service(服务入口) # 通俗:告诉 K8s 你要创建一个“门牌号”,用来访问 Pod # 第二部分:资源基础信息——给 Service 起名字、打标签 metadata: name: nginx-service # 【必选】Service 的名称(同一 Namespace 内唯一) # 作用:集群内可以通过 “nginx-service” 这个名字访问,不用记 IP labels: app: nginx # 【可选】给 Service 本身打标签(不是绑定 Pod 的标签!) # 作用:方便筛选 Service,比如 kubectl get svc -l app=nginx # 第三部分:Service 核心配置——类型、端口、绑定 Pod 的规则 spec: type: NodePort # 【必选】Service 类型(决定怎么暴露服务) # 可选值: # - ClusterIP(默认):仅集群内访问; # - NodePort:暴露到所有 Node 的固定端口(集群外可访问); # - LoadBalancer:对接云厂商 LB(生产常用) ports: # 【必选】定义端口映射规则(Service 端口 ↔ Pod 端口) - port: 80 # 【必选】Service 自身的集群内端口(ClusterIP:80) # 通俗:门牌号的“内部窗口号”,集群内访问 Service 时用这个端口 targetPort: 80 # 【必选】Pod 内容器的端口(对应 Pod 里 nginx 监听的 80 端口) # 核心:把 Service 的 80 端口请求,转发到 Pod 的 80 端口 selector: # 【核心!关联 Pod 的关键行】标签选择器 app: nginx # ✅ 这一行就是绑定 Pod 的核心! # 作用:Service 会自动找到所有带 “app=nginx” 标签的 Pod # 要求:必须和 Pod 的 labels(比如 Deployment 模板里的 app=nginx)完全一致

创建资源对象
kubectl create -f nginx-service.yaml
查询service
kubectl get svc

测试192.168.10.112:32305
curl 192.168.10.112:32305 或者 浏览器访问http://192.168.10.112:32305

4.3、详解k8s中的Port

  1. port
    port 是 k8s 集群内部访问service的端口,即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到 service
  2. nodePort
    nodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP: nodePort 可以从外部访问到某个 service。
  3. targetPort
    targetPort 是 Pod 的端口,从 port 或 nodePort 来的流量经过 kube-proxy 反向代理负载均衡转发到后端 Pod 的 targetPort 上,最后进入容器。
  4. containerPort
    containerPort 是 Pod 内部容器的端口,targetPort 映射到 containerPort。

5、快速生成yaml文件模板方法

5.1、快速生成yaml方法示例

kubectl run --dry-run=client 打印相应的 API 对象而不执行创建

kubectl run nginx-test --image=nginx --port=80 --dry-run=client kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client

查看生成yaml格式

kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml

查看生成json格式

kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o json kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o json

使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数

kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-test.yaml kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > nginx-deploy.yaml

5.2、查看快速生成的yaml文件

使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > nginx-deploy.yaml

apiVersion: apps/v1 # 必留:Service 用 v1,Deployment 必须用 apps/v1 kind: Deployment # 必留:定义资源类型为 Deployment metadata: creationTimestamp: null # 可删:自动生成的字段,手动写了也会被 K8s 覆盖 labels: app: nginx # 可选(建议留):给 Deployment 打标签,方便筛选 name: nginx # 必留:Deployment 名称(唯一) spec: replicas: 2 # 必留:Pod 副本数(核心配置) selector: matchLabels: app: nginx # 必留:关联 Pod 的核心标签(必须和 template.labels 一致) strategy: {} # 可删:空配置会用 K8s 默认的滚动更新策略,写了没用 template: metadata: creationTimestamp: null # 可删:自动生成的字段,手动写无意义 labels: app: nginx # 必留:Pod 的标签(和 selector.matchLabels 绑定) spec: containers: - image: nginx # 必留:容器镜像(建议加版本,比如 nginx:1.24) name: nginx # 必留:容器名称(Pod 内唯一) ports: - containerPort: 80 # 可选(建议留):声明容器端口(仅标识,不影响访问) resources: {} # 可选(可删):空配置表示不限制资源,删了也会用默认值 status: {} # 可删:status 是 K8s 自动维护的状态字段,手动写空毫无意义

将现有的资源生成模板导出并保存到文件中
kubectl get svc service -o yaml > my-svc.yaml
cat my-svc.yaml

apiVersion: v1 # 必留:Service 属于核心资源,固定用 v1(Deployment 才用 apps/v1) kind: Service # 必留:定义资源类型为 Service metadata: creationTimestamp: "2026-01-07T12:20:11Z" # 可删:K8s 自动生成的创建时间,手动写会被覆盖 labels: app: nginx # 可选(建议留):给 Service 打标签,方便筛选(和绑定 Pod 无关) managedFields: # 可删:K8s 内部记录谁修改了资源,手动写无意义 - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: .: {} f:app: {} f:spec: f:externalTrafficPolicy: {} f:ports: .: {} k:{"port":80,"protocol":"TCP"}: .: {} f:port: {} f:protocol: {} f:targetPort: {} f:selector: .: {} f:app: {} f:sessionAffinity: {} f:type: {} manager: kubectl-create operation: Update time: "2026-01-07T12:20:11Z" name: service # 必留:Service 名称(同一 Namespace 唯一) namespace: default # 可选(可删):默认就是 default 命名空间,不写也会自动归到 default resourceVersion: "150531" # 可删:K8s 内部版本号,自动生成 uid: 773b38cb-5e41-4fde-ae92-86f30182c6f4 # 可删:K8s 自动生成的资源唯一标识 spec: clusterIP: 10.96.0.147 # 可删:K8s 自动分配 ClusterIP,手动写会被覆盖(除非指定固定 IP) clusterIPs: # 可删:和 clusterIP 重复,自动生成 - 10.96.0.147 externalTrafficPolicy: Cluster # 可选(可删):默认值就是 Cluster,删了不影响 ports: - nodePort: 32305 # 可选(可删):手动指定 NodePort 端口,不写 K8s 会自动分配(30000-32767) port: 80 # 必留:Service 集群内端口(核心) protocol: TCP # 可选(可删):默认协议就是 TCP,删了等价 targetPort: 80 # 必留:Pod 内容器的端口(和容器监听端口一致) selector: app: nginx # 必留:绑定 Pod 的核心标签(必须和 Pod 标签一致) sessionAffinity: None # 可选(可删):默认就是无会话亲和性,删了不影响 type: NodePort # 必留:Service 类型(ClusterIP/NodePort/LoadBalancer) status: loadBalancer: {} # 可删:status 是 K8s 自动维护的状态,手动写空没用

5.3、通过命令查看帮助(重点)

查看deployment控制器的pod模板里容器的参数
kubectl explain deployments.spec.template.spec.containers
或者
kubectl explain pods.spec.containers

总结

本文系统梳理 K8s 项目管理、发布方式与配置清单编写要点,助力高效掌握声明式资源管理及 YAML 实操技能。

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

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

相关文章

新兴市场股市估值与智能物流无人机配送的互动

新兴市场股市估值与智能物流无人机配送的互动 关键词:新兴市场、股市估值、智能物流、无人机配送、机器学习、供应链优化、投资决策 摘要:本文探讨了新兴市场股市估值与智能物流无人机配送技术之间的互动关系。我们将分析无人机配送技术如何影响新兴市场的供应链效率,进而改…

大数据领域数据压缩的常见误区与纠正

大数据领域数据压缩的常见误区与纠正:拨开迷雾,探寻真相 关键词:大数据、数据压缩、误区、无损压缩、有损压缩、压缩算法、存储效率、传输速度 摘要:在大数据时代,数据量呈爆发式增长,数据压缩成为应对数据…

【开题答辩全过程】以 农村留守儿童健康医疗服务系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

(新卷,100分)- 滑动窗口最大和(Java JS Python C)

(新卷,100分)- 滑动窗口最大和(Java & JS & Python & C)题目描述有一个N个整数的数组,和一个长度为M的窗口,窗口从数组内的第一个数开始滑动直到窗口不能滑动为止,每次窗口滑动产生一个窗口和(…

计算机深度学习毕设实战-基于机器学习深度学习算法训练数字识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

神经辐射场NeRF入门:3D视图合成的原理与PyTorch代码实现

NeRF(Neural Radiance Fields,神经辐射场)的核心思路是用一个全连接网络表示三维场景。输入是5D向量空间坐标(x, y, z)加上视角方向(θ, φ),输出则是该点的颜色和体积密度。训练的数据则是同一物体从不同角度拍摄的若干张照片。 …

综合项目实战——电子商城信息查询系统

目录 一、项目核心目标 二、技术选型解析 三、系统整体设计 3.1 架构设计 3.2 核心模块介绍 3.3 系统流程图 四、核心功能实现详解 4.1 用户注册与登录 4.1.1 注册功能实现 4.1.2 登录功能实现 4.2 商品搜索 4.2.1 关键词模糊查询 4.2.2 ID精确查询 4.2.3 动态页…

多台NAS管理新方案:节点小宝4.0服务聚合功能深度体验

作为拥有多台NAS设备的用户,一定在寻找能够统一管理这些设备的解决方案。最近有用户深度体验了节点小宝4.0的服务聚合功能,这给设备管理带来了全新的体验,以下是用户的一些自述:智能服务发现:让设备管理变得简单直观最…

端子与导轨布线工程实践:Altech 工控组件解析

在工业控制系统、自动化设备以及配电柜构建中,端子块与 DIN 导轨布线方案是实现安全、整洁、可靠连接的基础构件。Altech Corporation 是一家拥有多年工业控制元件供应经验的公司,其 DIN 导轨端子块、端子接线解决方案在国际工控市场中被广泛采纳&#x…

大数据场景下ZooKeeper的性能优化秘籍

大数据场景下ZooKeeper的性能优化秘籍 关键词:ZooKeeper、大数据、性能优化、分布式协调、会话管理 摘要:在大数据生态中,ZooKeeper作为Hadoop、Kafka、HBase等系统的"分布式协调管家",常因高并发、海量节点、复杂会话管…

FPGA教程系列-流水线思想初识

FPGA教程系列-流水线思想初识 流水线设计是一种典型的面积换性能的设计。一方面通过对长功能路径的合理划分,在同一时间内同时并行多个该功能请求,大大提高了某个功能的吞吐率;另一方面由于长功能路径被切割成短路径,可以达到更高…

AI原生应用语音合成:助力智能政务语音服务

AI原生应用语音合成:助力智能政务语音服务 关键词:AI原生应用、语音合成、智能政务、TTS技术、自然语言处理、人机交互、政务服务升级 摘要:本文从智能政务的实际需求出发,深度解析AI原生语音合成技术的核心原理与政务场景的适配逻辑。通过“技术原理-场景落地-实战案例”的…

LangChainV1.0[08]-LCEL:LangChain Expression Language

Chain翻译成中文就是“链”,我们将大模型、相关工具等作为组件,链就是负责将这些组件按照某一种逻辑,顺序组合成一个流水线的方式。比如我们要构建一个简单的问答链,就需要把大模型组件和标准输出组件用链串联起来。 1.简单链 fro…

托盘输送机程序那些事儿

托盘输送机程序 硬件配置:PLC:1500SP F-1PN HMI:KTP700 Basic PN 和上位WCS通讯是通过S7读写DB背景数据块的方式实现 程序提供两个版本,V1是源自北起院,看起来比较难懂,各种状态字;V2源自外企&a…

ImageMagick 高效图像处理与自动化指南

在处理海量数字图像时,依靠图形化界面进行逐一操作不仅低效,且极易产生人为失误。ImageMagick 并非一款为绘图设计的交互软件,而是一个专门通过命令行执行复杂图像处理任务的二进制工具集。它被广泛应用于后端开发、自动化运维以及高性能图像…

风速weibull分布随机风速生成Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#x1…

Amphenol LTW 防水线缆 IP67/IP68 结构解析

在工业自动化、户外设备、LED 照明以及传感器系统中,防水线缆组件是保障系统稳定运行的重要基础件。其中,Amphenol LTW 作为专注于防水连接技术的品牌,其防水线缆在 IP67、IP68 等等级应用中具有较高的工程参考价值。 本文从工程应用角度出发…

Linux 网络编程:epoll 实现聊天室

这是 epoll 进阶实战的经典案例 —— 基于epoll 边缘触发(ET) 非阻塞 IO实现高并发聊天室,同时解决 10000 并发连接时的系统限制问题,是理解 epoll 在实际项目中落地的核心实践!一、核心需求与设计思路1. 功能目标支持…

Python 虚拟环境的配置与管理指南

虚拟环境的核心原理 虚拟环境并非重新安装了一套完整的 Python,而是在项目目录下创建了一个包含 Python 解释器副本和独立包管理工具的轻量级目录。激活环境后,系统会将该目录的路径推送到环境变量的最前端,使得终端在调用 Python 指令时优先…

TensorFlow学习系列01 | 实现mnist手写数字识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、前置知识 1、知识总结 概念 作用 归一化 统一数据范围,加速训练 卷积层 提取图像局部特征 池化层 压缩数据,增强鲁棒性 全…