Docker部署大型互聯網電商平臺

来源:https://www.cnblogs.com/xuexiqun784789432/archive/2018/06/03/9130390.html
-Advertisement-
Play Games

1.Docker簡介 1.1虛擬化 1.1.1什麼是虛擬化 在電腦中,虛擬化(英語:Virtualization)是一種資源管理技術,是將電腦的各種實體資源,如伺服器、網路、記憶體及存儲等,予以抽象、轉換後呈現出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這 ...


 

1.Docker簡介

1.1虛擬化

1.1.1什麼是虛擬化

在電腦中,虛擬化(英語:Virtualization)是一種資源管理技術,是將電腦的各種實體資源,如伺服器、網路、記憶體及存儲等,予以抽象、轉換後呈現出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。在實際的生產環境中,虛擬化技術主要用來解決高性能的物理硬體產能過剩和老的舊的硬體產能過低的重組重用,透明化底層物理硬體,從而最大化的利用物理硬體   對資源充分利用虛擬化技術種類很多,例如:軟體虛擬化、硬體虛擬化、記憶體虛擬化、網路虛擬化(vip)、桌面虛擬化、服務虛擬化、虛擬機等等。如果你想瞭解大數據的學習路線,想學習大數據知識以及需要免費的學習資料可以加群:784789432.歡迎你的加入。

1.1.2虛擬化種類

(1)全虛擬化架構

虛擬機的監視器(hypervisor)是類似於用戶的應用程式運行在主機的OS之上,如VMware的workstation,這種虛擬化產品提供了虛擬的硬體。

 

(2)OS層虛擬化架構

 

(3)硬體層虛擬化

 

硬體層的虛擬化具有高性能和隔離性,因為hypervisor直接在硬體上運行,有利於控制VM的OS訪問硬體資源,使用這種解決方案的產品有VMwareESXi 和 Xen server

Hypervisor是一種運行在物理伺服器和操作系統之間的中間軟體層,可允許多個操作系統和應用共用一套基礎物理硬體,因此也可以看作是虛擬環境中的“元”操作系統,它可以協調訪問伺服器上的所有物理設備和虛擬機,也叫虛擬機監視器(Virtual Machine Monitor,VMM)。

Hypervisor是所有虛擬化技術的核心。當伺服器啟動並執行Hypervisor時,它會給每一臺虛擬機分配適量的記憶體、CPU、網路和磁碟,並載入所有虛擬機的客戶操作系統。  宿主機

Hypervisor是所有虛擬化技術的核心,軟硬體架構和管理更高效、更靈活,硬體的效能能夠更好地發揮出來。常見的產品有:VMware、KVM、Xen等等。Openstack

1.2什麼是Docker

 

1.2.1容器技術

在電腦的世界中,容器擁有一段漫長且傳奇的歷史。容器與管理程式虛擬化(hypervisor virtualization,HV)有所不同,管理程式虛擬化通過中間層將一臺或者多台獨立的機器虛擬運行與物理硬體之上,而容器則是直接運行在操作系統內核之上的用戶空間。因此,容器虛擬化也被稱為“操作系統級虛擬化”,容器技術可以讓多個獨立的用戶空間運行在同一臺宿主機上。

由於“客居”於操作系統,容器只能運行與底層宿主機相同或者相似的操作系統,這看起來並不是非常靈活。例如:可以在Ubuntu服務中運行Redhat Enterprise Linux,但無法再Ubuntu伺服器上運行Microsoft Windows。

相對於徹底隔離的管理程式虛擬化,容器被認為是不安全的。而反對這一觀點的人則認為,由於虛擬容器所虛擬的是一個完整的操作系統,這無疑增大了攻擊範圍,而且還要考慮管理程式層潛在的暴露風險。

儘管有諸多局限性,容器還是被廣泛部署於各種各樣的應用場合。在超大規模的多租戶服務部署、輕量級沙盒以及對安全要求不太高的隔離環境中,容器技術非常流行。最常見的一個例子就是“許可權隔離監牢”(chroot jail),它創建一個隔離的目錄環境來運行進程。如果許可權隔離監牢正在運行的進程被入侵者攻破,入侵者便會發現自己“身陷囹圄”,因為許可權不足被困在容器所創建的目錄中,無法對宿主機進一步破壞。

最新的容器技術引入了OpenVZ、Solaris Zones以及Linux容器(LXC)。使用這些新技術,容器不在僅僅是一個單純的運行環境。在自己的許可權類內,容器更像是一個完整的宿主機。對Docker來說,它得益於現代Linux特性,如控制項組(control group)、命名空間(namespace)技術,容器和宿主機之間的隔離更加徹底,容器有獨立的網路和存儲棧,還擁有自己的資源管理能力,使得同一臺宿主機中的多個容器可以友好的共存。

容器被認為是精益技術,因為容器需要的開銷有限。和傳統虛擬化以及半虛擬化相比,容器不需要模擬層(emulation layer)和管理層(hypervisorlayer),而是使用操作系統的系統調用介面。這降低了運行單個容器所需的開銷,也使得宿主機中可以運行更多的容器。

儘管有著光輝的歷史,容器仍未得到廣泛的認可。一個很重要的原因就是容器技術的複雜性:容器本身就比較複雜,不易安裝,管理和自動化也很困難。而Docker就是為了改變這一切而生的。

1.2.2容器與虛擬機比較

(1)本質上的區別

 

(2)使用上的區別

 

虛擬機已死,容器才是未來。

1.2.3Docker特點

(1)上手快。

用戶只需要幾分鐘,就可以把自己的程式“Docker化”。Docker依賴於“寫時複製”(copy-on-write)模型,使修改應用程式也非常迅速,可以說達到“隨心所致,代碼即改”的境界。

         隨後,就可以創建容器來運行應用程式了。大多數Docker容器只需要不到1秒中即可啟動。由於去除了管理程式的開銷,Docker容器擁有很高的性能,同時同一臺宿主機中也可以運行更多的容器,使用戶儘可能的充分利用系統資源。

(2)職責的邏輯分類

使用Docker,開發人員只需要關心容器中運行的應用程式,而運維人員只需要關心如何管理容器。Docker設計的目的就是要加強開發人員寫代碼的開發環境與應用程式要部署的生產環境一致性。從而降低那種“開發時一切正常,肯定是運維的問題(測試環境都是正常的,上線後出了問題就歸結為肯定是運維的問題)”

(3)快速高效的開發生命周期

Docker的目標之一就是縮短代碼從開發、測試到部署、上線運行的周期,讓你的應用程式具備可移植性,易於構建,並易於協作。(通俗一點說,Docker就像一個盒子,裡面可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件件的取。)

(4)鼓勵使用面向服務的架構

Docker還鼓勵面向服務的體繫結構和微服務架構。Docker推薦單個容器只運行一個應用程式或進程,這樣就形成了一個分散式的應用程式模型,在這種模型下,應用程式或者服務都可以表示為一系列內部互聯的容器,從而使分散式部署應用程式,擴展或調試應用程式都變得非常簡單,同時也提高了程式的內省性。(當然,可以在一個容器中運行多個應用程式)

 

1.3 Docker組件

1.3.1Docker客戶端和伺服器

Docker是一個客戶端-伺服器(C/S)架構程式。Docker客戶端只需要向Docker伺服器或者守護進程發出請求,伺服器或者守護進程將完成所有工作並返回結果。Docker提供了一個命令行工具Docker以及一整套RESTful API。你可以在同一臺宿主機上運行Docker守護進程和客戶端,也可以從本地的Docker客戶端連接到運行在另一臺宿主機上的遠程Docker守護進程。

 

1.3.2Docker鏡像

鏡像是構建Docker的基石。用戶基於鏡像來運行自己的容器。鏡像也是Docker生命周期中的“構建”部分。鏡像是基於聯合文件系統的一種層式結構,由一系列指令一步一步構建出來。例如:

添加一個文件;

執行一個命令;

打開一個視窗。

也可以將鏡像當作容器的“源代碼”。鏡像體積很小,非常“便攜”,易於分享、存儲和更新。

1.3.3Registry(註冊中心)

Docker用Registry來保存用戶構建的鏡像。Registry分為公共和私有兩種。Docker公司運營公共的Registry叫做Docker Hub。用戶可以在Docker Hub註冊賬號,分享並保存自己的鏡像(說明:在Docker Hub下載鏡像巨慢,可以自己構建私有的Registry)。

1.3.4Docker容器

Docker可以幫助你構建和部署容器,你只需要把自己的應用程式或者服務打包放進容器即可。容器是基於鏡像啟動起來的,容器中可以運行一個或多個進程。我們可以認為,鏡像是Docker生命周期中的構建或者打包階段,而容器則是啟動或者執行階段。  容器基於鏡像啟動,一旦容器啟動完成後,我們就可以登錄到容器中安裝自己需要的軟體或者服務。

 

所以Docker容器就是:

一個鏡像格式;

一些列標準操作;

一個執行環境。

Docker借鑒了標準集裝箱的概念。標準集裝箱將貨物運往世界各地,Docker將這個模型運用到自己的設計中,唯一不同的是:集裝箱運輸貨物,而Docker運輸軟體。

         和集裝箱一樣,Docker在執行上述操作時,並不關心容器中到底裝了什麼,它不管是web伺服器,還是資料庫,或者是應用程式伺服器什麼的。所有的容器都按照相同的方式將內容“裝載”進去。

         Docker也不關心你要把容器運到何方:我們可以在自己的筆記本中構建容器,上傳到Registry,然後下載到一個物理的或者虛擬的伺服器來測試,在把容器部署到具體的主機中。像標準集裝箱一樣,Docker容器方便替換,可以疊加,易於分發,並且儘量通用。

         使用Docker,我們可以快速的構建一個應用程式伺服器、一個消息匯流排、一套實用工具、一個持續集成(CI)測試環境或者任意一種應用程式、服務或工具。我們可以在本地構建一個完整的測試環境,也可以為生產或開發快速複製一套複雜的應用程式棧。

2.Docker安裝與啟動

2.1安裝環境說明

Docker官方建議在Ubuntu中安裝,因為Docker是基於Ubuntu發佈的,而且一般Docker出現的問題Ubuntu是最先更新或者打補丁的。在很多版本的CentOS中是不支持更新最新的一些補丁包的。

         由於我們學習的環境都使用的是CentOS,因此這裡我們將Docker安裝到CentOS上。註意:這裡建議安裝在CentOS7.x以上的版本,在CentOS6.x的版本中,安裝前需要安裝其他很多的環境而且Docker很多補丁不支持更新。

2.2在VMware Workstation中安裝CentOS7

資料已經準備了安裝好的鏡像,直接掛載即可。

掛載後,使用ip addr命令查看本地IP

 

2.3安裝Docker

使用yum命令線上安裝

yum install docker

 

 

2.4安裝後查看Docker版本

docker -v

2.5啟動與停止Docker

systemctl命令是系統服務管理器指令,它是service 和 chkconfig 兩個命令組合。

l  啟動docker:systemctlstart docker

l  停止docker:systemctlstop docker

l  重啟docker:systemctlrestart docker

l  查看docker狀態:systemctlstatus docker

l  開機啟動:systemctl enable docker


 

l  查看docker概要信息:docker info

l  查看docker幫助文檔:docker --help

3.Docker鏡像操作

3.1什麼是Docker鏡像

Docker鏡像是由文件系統疊加而成(是一種文件的存儲形式)。最底端是一個文件引導系統,即bootfs,這很像典型的Linux/Unix的引導文件系統。Docker用戶幾乎永遠不會和引導系統有什麼交互。實際上,當一個容器啟動後,它將會被移動到記憶體中,而引導文件系統則會被卸載,以留出更多的記憶體供磁碟鏡像使用。Docker容器啟動是需要的一些文件,而這些文件就可以稱為Docker鏡像。

 

3.2列出鏡像

列出docker下的所有鏡像:docker images

 

l  REPOSITORY:鏡像所在的倉庫名稱

l  TAG:鏡像標簽

l  IMAGE ID:鏡像ID

l  CREATED:鏡像的創建日期(不是獲取該鏡像的日期)

l  SIZE:鏡像大小

l  這些鏡像都是存儲在Docker宿主機的/var/lib/docker目錄下

 

 

為了區分同一個倉庫下的不同鏡像,Docker提供了一種稱為標簽(Tag)的功能。每個鏡像在列出來時都帶有一個標簽,例如12.10、12.04等等。每個標簽對組成特定鏡像的一些鏡像層進行標記(比如,標簽12.04就是對所有Ubuntu12.04鏡像層的標記)。這種機制使得同一個倉庫中可以存儲多個鏡像。--- 版本號

         我們在運行同一個倉庫中的不同鏡像時,可以通過在倉庫名後面加上一個冒號和標簽名來指定該倉庫中的某一具體的鏡像,例如docker run --name custom_container_name –i –t docker.io/ubunto:12.04/bin/bash,表明從鏡像Ubuntu:12.04啟動一個容器,而這個鏡像的操作系統就是Ubuntu:12.04。在構建容器時指定倉庫的標簽也是一個好習慣。

3.3搜索鏡像

如果你需要從網路中查找需要的鏡像,可以通過以下命令搜索

docker search 鏡像名稱

 

 

n  NAME:倉庫名稱

n  DESCRIPTION:鏡像描述

n  STARS:用戶評價,反應一個鏡像的受歡迎程度

n  OFFICIAL:是否官方

AUTOMATED:自動構建,表示該鏡像由Docker Hub自動構建流程創建的

3.4拉取鏡像

3.4.1從Docker Hub拉取

Docker鏡像首頁,包括官方鏡像和其它公開鏡像。Docker Hub上最受歡迎的10大鏡像(通過Docker registry API獲取不了鏡像被pull的個數,只能通過鏡像的stars數量,來衡量鏡像的流行度。毫無疑問,擁有最高stars數量的庫都是官方庫)。如果你想瞭解大數據的學習路線,想學習大數據知識以及需要免費的學習資料可以加群:784789432.歡迎你的加入。

 

國情的原因,國內下載 Docker HUB 官方的相關鏡像比較慢,可以使用國內(docker.io)的一些鏡像加速器,鏡像保持和官方一致,關鍵是速度塊,推薦使用。Mirror與Private Registry的區別:

Private Registry(私有倉庫)是開發者或者企業自建的鏡像存儲庫,通常用來保存企業內部的 Docker 鏡像,用於內部開發流程和產品的發佈、版本控制。

Mirror是一種代理中轉服務,我們(比如daocloud)提供的Mirror服務,直接對接Docker Hub的官方Registry。Docker Hub 上有數以十萬計的各類 Docker 鏡像。

在使用Private Registry時,需要在Docker Pull或Dockerfile中直接鍵入Private Registry 的地址,通常這樣會導致與Private Registry 的綁定,缺乏靈活性。

使用 Mirror 服務,只需要在 Docker 守護進程(Daemon)的配置文件中加入 Mirror 參數,即可在全局範圍內透明的訪問官方的 Docker Hub,避免了對 Dockerfile鏡像引用來源的修改。

簡單來說,Mirror類似CDN,本質是官方的cache;Private Registry類似私服,跟官方沒什麼關係。對用戶來說,由於用戶是要拖docker hub上的image,對應的是Mirror。yum/apt-get的Mirror又有點不一樣,它其實是把官方的庫文件整個拖到自己的伺服器上做鏡像,並定時與官方做同步;而Docker Mirror只會緩存曾經使用過的image。

 

使用命令拉取:

docker pull centos:7

目前國內訪問docker hub速度上有點尷尬,使用dockerMirror勢在必行。現有國內提供docker鏡像加速服務的商家有不少,下麵重點ustc鏡像。

3.4.2ustc的鏡像

ustc是老牌的linux鏡像服務提供者了,還在遙遠的ubuntu5.04版本的時候就在用。ustc的docker鏡像加速器速度很快。ustc dockermirror的優勢之一就是不需要註冊,是真正的公共服務。

https://lug.ustc.edu.cn/wiki/mirrors/help/docker

步驟:

(1)編輯該文件:vi /etc/docker/daemon.json  //如果該文件不存在就手動創建;說明:在centos7.x下,通過vi。

 

(2)在該文件中輸入如下內容:

{

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

}

(3)註意:一定要重啟docker服務,如果重啟docker後無法加速,可以重新啟動OS

 

然後通過docker pull命令下載鏡像:速度杠杠的。

 

3.5刪除鏡像

1、  docker rmi $IMAGE_ID:刪除指定鏡像

2、  docker rmi `docker images -q`:刪除所有鏡像

 

4.Docker容器操作

4.1查看容器

l  查看正在運行容器:

docker ps

l  查看所有的容器(啟動過的歷史容器):

docker ps –a

 

 

l  查看最後一次運行的容器:

docker ps –l

 

l  查看停止的容器

docker ps -f status=exited

4.2創建與啟動容器

l  創建容器常用的參數說明:

l  創建容器命令:docker run

l  -i:表示運行容器

l  -t:表示容器啟動後會進入其命令行。加入這兩個參數後,容器創建就能登錄進去。即分配一個偽終端。

l  --name :為創建的容器命名。

l  -v:表示目錄映射關係(前者是宿主機目錄,後者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。註意:最好做目錄映射,在宿主機上做修改,然後共用到容器上。

l  -d:在run後面加上-d參數,則會創建一個守護式容器在後臺運行(這樣創建容器後不會自動登錄容器,如果只加-i -t兩個參數,創建後就會自動進去容器)。

l  -p:表示埠映射,前者是宿主機埠,後者是容器內的映射埠。可以使用多個-p做多個埠映射

4.1.1互動式容器

創建一個互動式容器並取名為mycentos

docker run -it --name=mycentos centos:7 /bin/bash

這時我們通過ps命令查看,發現可以看到啟動的容器,狀態為啟動狀態

 

使用exit命令退出當前容器

 

然後用ps -a 命令查看發現該容器也隨之停止:

 

4.1.2守護式容器

創建一個守護式容器:如果對於一個需要長期運行的容器來說,我們可以創建一個守護式容器。命令如下(容器名稱不能重覆):

docker run -di --name=mycentos2 centos:7

l  登錄守護式容器方式:

docker exec -it container_name (或者container_id)  /bin/bash(exit退出時,容器不會停止)

 

4.3停止與啟動容器

l  停止正在運行的容器:docker stop $CONTAINER_NAME/ID

l  啟動已運行過的容器:docker start $CONTAINER_NAME/ID

 

4.4文件拷貝

如果我們需要將文件拷貝到容器內可以使用cp命令

docker cp 需要拷貝的文件或目錄容器名稱:容器目錄

也可以將文件從容器內拷貝出來

docker cp 容器名稱:容器目錄需要拷貝的文件或目錄

 

4.5目錄掛載

我們可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器。

創建容器 添加-v參數 後邊為   宿主機目錄:容器目錄

docker run -di -v/usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7

 

如果你共用的是多級的目錄,可能會出現許可權不足的提示。

 

這是因為CentOS7中的安全模塊selinux把許可權禁掉了,我們需要添加參數  --privileged=true  來解決掛載的目錄沒有許可權的問題

 

4.6查看容器IP地址

我們可以通過以下命令查看容器運行的各種數據

 

4.7刪除容器

l  刪除指定的容器:docker rm $CONTAINER_ID/NAME

 

5.部署應用

5.1MySQL部署

5.1.1拉取MySQL鏡像

 

(2)在本地客戶端執行建庫腳本

執行“資源/建庫語句/db.sql”

 

upstream tomcat-cas {

         server 172.17.0.7:8080;

}

server {

         listen 80;

         server_name passport..com;

         location / {

                   proxy_pass http://tomcat-cas;

                   index index.html index.htm;

         }

}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MATLAB是美國MathWorks公司出品的商業數學軟體,主要用於演算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和互動式環境,是一款優秀而又強大的數學軟體。 本文基於 Deepin 15.5 進行 MATLAB2016b 的安裝,其他操作系統及 MATLAB 版本類似。 一、下載“C ...
  • ### 這幾天開始搗鼓lnmp的環境搭建,很多東西還是得自己去經歷,才會印象深刻,有所體會,有所收穫與成長! 但是,偶爾會遇到一些意想不到問題! Xshell ,Xftp 遠程連接的時候出現中文亂碼的問題! ### 1. Xshell 顯示中文亂碼問題解決: 在工具欄 -- 文件 -- 屬性(alt ...
  • 最近進的公司是一個做路由器的。。很多嵌入式工程師。有個項目( 智能空調控制)是跟嵌入式工程師對接,我做APP+PHP。。他做伺服器。我們用MQTT(由於emqtt是用erlang寫的,所以我也學了點erlang,後期有時間分享一下,這個語言很好,很強大。特別抽象)。這個項目激發了我對嵌入式的興趣,於 ...
  • 目前多數情況下, 我們遇到的非英文字元文件都是使用UTF 8編碼的, 這時一般我們查看這些文件的內容都不會有問題. 不過有時, 我們有可能會遇到非UTF 8編碼的文件, 比如中文的GBK編碼, 或者俄語的CP1251編碼. 而文本文件一般不帶有自身編碼格式的信息, 這就給我們處理帶來很多麻煩. 本文 ...
  • 一、創建私有CA 1、創建所需要的文件 2、創建私有密鑰 3、CA自簽證書 -new: 生成新證書簽署請求; -x509: 專用於CA生成自簽證書;不自簽的時候不要加該選項 -key: 生成請求時用到的私鑰文件; -days n:證書的有效期限; -out /PATH/TO/SOMECERTFILE ...
  • select * from EMP eselect * from dept dselect * from salgrade s--Oracle特有函數 case whenselect case 2 when 1 then '一' when 2 then '二' when 3 then '三' els ...
  • 微服務的誕生並非偶然,它是在互聯網高速發展,技術日新月異的變化以及傳統架構無法適應快速變化等多重因素的推動下誕生的產物。 微服務的誕生並非偶然,它是在互聯網高速發展,技術日新月異的變化以及傳統架構無法適應快速變化等多重因素的推動下誕生的產物。互聯網時代的產品通常有兩類特點:需求變化快和用戶群體龐大, ...
  • 對於一套新的sqlserver伺服器,我們首先要對它做一些必要的優化配置,確保在生產上比較長的時間段內可以比較穩定的,良好的運行。 新的sqlserver伺服器上安裝的sqlserver版本,可以選擇sqlserver2014 企業版本,這個版本相對穩定了,相對也比較新的版本。 sqlserver配 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...