K8S中POD的控制器

一、Pod控制器及其功用

Pod控制器,又稱之為工作負載(workload),是用于實現管理pod的中間層,確保pod資源符合預期的狀態,pod的資源出現故障時,會嘗試進行重啟,當根據重啟策略無效,則會重新新建pod的資源。

pod控制器有多種類型:
1、ReplicaSet: 代用戶創建指定數量的pod副本,確保pod副本數量符合預期狀態,并且支持滾動式自動擴容和縮容功能。
ReplicaSet主要三個組件組成:
(1)用戶期望的pod副本數量
(2)標簽選擇器,判斷哪個pod歸自己管理
(3)當現存的pod數量不足,會根據pod資源模板進行新建
幫助用戶管理無狀態的pod資源,精確反應用戶定義的目標數量,但是RelicaSet不是直接使用的控制器,而是使用Deployment。

2、Deployment:工作在ReplicaSet之上,用于管理無狀態應用,目前來說最好的控制器。支持滾動更新和回滾功能,還提供聲明式配置。
ReplicaSet 與Deployment 這兩個資源對象逐步替換之前RC的作用。

3、DaemonSet:用于確保集群中的每一個節點只運行特定的pod副本,通常用于實現系統級后臺任務。比如ELK服務
特性:服務是無狀態的
服務必須是守護進程

4、StatefulSet:管理有狀態應用

5、Job:只要完成就立即退出,不需要重啟或重建

6、Cronjob:周期性任務控制,不需要持續后臺運行

二、Pod與控制器之間的關系


controllers:在集群上管理和運行容器的 pod 對象, pod 通過 label-selector 相關聯。
Pod 通過控制器實現應用的運維,如伸縮,升級等。


1.Deployment


部署無狀態應用
管理Pod和ReplicaSet
具有上線部署、副本設定、滾動升級、回滾等功能
提供聲明式更新,例如只更新一個新的image
應用場景:web服務

示例:
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
? name: nginx-deployment
? labels:
? ? app: nginx?? ?
spec:
? replicas: 3
? selector:
? ? matchLabels:
? ? ? app: nginx
? template:
? ? metadata:
? ? ? labels:
? ? ? ? app: nginx
? ? spec:
? ? ? containers:
? ? ? - name: nginx
? ? ? ? image: nginx:1.15.4
? ? ? ? ports:
? ? ? ? - containerPort: 80

kubectl create -f nginx-deployment.yaml

kubectl get pods,deploy,rs

//查看控制器配置
kubectl edit deployment/nginx-deployment
apiVersion: apps/v1
kind: Deployment
metadata:
? annotations:
? ? deployment.kubernetes.io/revision: "1"
? creationTimestamp: "2021-04-19T08:13:50Z"
? generation: 1
? labels:
? ? app: nginx?? ??? ??? ??? ??? ?#Deployment資源的標簽
? name: nginx-deployment
? namespace: default
? resourceVersion: "167208"
? selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment
? uid: d9d3fef9-20d2-4196-95fb-0e21e65af24a
spec:
? progressDeadlineSeconds: 600
? replicas: 3?? ??? ??? ??? ??? ?#期望的pod數量,默認是1
? revisionHistoryLimit: 10
? selector:
? ? matchLabels:
? ? ? app: nginx
? strategy:
? ? rollingUpdate:
? ? ? maxSurge: 25%?? ??? ??? ??? ?#升級過程中會先啟動的新Pod的數量不超過期望的Pod數量的25%,也可以是一個絕對值
? ? ? maxUnavailable: 25%?? ??? ?#升級過程中在新的Pod啟動好后銷毀的舊Pod的數量不超過期望的Pod數量的25%,也可以是一個絕對值
? ? type: RollingUpdate?? ??? ??? ?#滾動升級
? template:
? ? metadata:
? ? ? creationTimestamp: null
? ? ? labels:
? ? ? ? app: nginx?? ??? ??? ??? ?#Pod副本關聯的標簽
? ? spec:
? ? ? containers:
? ? ? - image: nginx:1.15.4?? ??? ??? ??? ?#鏡像名稱
? ? ? ? imagePullPolicy: IfNotPresent?? ?#鏡像拉取策略
? ? ? ? name: nginx
? ? ? ? ports:
? ? ? ? - containerPort: 80?? ??? ??? ??? ?#容器暴露的監聽端口
? ? ? ? ? protocol: TCP
? ? ? ? resources: {}
? ? ? ? terminationMessagePath: /dev/termination-log
? ? ? ? terminationMessagePolicy: File
? ? ? dnsPolicy: ClusterFirst
? ? ? restartPolicy: Always?? ??? ??? ??? ?#容器重啟策略
? ? ? schedulerName: default-scheduler
? ? ? securityContext: {}
? ? ? terminationGracePeriodSeconds: 30
......

//查看歷史版本
kubectl rollout history deployment/nginx-deployment
deployment.apps/nginx-deployment
REVISION ?CHANGE-CAUSE
1 ? ? ? ? <none>

2.SatefulSet

部署有狀態應用
穩定的持久化存儲,即Pod重新調度后還是能訪問到相同的持久化數據,基于PVC來實現
穩定的網絡標志,即Pod重新調度后其PodName和HostName不變,基于Headless Service(即沒有Cluster IP的Service)來實現
有序部署,有序擴展,即Pod是有順序的,在部署或者擴展的時候要依據定義的順序依次進行(即從0到N-1,在下一個Pod運行之前所有之前的Pod必須都是Running和Ready狀態),基于init containers來實現
有序收縮,有序刪除(即從N-1到0)

常見的應用場景:數據庫
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

apiVersion: v1
kind: Service
metadata:
? name: nginx
? labels:
? ? app: nginx
spec:
? ports:
? - port: 80
? ? name: web
? clusterIP: None
? selector:
? ? app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
? name: web
spec:
? selector:
? ? matchLabels:
? ? ? app: nginx # has to match .spec.template.metadata.labels
? serviceName: "nginx"
? replicas: 3 # by default is 1
? template:
? ? metadata:
? ? ? labels:
? ? ? ? app: nginx # has to match .spec.selector.matchLabels
? ? spec:
? ? ? terminationGracePeriodSeconds: 10
? ? ? containers:
? ? ? - name: nginx
? ? ? ? image: k8s.gcr.io/nginx-slim:0.8
? ? ? ? ports:
? ? ? ? - containerPort: 80
? ? ? ? ? name: web
? ? ? ? volumeMounts:
? ? ? ? - name: www
? ? ? ? ? mountPath: /usr/share/nginx/html
? volumeClaimTemplates:
? - metadata:
? ? ? name: www
? ? spec:
? ? ? accessModes: [ "ReadWriteOnce" ]
? ? ? storageClassName: "my-storage-class"
? ? ? resources:
? ? ? ? requests:
? ? ? ? ? storage: 1Gi

2.1 satefulset的三個組件

從上面的應用場景可以發現,StatefulSet由以下幾個部分組成:
●Headless Service(無頭服務):用于為Pod資源標識符生成可解析的DNS記錄。
●volumeClaimTemplates(存儲卷申請模板):基于靜態或動態PV供給方式為Pod資源提供專有的固定存儲。
●StatefulSet:用于管控Pod資源。

為什么要有headless?
在deployment中,每一個pod是沒有名稱,是隨機字符串,是無序的。而statefulset中是要求有序的,每一個pod的名稱必須是固定的。當節點掛了,重建之后的標識符是不變的,每一個節點的節點名稱是不能改變的。pod名稱是作為pod識別的唯一標識符,必須保證其標識符的穩定并且唯一。
為了實現標識符的穩定,這時候就需要一個headless service 解析直達到pod,還需要給pod配置一個唯一的名稱。

為什么要有volumeClainTemplate?
大部分有狀態副本集都會用到持久存儲,比如分布式系統來說,由于數據是不一樣的,每個節點都需要自己專用的存儲節點。而在 deployment中pod模板中創建的存儲卷是一個共享的存儲卷,多個pod使用同一個存儲卷,而statefulset定義中的每一個pod都不能使用同一個存儲卷,由此基于pod模板創建pod是不適應的,這就需要引入volumeClainTemplate,當在使用statefulset創建pod時,會自動生成一個PVC,從而請求綁定一個PV,從而有自己專用的存儲卷。

服務發現:就是應用服務之間相互定位的過程。
應用場景:
●動態性強:Pod會飄到別的node節點
●更新發布頻繁:互聯網思維小步快跑,先實現再優化,老板永遠是先上線再慢慢優化,先把idea變成產品掙到錢然后再慢慢一點一點優化
●支持自動伸縮:一來大促,肯定是要擴容多個副本

K8S里服務發現的方式---DNS,使K8S集群能夠自動關聯Service資源的“名稱”和“CLUSTER-IP”,從而達到服務被集群自動發現的目的。

實現K8S里DNS功能的插件:
●skyDNS:Kubernetes 1.3之前的版本
●kubeDNS:Kubernetes 1.3至Kubernetes 1.11
●CoreDNS:Kubernetes 1.11開始至今

vim pod6.yaml?
apiVersion: v1
kind: Pod
metadata:
? name: dns-test
spec:
? containers:
? - name: busybox
? ? image: busybox:1.28.4
? ? args:
? ? - /bin/sh
? ? - -c
? ? - sleep 36000
? restartPolicy: Never
??
kubectl create -f pod6.yaml?

//解析kubernetes和nginx-service名稱
kubectl exec -it dns-test sh
/ # nslookup kubernetes
Server: ? ?10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name: ? ? ?kubernetes
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
/ # nslookup nginx-service
Server: ? ?10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name: ? ? ?nginx-service
Address 1: 10.96.173.115 nginx-service.default.svc.cluster.local
?

2.2 查看statefulset的定義

2.3 清單定義StatefulSet

apiVersion: v1
kind: Service
metadata:
? name: myapp-svc
? labels:
? ? app: myapp-svc
spec:
? ports:
? - port: 80
? ? name: web
? clusterIP: None
? selector:
? ? app: myapp-pod
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
? name: myapp
spec:
? serviceName: myapp-svc
? replicas: 3
? selector:
? ? matchLabels:
? ? ? app: myapp-pod
? template:
? ? metadata:
? ? ? labels:
? ? ? ? app: myapp-pod
? ? spec:
? ? ? containers:
? ? ? - name: myapp
? ? ? ? image: ikubernetes/myapp:v1
? ? ? ? ports:
? ? ? ? - containerPort: 80
? ? ? ? ? name: web
? ? ? ? volumeMounts:
? ? ? ? - name: myappdata
? ? ? ? ? mountPath: /usr/share/nginx/html
? volumeClaimTemplates:
? - metadata:
? ? ? name: myappdata
?? ? ?annotations: ? ? ? ? ?#動態PV創建時,使用annotations在PVC里聲明一個StorageClass對象的標識進行關聯
? ? ? ? volume.beta.kubernetes.io/storage-class: nfs-client-storageclass
? ? spec:
? ? ? accessModes: ["ReadWriteOnce"]
? ? ? resources:
? ? ? ? requests:
? ? ? ? ? storage: 2Gi

解析上例:由于 StatefulSet 資源依賴于一個實現存在的 Headless 類型的 Service 資源,所以需要先定義一個名為 myapp-svc 的 Headless Service 資源,用于為關聯到每個 Pod 資源創建 DNS 資源記錄。接著定義了一個名為 myapp 的 StatefulSet 資源,它通過 Pod 模板創建了 3 個 Pod 資源副本,并基于 volumeClaimTemplates 向前面創建的PV進行了請求大小為 2Gi 的專用存儲卷。
?

2.4實驗案例

定義PV
vim pv-demo.yaml

kubectl apply -f pv-demo.yaml

kubectl get pv
NAME ? ? ?CAPACITY ? ACCESS MODES ? RECLAIM POLICY ? STATUS ? ? ?CLAIM ? ? STORAGECLASS ? REASON ? ?AGE
pv001 ? ? 1Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Available ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7s
pv002 ? ? 2Gi ? ? ? ?RWO ? ? ? ? ? ?Retain ? ? ? ? ? Available ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7s
pv003 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Available ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7s
pv004 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Available ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7s
pv005 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Available ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ??? ??? ?7s

創建statefulset

kubectl get svc ?#查看創建的無頭服務myapp-svc
NAME ? ? ? ? TYPE ? ? ? ?CLUSTER-IP ? ? ? EXTERNAL-IP ? PORT(S) ? ? ? ? ? ? AGE
kubernetes ? ClusterIP ? 10.96.0.1 ? ? ? ?<none> ? ? ? ?443/TCP ? ? ? ? ? ? 50d
myapp-svc ? ?ClusterIP ? None ? ? ? ? ? ? <none> ? ? ? ?80/TCP ? ? ? ? ? ? ?38s

kubectl get sts ? ?#查看statefulset
NAME ? ? ?DESIRED ? CURRENT ? AGE
myapp ? ? 3 ? ? ? ? 3 ? ? ? ? 55s

kubectl get pvc ? ?#查看pvc綁定
NAME ? ? ? ? ? ? ? ?STATUS ? ?VOLUME ? ?CAPACITY ? ACCESS MODES ? STORAGECLASS ? AGE
myappdata-myapp-0 ? Bound ? ? pv002 ? ? 2Gi ? ? ? ?RWO ? ? ? ? ? ? ? ? ? ? ? ? ? 1m
myappdata-myapp-1 ? Bound ? ? pv003 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ? ? ? ? ? ? ? ? 1m
myappdata-myapp-2 ? Bound ? ? pv004 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ? ? ? ? ? ? ? ? 1m

kubectl get pv ? ?#查看pv綁定
NAME ? ? ?CAPACITY ? ACCESS MODES ? RECLAIM POLICY ? STATUS ? ? ?CLAIM ? ? ? ? ? ? ? ? ? ? ? STORAGECLASS ? REASON ? ?AGE
pv001 ? ? 1Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Available ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6m
pv002 ? ? 2Gi ? ? ? ?RWO ? ? ? ? ? ?Retain ? ? ? ? ? Bound ? ? ? default/myappdata-myapp-0 ? ? ? ? ? ? ? ? ? ? ? ? ? ?6m
pv003 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Bound ? ? ? default/myappdata-myapp-1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?6m
pv004 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Bound ? ? ? default/myappdata-myapp-2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?6m
pv005 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ?Retain ? ? ? ? ? Available ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6m

kubectl get pods ? #查看Pod信息
NAME ? ? ? ? ? ? ? ? ? ? READY ? ? STATUS ? ?RESTARTS ? AGE
myapp-0 ? ? ? ? ? ? ? ? ?1/1 ? ? ? Running ? 0 ? ? ? ? ?2m
myapp-1 ? ? ? ? ? ? ? ? ?1/1 ? ? ? Running ? 0 ? ? ? ? ?2m
myapp-2 ? ? ? ? ? ? ? ? ?1/1 ? ? ? Running ? 0 ? ? ? ? ?2m

kubectl delete -f stateful-demo.yaml?? ?

//當刪除的時候是從myapp-2開始進行刪除的,關閉是逆向關閉
kubectl get pods -w

//此時PVC依舊存在的,再重新創建pod時,依舊會重新去綁定原來的pvc
kubectl apply -f stateful-demo.yaml

kubectl get pvc
NAME ? ? ? ? ? ? ? ?STATUS ? ?VOLUME ? ?CAPACITY ? ACCESS MODES ? STORAGECLASS ? AGE
myappdata-myapp-0 ? Bound ? ? pv002 ? ? 2Gi ? ? ? ?RWO ? ? ? ? ? ? ? ? ? ? ? ? ? 5m
myappdata-myapp-1 ? Bound ? ? pv003 ? ? 2Gi ? ? ? ?RWO,RWX ? ? ? ? ? ? ? ? ? ? ? 5m
myappdata-myapp-2 ? Bound ? ? pv004 ? ? 2Gi ? ? ? ?RWO,RWX

3.deployment和satefulset總結


無狀態:
1)deployment 認為所有的pod都是一樣的
2)不用考慮順序的要求
3)不用考慮在哪個node節點上運行
4)可以隨意擴容和縮容?

有狀態
1)實例之間有差別,每個實例都有自己的獨特性,元數據不同,例如etcd,zookeeper
2)實例之間不對等的關系,以及依靠外部存儲的應用。

常規service和無頭服務區別
service:一組Pod訪問策略,提供cluster-IP群集之間通訊,還提供負載均衡和服務發現。
Headless service:無頭服務,不需要cluster-IP,而是直接以DNS記錄的方式解析出被代理Pod的IP地址。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux基礎命令[9]-wc

文章目錄 1. wc 命令說明2. wc 命令語法3. wc 命令示例3.1 不加參數3.2 -c&#xff08;統計字節數&#xff09;3.3 -m&#xff08;統計字符數&#xff09;3.4 -l&#xff08;統計行數&#xff09;3.5 -L&#xff08;最長一行的長度&#xff09;3.6 -w&#xff08;統計單詞數&am…

Arcgis實現點位空間位置從上到下從左到右排序

效果 背景 工作項目中經常會遇到需要對網格進行編號&#xff0c;而編號是有一定原則的&#xff0c;比如空間位置從上到下從左到右&#xff0c;或者其它原則&#xff0c;那么都可以通過下面的方式來實現 1、準備數據 點shp文件&#xff0c;查看初始FID字段標注&#xff0c;目…

transformer--transformer模型構建和測試

前面幾節進行了各種組件的學習和編碼&#xff0c;本節將組件組成transformer&#xff0c;并對其進行測試 EncoderDecoder 編碼器解碼器構建 使用EnconderDecoder實現編碼器-解碼器結構 # 使用EncoderDeconder類實現編碼器和解碼器class EncoderDecoder(nn.Module):def __ini…

飛書文檔批量導出

背景需求 最近所參與的項目即將結項&#xff0c;需要將飛書中的產品需求文檔&#xff08;PRD&#xff09;交付給甲方&#xff0c;由于文檔較多&#xff0c;大概有兩百多個&#xff0c;一個一個的下載導出&#xff0c;太麻煩了&#xff08;PS&#xff1a;本人比較懶&#xff09;…

ROS create_wall_timer/create_timer函數區別

在ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;create_wall_timer 和 create_timer 是用于創建定時器的兩個不同的函數&#xff0c;它們在使用上有一些區別&#xff1a; Clock Type: create_wall_timer: 創建的定時器是基于Wall clock的&#xff0c;這意…

軟考筆記--結構化分析方法

結構化分析&#xff08;SA&#xff09;方法的基本思想是自定向下&#xff0c;逐層分解&#xff0c;把一個大問題分解成若干個小問題&#xff0c;每一個小問題再分解成若干個更小的問題。經過逐層分解&#xff0c;每個最低層的問題都是足夠簡單、容易解決的。 SA方法分析模型的…

78. 子集(力扣LeetCode)

文章目錄 78. 子集題目描述回溯算法 78. 子集 題目描述 給你一個整數數組 nums &#xff0c;數組中的元素 互不相同 。返回該數組所有可能的子集&#xff08;冪集&#xff09;。 解集 不能 包含重復的子集。你可以按 任意順序 返回解集。 示例 1&#xff1a; 輸入&#xff…

selenium高亮元素

def set_high_light_elment(self, element): """高亮web元素。 Args: element: WebElement:web元素 """ element_styleelement.get_attribute(style) self.mark_dom_text(element_s…

【MySQL】表的約束——空屬性、默認值、列描述、zerofill、主鍵、自增長、唯一鍵、外鍵

文章目錄 MySQL表的約束1. 空屬性2. 默認值3. 列描述4. zerofill5. 主鍵6. 自增長7. 唯一鍵8. 外鍵 MySQL 表的約束 MySQL中的表的約束是一種規則&#xff0c;用于限制或保護表中數據的完整性和合法性。約束可以確保數據在插入、更新或刪除時滿足特定的條件&#xff0c;從而維護…

MySQL相關問題

MySQL相關問題 一、MySQL支持哪些存儲引擎&#xff1f;二、MySQL是如何執行一條SQL的&#xff1f;三、MySQL數據庫InnoDB存儲引擎是如何工作的&#xff1f;四、如果要對數據庫進行優化&#xff0c;該怎么優化&#xff1f;五、MySQL如何定位慢查詢&#xff1f;六、如何分析MySQL…

揭秘App訪問量背后的秘密:數據統計與分析

在移動互聯網時代&#xff0c;App已成為人們日常生活的重要組成部分。對于App運營者來說&#xff0c;了解用戶的訪問量、行為習慣等數據至關重要。本文將深入探討如何精準統計App訪問量&#xff0c;為運營者提供有價值的數據支持。 一、App訪問量統計的重要性 訪問量是衡量A…

計算機專業必看的十部電影

計算機專業必看的十部電影 1. 人工智能2. 黑客帝國3. 盜夢空間4. 社交網絡5. Her6. 模仿游戲7. 斯諾登8. 頭號玩家9. 暗網10. 網絡迷蹤 計算機專業必看的十部電影&#xff0c;就像一場精彩盛宴&#xff01; 《黑客帝國》讓你穿越虛擬世界&#xff0c;感受高科技的魅力《模仿游戲…

公網IP怎么獲取?

公網IP是網絡中設備的唯一標識符&#xff0c;用于在Internet上進行通信和定位。對于普通用戶來說&#xff0c;了解如何獲取自己的公網IP是很有必要的&#xff0c;本文將介紹幾種獲取公網IP的方法。 方法一&#xff1a;通過路由器查詢 大多數家庭和辦公室使用的路由器都會有一個…

深入解析Mybatis-Plus框架:簡化Java持久層開發(七)

&#x1f340; 前言 博客地址&#xff1a; CSDN&#xff1a;https://blog.csdn.net/powerbiubiu &#x1f44b; 簡介 本章節介紹如何通過Mybatis-Plus刪除數據庫中的數據。 本章節不需要前置準備&#xff0c;繼續使用之前的測試類&#xff0c;數據庫表進行操作。 &#x1f4…

一文詳解mysql 的鎖

MySQL鎖是用于管理數據庫中的并發操作的一種機制&#xff0c;它可以確保數據的一致性和完整性。 按范圍劃分&#xff1a;包括全局鎖、表級鎖、頁級鎖和行級鎖。 按類型劃分&#xff1a;包括間隙鎖、臨鍵鎖和記錄鎖。 按級別劃分&#xff1a;包括共享鎖&#xff08;S鎖&#xff…

如何在Windows輕量應用服務器上安裝和配置SSH?

如何在Windows輕量應用服務器上安裝和配置SSH&#xff1f; 檢查OpenSSH的可用性&#xff1a;首先&#xff0c;需要以管理員身份打開PowerShell并運行命令Get-WindowsCapability - Online | Where-Object Name - like OpenSSH*來檢查OpenSSH服務是否可用。如果服務未啟動或不可…

day03_Vue_Element

文章目錄 01.Ajax1.1 Ajax 概述1.2 同步異步1.3 原生Ajax 2. Axios2.1 Axios的基本使用2.2 Axios快速入門2.3請求方法的別名2.4 案例 3 前后臺分離開發3.1 前后臺分離開發介紹 04 YAPI4.1 YAPI介紹4.2 接口文檔管理 05 前端工程化5.1 前端工程化介紹5.2 前端工程化入門5.2.1 環…

【Python】變量的引用

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介紹&#xff1a;"謓澤"正在路上朝著"攻城獅"方向"前進四" &#x1f50e;&#x1f3c5; 榮譽&#xff1a;2021|2022年度博客之星物聯網與嵌入式開發TOP5|TOP4、2021|2222年獲評…

2024.3.4 作業

1、流式域套接字 1>tcp服務端實現 #include<myhead.h> int main(int argc, const char *argv[]) {//1、創建套接字int sfd socket(AF_UNIX, SOCK_STREAM, 0);if(sfd -1){perror("socket error");return -1;}//2、判斷套接字文件是否存在&#xff0c;如果…

5G工業智能網關保障煤礦安全生產

隨著物聯網技術發展與煤礦需求的持續激增&#xff0c;礦山礦井的分布范圍廣泛、戶外環境惡劣等管理問題急需解決&#xff0c;而物聯網網關工業級設計能夠無懼惡劣環境干擾&#xff0c;輕松解決戶外網絡部署問題。 工業網關通過采集礦井內的各類傳感器數據對礦井進行遠程監控&a…