004.OpenShift命令及故障排查

来源:https://www.cnblogs.com/itzgr/archive/2020/06/20/13168141.html
-Advertisement-
Play Games

一 CLI訪問OpenShift資源 1.1 資源操作 OCP將OpenShift集群中的為由主節點管理的對象統稱為資源,如:node、service、pod、project、deployment、user。 即使針對的是不同的資源,OpenShift命令行工具也提供了一種統一的、一致的方法來更新、 ...


一 CLI訪問OpenShift資源

1.1 資源操作

OCP將OpenShift集群中的為由主節點管理的對象統稱為資源,如:node、service、pod、project、deployment、user。 即使針對的是不同的資源,OpenShift命令行工具也提供了一種統一的、一致的方法來更新、修改、刪除和查詢這些資源。 oc命令行工具提供了在軟體開發項目的整個交付生命周期中修改和管理資源的常見操作。

1.2 安裝oc工具

在OpenShift安裝過程中,oc命令行工具安裝在所有master和node節點上,還可以在不屬於OpenShift集群的機器。 安裝後,可以使用用戶名和密碼對任何主節點通過身份驗證後執行相關命令。 根據使用的平臺,安裝oc命令行工具有以下幾種方式: yum安裝:在RHEL平臺上,可通過以下命令安裝oc客戶端命令。 [user@host ~]$ sudo yum install atomic-openshift-clients 其它 Linux 發行版本和操作系統,需在擁有 OpenShift 訂閱後,在 Red Hat Customer Portal 中下載。 提示:oc安裝完成後自動補全需要退出一次才可生效,或者source /etc/bash_completion.d/oc。

1.3 oc主要查詢命令

[student@workstation ~]$ oc --help #顯示幫助信息 [student@workstation ~]$ oc login -u developer -p redhat https://master.lab.example.com #登錄到OpenShift集群 提示:從client成功通過身份驗證之後,OpenShift將授權令牌保存在用戶的主文件夾中。此令牌用於後續請求,從而無需重新輸入憑據或完整的主URL。
  1 [root@master ~]# oc whoami
  2 system:admin					#master的root用戶為集群的最高許可權的用戶
  3 [student@workstation ~]$ oc whoami		        #查看當前用戶
  4 developer
  5 [student@workstation ~]$ oc new-project working	#創建project
  6 [student@workstation ~]$ oc status		        #查看項目狀態
  7 In project working on server https://master.lab.example.com:443
  8 You have no services, deployment configs, or build configs.
  9 Run 'oc new-app' to create an application.
 10 [student@workstation ~]$ oc delete project working	#刪除project
 11 [student@workstation ~]$ oc logout		        #退出該集群。
 12 [student@workstation ~]$ oc get pods		#查看pod
 13 NAME                      READY     STATUS    RESTARTS   AGE
 14 hello-openshift-1-6ls8z   1/1       Running   0          4h
 15 [student@workstation ~]$ oc get all		        #查看所有主要組件信息
 16 [student@workstation ~]$ oc get pods -w		#-w表示以監視模式運行

1.4 oc 其他命令

oc describe:如果oc get提供的摘要不夠,可以使用oc describe命令檢索關於資源的更詳細信息。 [student@workstation ~]$ oc describe pod hello-openshift-1-6ls8z oc export:使用oc export命令導出資源的定義。典型的用例包括創建備份,或者用於修改定義。預設情況下,export命令以YAML格式輸出對象表示,但是可以通過提供-o選項來更改。 oc create:使用oc create命令從資源定義創建資源。通常,這與用於編輯定義的oc export命令相匹配。 oc delete RESOURCE_TYPE name:使用oc delete命令從OpenShift集群中刪除資源。 註意:部分資源直接刪除後會重新創建,如基於rc的pod,需要對OpenShift體系資源展示形式有一個基本的瞭解。 oc exec:使用oc exec命令在容器中執行命令,可以使用此命令作為腳本的一部分運行互動式和非互動式批處理命令。 oc rsh POD:oc rsh pod命令打開到容器的遠程shell會話,要遠程登錄到容器shell並執行命令,請運行以下命令。 [student@workstation ~]$ oc rsh <pod> 註意:oc rsh需要pod中存在相應的shell,如bash。

二 OpenShift資源類型

2.1 常見資源

OpenShift容器平臺中的應用程式由不同類型的資源組成,主要常見的類型有:
  • Container:如何在可移植Linux環境中運行一個或多個進程的定義。容器從一個映像啟動,並且通常與同一機器上的其他容器隔離。
  • Image:一個分層的Linux文件系統,包含應用程式代碼、依賴關係和函數庫等。image由一個名稱標識,該名稱可以是當前集群的本地名稱,也可以指向遠程Docker倉庫。
  • Pod:部署在節點上並共用唯一IP地址和捲(持久存儲)的一個或多個容器,Pods還為每個容器定義安全性和運行時策略。
  • Label:標簽是鍵值對,可以分配給系統中的任何資源進行分組和選擇。通常資源使用標簽來標識其他資源集。
  • Volume:預設情況下容器不是持久性的,即容器的內容在重新啟動時被清除。volume是掛載在pod及其容器上的文件系統,它們可能由許多本地或網路的存儲提供。最簡單的捲類型是EmptyDir,它是一臺機器上的臨時目錄。
  • Node:node是集群中用來運行容器的節點,node通常由管理員管理,而不是由最終用戶管理。
  • Service:service是表示一組pod的邏輯名稱,service被分配一個IP地址和一個DNS名稱,可以通過埠或route向集群外部公開。名為SERVICE_HOST的環境變數會自動註入到其他pod中。
  • Route:route是一個DNS條目,創建它是為了指向一個service,以便可以從集群外部訪問它。可以配置一個或多個路由器來處理這些route,通常通過HAProxy負載均衡器。
  • Replication Controller:Replication Controller基於匹配一組label的Templates維護特定數量的pod。如果刪除了pod,控制器將創建該pod的新副本。Replication Controller最常用來表示基於image的應用程式部分的單個部署。
  • Deployment Configuration:deployment configuration定義pod的模板,併在屬性更改時管理部署新映像或配置更改。單個deployment configuration通常類似於單個微服務。deployment configuration可以支持許多不同的部署模式,包括完全重啟、可定製的滾動更新以及生命周期前後的順序。每個deployment都表示為一個replication controller。
  • Build Configuration:build configuration包含如何將源代碼和基本image構建為新image的描述。Build可以是基於源代碼的,可以為常見語言(如Java、PHP、Ruby或Python)或基於docker的(從Dockerfile創建構建)使用構建器映像。每個build configuration都有webhook,可以通過對其基本映像的更改自動觸發。
  • Build:構建從源代碼、其他圖像、Dockerfiles或二進位輸入創建新image。Build在容器中運行,具有與普通pod相同的限制。Build通常會導致將image推入Docker倉庫中,但也可以選擇運行post-build測試而不push到image倉庫。
  • Image Streams and Image Stream Tags:IS使用標記名稱對相關is進行分組。它類似於源代碼倉庫中的分支。每個is可以有一個或多個標記(預設標記稱為“latest”),這些標記可能指向外部Docker倉庫、同一is中的其他標記,或者被控製為直接指向已知image。此外,可以通過集成的Docker倉庫直接將image push到docker倉庫。
  • Secret:secret資源可以保存文本或二進位secrets,以便註入至pod。預設情況下,在/var/run/secrets/kubernetes.io/serviceaccount上,每個容器都有一個secret,其中包含訪問API有限特權的令牌。可以創建新的secret並將它們掛載到自己的pod中,也可以引用構建中的secret(用於連接遠程伺服器),或者使用它們將遠程image導入到is中。
  • Project:所有上述資源(node除外)都存在於項目中。項目具有成員列表及其role(如view、edit或admin),以及運行的pod上的一組安全控制,並限制項目可以使用多少資源,資源名稱在項目中是惟一的。
使用oc types命令快速查看可用的概念和類型。

2.2 創建應用

簡單的應用程式、複雜的多層應用程式和微服務應用程式都可以使用資源定義文件來描述。 這個文件包含許多pod定義、連接這些pod的服務定義、用於水平伸縮應用程式pod的rc或dc、用於持久存儲應用程式數據的持久捲,以及OpenShift可以管理的任何其他需要的內容。 oc new-app命令可以使用-o json或-o yaml選項分別創建以json或yaml格式的定義文件的資源。可以使用oc create -f <filename>命令調用定義文件,並將其用於創建應用程式,或者與其他資源定義文件合併以創建複合應用程式。 oc new-app命令可以以許多不同的方式創建在OpenShift上運行的pod應用程式。它可以使用source-to-image (S2I)流程從現有docker映像、Dockerfiles或原始源代碼創建pod。 運行oc new-app -h命令,瞭解在OpenShift上創建新應用程式的所有不同選項。最常見的選項如下: 運行以下命令創建應用程式。OpenShift根據Docker配置文件的ADD_REGISTRY選項定義的倉庫 pull image。 $ oc new-app mysql MYSQL_USER=user MYSQL_PASSWORD=pass MYSQL_DATABASE=testdb -l db=mysql 根據私有倉庫中的image創建應用程式。 $ oc new-app --docker-image=myregistry.com/mycompany/myapp --name=myapp 根據存儲在Git庫中的源代碼創建應用程式。 $ oc new-app https://github.com/openshift/ruby-hello-world --name=ruby-hello 創建基於存儲在Git庫中的源代碼並引用IS的應用程式。 $ oc new-app https://mygitrepo/php-hello -i php:7.0 --name=php-hello 從Docker配置文件的ADD_REGISTRY指令定義的可用倉庫之一創建一個基於mysql映像的應用程式。l db=mysql選項定義了一個值為mysql的db標簽。 $ oc new-app mysql MYSQL_USER=user \ MYSQL_PASSWORD=pass \ MYSQL_DATABASE=testdb \ -l db=mysql 下圖顯示了oc new-app命令在參數為容器image時創建的Kubernetes和OpenShift資源。該命令創建dc、is和svc,可以通過埠或route從外部訪問。 resources created by the oc new-app command_v1 提示:通過使用帶有源代碼的oc new-app,將創建一個build configuration,而bc又從源代碼創建一個新的應用程式。但是,如果命令中沒有使用源代碼,則不會創建gc。該命令始終為應用程式創建dc和svc。

三 oc使用練習

3.1 前置準備

準備完整的OpenShift集群,參考《003.OpenShift網路》2.1。

3.2 本練習準備

[student@workstation ~]$ lab manage-oc setup

3.3 驗證OpenShift

  1 [student@workstation ~]$ oc login -u admin -p redhat https://master.lab.example.com
  2 [student@workstation ~]$ oc project default
  3 Already on project "default" on server "https://master.lab.example.com:443".
  4 [student@workstation ~]$ oc project default
  5 Already on project "default" on server "https://master.lab.example.com:443".
  6 [student@workstation ~]$ oc get nodes
  7 NAME                     STATUS    ROLES     AGE       VERSION
  8 master.lab.example.com   Ready     master    23h       v1.9.1+a0ce1bc657
  9 node1.lab.example.com    Ready     compute   23h       v1.9.1+a0ce1bc657
 10 node2.lab.example.com    Ready     compute   23h       v1.9.1+a0ce1bc657
 11 [student@workstation ~]$ oc describe node master.lab.example.com		#查看master節點詳情
 12 [student@workstation ~]$ oc describe node node1.lab.example.com
 13 [student@workstation ~]$ oc describe node node2.lab.example.com
 14 [student@workstation ~]$ oc get pods -o wide
 15 NAME                       READY     STATUS    RESTARTS   AGE       IP              NODE
 16 docker-registry-1-8v7sh    1/1       Running   4          23h       10.129.0.30     node2.lab.example.com
 17 docker-registry-1-rrmhm    1/1       Running   2          23h       10.128.0.12     node1.lab.example.com
 18 registry-console-1-xzxxp   1/1       Running   4          23h       10.129.0.31     node2.lab.example.com
 19 router-1-fwttd             1/1       Running   4          23h       172.25.250.12   node2.lab.example.com
 20 router-1-xdw84             1/1       Running   2          23h       172.25.250.11   node1.lab.example.com
 21 [student@workstation ~]$ oc  describe pod docker-registry-1-8v7sh		#查看pod詳情

3.4 pod操作

[student@workstation ~]$ oc exec docker-registry-1-8v7sh hostname #執行pod中命令 docker-registry-1-8v7sh [student@workstation ~]$ oc exec router-1-fwttd ls / [student@workstation ~]$ oc exec docker-registry-1-8v7sh cat /etc/resolv.conf 提示:只要pod中存在的命令,都可以通過oc exec直接執行。 [student@workstation ~]$ oc rsh docker-registry-1-8v7sh #進入pod的shell sh-4.2$ ls /

3.5 oc其他操作

[student@workstation ~]$ oc status -v #現實詳細的狀態 clipboard [student@workstation ~]$ oc get events #查看集群生命周期事件 [student@workstation ~]$ oc get all #獲取所有資源信息

3.6 導出資源

[student@workstation ~]$ oc export pod docker-registry-1-8v7sh 提示:oc export命令通常用於導出現有資源,並將它們轉換為配置文件(YAML或JSON),以便備份或在集群的其他地方重新創建資源。 [student@workstation ~]$ oc export svc,dc docker-registry --as-template=docker-registry #通過將--as-template選項傳遞給oc export命令,將多個資源作為OpenShift模板同時導出。 [student@workstation ~]$ oc export svc,dc docker-registry > docker-registry.yaml #也可以使用重定嚮導出 [student@workstation ~]$ oc export --help #查看幫助

四 oc常見故障排除

4.1 常見環境信息

使用RPM安裝的OCP,那麼master和node的ocp相關服務將作為Red Hat Enterprise Linux服務運行。從master和node使用標準的sosreport實用程式,收集關於環境的信息,以及docker和openshift相關的信息。 [root@master ~]# sosreport -k docker.all=on -k docker.logs=on sosreport命令創建一個包含所有相關信息的壓縮歸檔文件,並將其保存在/var/tmp目錄中。 另一個有用的診斷工具是oc adm diagnostics命令,能夠在OpenShift集群上運行多個診斷檢查,包括network、日誌、內部倉庫、master節點和node節點的服務檢查等等。oc adm diagnostics --help命令,獲取幫助。

4.2 常見診斷命令

oc客戶端命令是用來檢測和排除OpenShift集群中的問題的主要工具。它有許多選項,能夠檢測、診斷和修複由集群管理的主機和節點、服務和資源的問題。若已授權所需的許可權,可以直接編輯集群中大多數托管資源的配置。
  • oc get events
事件允許OpenShift記錄集群中生命周期事件的信息,以統一的方式查看關於OpenShift組件的信息。oc get events命令提供OpenShift namespace的事件信息,可實現以下事件的捕獲:
    • Pod創建和刪除
    • pod調度的節點
    • master和node節點的狀態
事件通常用於故障排除,從而獲得關於集群中的故障和問題的高級信息,然後使用日誌文件和其他oc子命令進一步定位。 示例:使用以下命令獲得特定項目中的事件列表。 [student@workstation ~]$ oc get events -n <project> 也可以通過Web控制台進行事件的查看events。
  • oc log
oc logs命令查看build、deployment或pod的日誌輸出,。 示例1:使用oc命令查看pod的日誌。 [student@workstation ~]$ oc logs pod 示例2:使用oc命令查看build的日誌。 [student@workstation ~]$ oc logs bc/build-name 使用oc logs命令和-f選項實時跟蹤日誌輸出。例如,這對於連續監視build的進度和檢查錯誤非常有用。 也可以通過Web控制台進行事件的查看log。
  • oc rsync
oc rsync命令將內容複製到正在運行的pod中的目錄或從目錄複製內容。如果一個pod有多個容器,可以使用-c選項指定容器ID。否則,它預設為pod中的第一個容器。通常用於從容器傳輸日誌文件和配置文件。 示例1:將pod目錄中的內容複製到本地目錄。 [student@workstation ~]$ oc rsync <pod>:<pod_dir> <local_dir> -c <container> 示例2:將內容從本地目錄複製到pod的目錄中。 [student@workstation ~]$ oc rsync <local_dir> <pod>:<pod_dir> -c <container>
  • oc port-forward
使用oc port-forward命令將一個或多個本地埠轉發到pod。這允許在本地監聽特定或隨機埠,並將數據轉發到pod中的特定埠。 示例1:本地監聽3306並轉發到pod的3306. [student@workstation ~]$ oc port-forward <pod> 3306:3306

五 TS常見故障

5.1 資源限制和配額問題

對於設置了資源限制和配額的項目,不適當的資源配置將導致部署失敗。使用oc get events和oc describe命令來排查失敗的原因。 例如試圖創建超過項目中pod數量配額限制的pod數量,那麼在運行oc get events命令時會提示: Warning FailedCreate {hello-1-deploy} Error creating: pods "hello-1" is forbidden: exceeded quota: project-quota, requested: cpu=250m, used: cpu=750m, limited: cpu=900m

5.2 S2I build失敗

使用oc logs命令查看S2I構建失敗。例如,要查看名為hello的構建配置的日誌: [student@workstation ~]$ oc logs bc/hello 例如可以通過在build configuration策略中指定BUILD_LOGLEVEL環境變數來調整build日誌的詳細程度。
  1 {
  2 "sourceStrategy": {
  3 ...
  4 "env": [
  5 {
  6 "name": "BUILD_LOGLEVEL",
  7 "value": "5"
  8 }
  9 ]
 10 }
 11 }

5.3 ErrImagePull和imgpullback錯誤

通常是由不正確的deployment configuration造成、部署期間引用的錯誤或缺少image或Docker配置不當造成。 使用oc get events和oc describe命令排查,通過使用oc edit dc/<deploymentconfig>編輯deployment configuration來修複錯誤。

5.4 docker配置異常

master和node上不正確的docker配置可能會在部署期間導致許多錯誤。 通常檢查ADD_REGISTRY、INSECURE_REGISTRY和BLOCK_REGISTRY設置。使用systemctl status, oc logs, oc get events和oc describe命令對問題進行排查。 可以通添加/etc/sysconfig/docker配置文件中的--log-level參數來更改docker服務日誌級別。 示例:將日誌級別設置為debug。 OPTIONS='--insecure-registry=172.30.0.0/16 --selinux-enabled --log-level=debug'

5.5 master和node節點失敗

運行systemctl status命令,對atomicopenshift-master、atom-openshift-node、etcd和docker服務中的問題進行排查。使用journalctl -u <unit-name>命令查看與前面列出的服務相關的系統日誌。 可以通過在各自的配置文件中編輯--loglevel變數,然後重新啟動關聯的服務,來增加來自atom-openshift-node、atomicopenshift-master-controllers和atom-openshift-master-api服務的詳細日誌記錄。 示例:設置OpenShift主控制器log level為debug級別,修改/etc/sysconfig/atomic-openshift-master-controllers文件。 OPTIONS=--loglevel=4 --listen=https://0.0.0.0:8444 延伸: Red Hat OpenShift容器平臺有五個級別的日誌詳細程度,無論日誌配置如何,日誌中都會出現帶有致命、錯誤、警告和某些信息嚴重程度的消息。
  • 0:只有錯誤和警告
  • 2:正常信息(預設)
  • 4:debug級信息
  • 6:api級debug信息(請求/響應)
  • 8:帶有完整請求體的API debug信息

5.6 調度pod失敗

OpenShift master調度pod在node上運行,通常由於node本身沒有處於就緒狀態,也由於資源限制和配額,pod無法運行。 使用oc get nodes命令驗證節點的狀態。在調度失敗期間,pod將處於掛起狀態,可以使用oc get pods -o wide命令進行檢查,該命令還顯示了計劃在哪個節點上運行pod。使用oc get events和oc describe pod命令檢查調度失敗的詳細信息。 示例1:如下所示pod調度失敗,原因是CPU不足。 {default-scheduler } Warning FailedScheduling pod (FIXEDhello-phb4j) failed to fit in any node fit failure on node (hello-wx0s): Insufficient cpu fit failure on node (hello-tgfm): Insufficient cpu fit failure on node (hello-qwds): Insufficient cpu 示例2:如下所示pod調度失敗,原因是節點沒有處於就緒狀態,可通過oc describe排查。 {default-scheduler } Warning FailedScheduling pod (hello-phb4j): no nodes available to schedule pods

六 常見問題排查

6.1 前置準備

準備完整的OpenShift集群,參考《003.OpenShift網路》2.1。

6.2 本練習準備

[student@workstation ~]$ lab common-troubleshoot setup

6.3 創建應用

[student@workstation ~]$ oc new-project common-troubleshoot [student@workstation ~]$ oc new-app --name=hello -i php:5.4 \ #從源代碼創建應用 > http://services.lab.example.com/php-helloworld clipboard

6.4 查看詳情

[student@workstation ~]$ oc describe is php -n openshift
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:背景 1. 講故事 在開始本文之前,真的好想做個問卷調查,到底有多少人和我一樣,對 JsonConvert 的認識只局限在 SerializeObject 和 DeserializeObject 這兩個方法上(┬_┬), 這樣我也好結伴同行,不再孤單落魄😁😁😁,或許是這兩個方法基本上能夠解 ...
  • 在管理節點上能夠訪問到容器服務的原因是通過訪問本機的80,通過iptables規則把流量轉發給docker_gwbridge,docker_gwbridge通過內核把流量轉發給ingress網路,因為ingress生效範圍是整個swarm,這意味著管理節點和work節點共用一個swarm的網路空間... ...
  • 環境:CentOS 7.6.1810 現象:通過yum安裝程式時,每個鏡像都無法下載文件,提示404錯誤,排除網路故障。具體現象見下圖: 疑似原因:之前執行了命令yum makecache fast時網路有故障,命令執行到一般被強制終止。 解決方法:執行如下命令,然後再進行安裝,問題解決。 # yu ...
  • 一 Kubetcl namespace 1.1 namespace描述 Kubernetes namespace提供了將一組相關資源組合在一起的機制。在Red Hat OpenShift容器平臺中,project是一個帶有附加註釋的Kubernetes namespace。 namespace提供以 ...
  • 前言 使用Nginx搭建一個私人網盤 安裝Nginx 增加 Nginx 官方源 cat << EOF > /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packag ...
  • 我們在 Linux 下進行開發時,有時也需要知道當前的硬體信息,比如:CPU幾核?使用情況?記憶體大小及使用情況?USB設備是否被識別?等等類似此類問題。下麵良許介紹一些常用的硬體查看命令。 lshw lshw 這個命令是一個比較通用的工具,它可以詳細的列出本機的硬體信息。但這個命令並非所有的發行版都 ...
  • 基本許可權管理 許可權的介紹 許可權位的含義 前面講解ls命令時,我們已經知道長格式顯示的第一列就是文件的許可權,例如: [root@es ~]# ls -l anaconda-ks.cfg -rw . 1 root root 1573 May 18 23:28 anaconda-ks.cfg 第一位為文件 ...
  • 1. 測試環境搭建步驟 為什麼要安裝tomcat、mysql? —所測試的項目需求環境決定。tomcat-項目容器(放置開發打包的項目代碼),mysql-數據倉庫。 為什麼要安裝jdk? —java軟體開發包(Java Development Kit),沒有JDK的話,無法編譯運行Java程式。 1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...