46、lvs集群- 博客

1、lvs集群:

  • lvs:linux virtual server----章文嵩發起的開源項目,阿里。linux的內核層面實現負載均衡的軟件。

  • 主要作用:將多個后端服務器組成一個高可用,高性能的服務器集群,通過負載均衡的算法將客戶端的請求分發到后端的服務器上,來實現高可用和負載均衡。

  • 阿里的SLB:server load balance----lvm+keepalive實現的。

2、集群和分布式:

2.1、系統的拓展方式:

  • 垂直擴展:向上擴展,增強,性能更強的計算機。瓶頸,計算機本身設備的限制,硬件本身的性能瓶頸。

  • 水平擴展向外擴展,增加設備。并行的運行多個服務,依靠網絡解決內部通信問題,cluster 集群。

  • 集群:為了解決某個特定的問題將計算機組合起來形成的單個系統。

2.2、集群的類型,三種類型:

1、LB:load balance負載均衡,多個主機組成,每個主機只承擔一部分的訪問請求。

2、HA:high availiablity高可用,在設計系統時,采取一定的措施,確保系統當中某一組件或者部分出現故障,整個系統依然能夠正常運行。為了維護系統的可用性,可靠性,容錯性。

3、HPC:high-performance computing 高性能 對響應時間,處理能力要求更高。

2.3、系統可靠性指標:

MTBF:Mean time Between Failure 平均無故障時間

MTTR:Mean time Resotration repair 平均故障恢復時間

A=MTBF/(MTBF+MTTR)

0-1

A指標0-1之間,A指標就是系統可用性的度量,0表示系統越不可用,1表示系統越可以用。

A指標要無線接近于1.

99.99%

都是以小時為單位

1年365天=8760小時
90(1-90%)*365=36.5天99 8760**1%=87.6小時
99.9999=31秒
99.99%=======52.6分鐘

停機時間:計劃內時間,計劃內的時間開以忽略不計。但是現在也算在內。

計劃外時間,故障時間,從故障發生到故障解決的總時間,尤其是運維,計劃外時間是我們必須關注的一個指標。

某某-----當天事必須當天解決----沒有解決之間,人是不可用離開的-------解決完之后必須生成報告,備案。

日報,周報,月報,年報。

運維精神:7*24小時待命(及時響應,及時處理,及時總結。)

2.4、lvs適用場景:

  • 小集群不需要使用lvs,大集群使用lvs。

  • lvs集群中的術語

  • VS: virtual server:lvs服務的邏輯名稱,也就是我們外部訪問lvs集群時使用的ip地址和端口。

  • DS: Director Server :lvs集群中的主服務器,也就是調度器(nginx的代理服務器)是集群的核心

  • 調度服務器就是用來接收客戶端的請求轉發到后端的服務器。

  • RS: Real Server:lvs集群中的真實服務器,后端服務器,用來接收DS轉發來的請求,并響應結果。

  • CIP:Client ip :客戶端的地址,發起請求的客戶端地址。

  • VIP:virtual Ip :lvs集群使用的ip地址,對外提供集群訪問的虛擬ip地址。

  • DIP:Director ip :調度器在集群中的地址,用于和RS通信。

  • RIP:Real ip :后端服務器在集群當中的ip地址。

在這里插入圖片描述

2.5、lvs的工作模式:

  • NAT模式:由調度器響應給客戶端

  • DR模式:直接路由模式,真實服務器直接響應給客戶端

  • TUN:隧道模式----電信公司DNS提供

  • 常用的模式:NATDR模式

2.5.1、NAT模式

nat模式是常用的lvs的模式之一。

在nat模式下,lvs會將來自客戶端的請求報文中的目標ip地址和端口,修改為lvs內部的ip地址和端口,然后把請求轉發到后端服務器。

在這里插入圖片描述

響應結果返回客戶端的過程中,響應報文經過lvs的處理,把目標ip和端口修改成客戶端的ip地址和端口。

好處:在于,對于客戶端來說,請求的目標地址始終不變,客戶端的配置不需要做特殊的修改,只需調度器再對ip和端口進行轉換,后端的服務端也不需要更改任何配置。

缺點:性能損失,請求和響應都需要調度器做地址轉換,影響性能,nat模式只要有一個調度器,調度器故障,整個集群就不能正常工作。

地址轉換:

內網----外網 轉換的源ip地址 snat

外網----內網 轉換的目的ip地址 nat

1、客戶端發起請求,訪問vip地址,到達調度器

2、調度器接收到請求之后,根據負載均衡算法選一個后端服務器。

3、請求的地址,轉成可以直接和內部RS通信的IP地址。

4、后端服務器處理請求。

5、目的的地址轉換,轉換vip地址

6、調度器的vip地址響應給客戶端

在這里插入圖片描述

外網到內網–12.0.0.10-----12.0.0.1------192.168.168.10

內網到外網–192.168.168.0/24-----12.0.0.1-----12.0.0.10----需要地址轉換

iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1

2.6、lvs的工具

2.6.1、ipvsadm 工具,用來配置和管理lvs集群的工具。

  • -A 添加虛擬服務器 vip

  • -D 刪除虛擬服務器地址

  • -s指定負載均衡的調度算法

  • -a 添加真實服務器

  • -d 刪除真實服務器

  • -t 指定vip的地址和端口

  • -r 指定rip的地址和端口

  • -m使用nat模式

  • -g 使用DR模式

  • -i 使用隧道模式

  • -w 設置權重

  • -p 60:連接保持60設置保持時間

  • -l:列表查看

  • -n:數字化展示

  • -m指定模式為nat模式

2.6.2、算法

  • rr默認,輪詢

  • 加權輪詢:wrr

  • 最小連接:lr

  • 加權最小連接:wlc

2.6.3、操作

ipvsadm -C—#清空原有的策略

ipvsadm -A -t 12.0.0.1:80 -s rr------#指定好的vip的地址和端口

ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m—#先添加vip,虛擬服務器的ip和端口,然后再添加真實服務器

ipvsadm -D -t 192.168.168.50:80----#刪除策略

ipvsadm -D -t 192.168.168.50:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80----###刪除節點服務器

ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0     

開啟路由轉發:

vim /etc/sysctl.conf net.ipv4.ip_forward=1[root@test5 opt]# sysctl -p
net.ipv4.ip_forward = 1

3、NAT集群實驗

3.1、rr配置

在這里插入圖片描述

nginx1 :192.168.168.10

nginx2:192.168.168.20

test5:調度器 ens33:192.168.168.50 ens36 :12.0.0.1

test6 客戶端12.0.0.10

test5:

安裝ipvsadm工具

yum -y install ipvsadm* -y

添加網卡

[root@test5 network-scripts]# cp ifcfg-ens33 ifcfg-ens36

vim ifcfg-ens33TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.50
NETMASK=255.255.255.0 
#GATEWAY=192.168.168.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69
vim ifcfg-ens36TYPE=Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.1
NETMASK=255.255.255.0
#GATEWAY=192.168.168.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69

systemctl restart network

在這里插入圖片描述

nginx1修改網卡中的網關指向調度器的ip(即網關)

TYPE=Ethernet 
DEVICE=ens33 
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.10
NETMASK=255.255.255.0
GATEWAY=192.168.168.50
DNS1=218.2.135.1
DNS2=221.131.143.69
vim /usr/local/nginx/html/index.htmlthis is nginx1

nginx2修改網卡中的網關指向調度器的ip(即網關)

TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.20
NETMASK=255.255.255.0 
GATEWAY=192.168.168.50
DNS1=218.2.135.1
DNS2=221.131.143.69
vim /usr/local/nginx/html/index.htmlthis is nginx2

test5配置:

內網到外網—出去做地址轉換

iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1

ipvsadm -C—#清空原有的策略

ipvsadm -A -t 12.0.0.1:80 -s rr-----指定好的vip的地址和端口

先添加vip,虛擬服務器的ip和端口,然后再添加真實服務器:

ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m

-a 添加真實服務器

-t 指定vip地址

-r 指定真實服務器的地址和端口

-m指定模式為nat模式

ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m

[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0  [root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# systemctl restart ipvsadm
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.168.50:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0    

在這里插入圖片描述

刪除策略

ipvsadm -D -t 192.168.168.50:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

重新保存

[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0         
[root@test5 opt]# systemctl restart ipvsadm
[root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0 

刪除節點服務器

ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0     

開啟路由轉發:

vim /etc/sysctl.conf net.ipv4.ip_forward=1[root@test5 opt]# sysctl -p
net.ipv4.ip_forward = 1

簡單的全部完成。

test6:

在這里插入圖片描述

需要改網關和ip地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33     ##更改網關指向路由TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.10
NETMASK=255.255.255.0
GATEWAY=12.0.0.1
DNS1=218.2.135.1
DNS2=221.131.143.69 

在這里插入圖片描述

外網到內網–12.0.0.10-----12.0.0.1------192.168.168.10

net.ipv4.ip_forward=1,可以進行轉發

內網到外網192.168.168.10-----12.0.0.1-------12.0.0.10

做地址轉換進行訪問

3.2、wrr加權算法

第二個,刪除rr算法,

ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0         
[root@test5 opt]# ipvsadm -D -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

添加wrr權重算法

[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s wrr
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wrr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m -w 2
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 2
[root@test5 opt]# ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80 
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wrr-> 192.168.168.10:80            Masq    2      0          0         
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 1
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wrr-> 192.168.168.10:80            Masq    2      0          0         -> 192.168.168.20:80            Masq    1      0          0    

測試結果
在這里插入圖片描述

3.3、設置wlc最小連接數加權算法

[root@test5 opt]# ipvsadm -D -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s wlc
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wlc
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m -w 2
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 1
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wlc-> 192.168.168.10:80            Masq    2      0          0         -> 192.168.168.20:80            Masq    1      0          0  

創建vip地址的時候才能指定負載均衡算法,不是在真實服務器上添加算法。

test5做地址轉換:

iptables -t nat -vnL ----查看nat地址轉換策略表

iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1

ipvsadm -a-t 12.0.0.1:80-r192.168.233.61:80 -m

-a 添加真實服務器

-t 指定vip地址

3.4、增加理解

在探討外網訪問內網與內網訪問外網時,是否需要開啟轉發功能或地址轉換,我們首先要明確幾個基本概念和它們在網絡通信中的作用。### 外網訪問內網,開啟轉發功能,不需要地址轉換當外網需要訪問內網時,通常涉及到的是網絡訪問控制和路由策略。在某些情況下,如使用VPN(虛擬私人網絡)或端口轉發等技術,可以實現外網直接訪問內網資源,而無需進行地址轉換。這是因為VPN等技術可以在不暴露內網實際IP地址的情況下,為外網用戶提供一條安全的通道來訪問內網資源。同樣,端口轉發可以將外網對特定端口的訪問請求轉發到內網中的特定設備或服務上,而無需改變IP地址。### 內網訪問外網,為什么需要地址轉換1. 內網與公網的隔離:- 內網通常是指被NAT(網絡地址轉換)隔離起來的私有地址空間,這些地址在Internet上是不可見的,也無法被直接路由。- 公網則是指全球互聯網上分配的全局IP地址空間,任何設備只要具有公網IP地址,就可以被Internet上的其他設備訪問。
2. IP地址的稀缺性:- 由于IPv4地址的稀缺性,不可能為每個內網設備分配一個獨立的公網IP地址。因此,需要通過NAT技術將內網設備的私有IP地址轉換為公網IP地址,以實現與外部網絡的通信。
3. 安全性和隱私性:- NAT技術還可以在一定程度上提供安全性和隱私保護。通過隱藏內網設備的真實IP地址,可以防止外部網絡對內網設備的直接攻擊和掃描。
4. 通信的必要性:- 內網中的設備,如企業內部的服務器或終端用戶,有時需要訪問外部網絡或互聯網上的資源。為了實現這種訪問,必須進行地址轉換,以便將內網設備的私有IP地址轉換為公網IP地址,從而通過Internet進行通信。綜上所述,內網訪問外網需要地址轉換的原因主要是由于內網與公網的隔離、IP地址的稀缺性、安全性需求以及通信的必要性。NAT技術通過在內網出口設備上部署,實現了內網設備私有IP地址到公網IP地址的轉換,從而解決了內網設備訪問外部網絡的問題。

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

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

相關文章

資訊類app怎么應對DDOS攻擊

資訊類app怎么應對DDOS攻擊?在數字化時代,資訊類App作為信息傳播的重要載體,其穩定運行直接關系到用戶的信任與滿意度。日益猖獗的DDoS攻擊成為了這類應用不可忽視的威脅。為了有效抵御這一挑戰,業界涌現出了多種創新的防護方案&a…

基于cmake為項目自動獲取git分支tag的版本號和commitid

目錄 1. 引言2. 實現過程2.1 工程目錄規劃2.2 c程序文件2.3 CMakeLists.txt2.4 GitVersion.cmake文件2.5 BuildNumber.cmake文件1. 引言 在項目構建的時候,我們經常會希望能夠將git提交的分支信息和提交號(commitid)以及當前版本發布的tag信息作為版本號自動構建到程序里面,以…

留學生的作業形式有哪些???

作業是在海外求學中不可避免的一部分,在國外留學,課程種類豐富多樣,每一門課程都有其獨特的學習要求和作業形式。課業壓力很大,不僅要應對各項quiz,日常各類作業也絲毫不能松懈。無論是文學、藝術,還是理工…

【JavaScript腳本宇宙】實時協同編輯:JavaScript 庫和框架全面解析

實時協同編輯:探秘JavaScript實時協同編輯利器## 前言 在當今互聯網時代,實時協同編輯成為了許多應用程序的重要功能之一。無論是團隊協作辦公軟件,還是在線教育平臺,都需要實現多人同時編輯文檔的功能。為了滿足這一需求&#x…

自建搜索引擎-基于美麗云

Meilisearch 是一個搜索引擎,主程序完全開源,除了使用官方提供的美麗云服務(收費)進行對接之外,還可以通過自建搜索引擎來實現完全獨立的搜索服務。 由于成本問題,本博客采用自建的方式,本文就…

通過git將文件push到github 遠程倉庫

1.先git clone 代碼地址 git clone htttp://github.com/用戶名/test.git 2. 添加文件 例如:touch 1.txt 3.將文件添加到暫存區 git add 1.txt 4.提交 git commit -m "commit 1.txt" 5.與遠程倉庫建立關聯 git remote add 遠程倉庫名 遠程倉庫…

(2024)docker-compose實戰 (9)部署多項目環境(LAMP+react+vue+redis+mysql+nginx)

前言 本系列最初的想法就是搭建一個多項目的環境, 包含nginx, nodejs, php, html, redis, MongoDB, mysql.本文使用的PHP鏡像為php:7.3.6-apache, 這里可以使用上一篇文章中生成好的鏡像.LAMP或包含react或vue的前端項目, 本文就各寫了一個, 可以按照實際需求, 自行添加多個容…

LLM 研究方向(一): LLM Prompts--p-tuning、LoRA

目錄 1. prompt-tuning background 2. Prompt Tuning 模型介紹 2.1 2021 prefix-tuning 2.2 2021 P-tuning v1 2.3 2021 Parameter-efficient prompt tuning (PET) 2.4 2022 P-tuning v2 2.5 2019 Adapter ?2.6 2021 LoRA (Low-Rank Adaptation) 2.7 2024 DoRA (…

詳解[USACO07OPEN] Cheapest Palindrome G(洛谷PP2890)(區間DP經典題)

題目 思路 考慮區間DP。 設dp[i][j]為從i到j這段區間被修正為回文串的最小花費 c[cc][1]為添加字符cc的花費 c[cc][2]為刪去字符cc的花費 s為題目給出的字符串。 用[i 1,j]區間轉移:這種轉移相當于在[i1,j]區間的左邊加入一個字符,讓[i,j]變為回文的方…

SQL 游標

關系數據庫中的操作會對整個行集起作用。 例如,由 SELECT 語句返回的行集包括滿足該語句的 WHERE 子句中條件的所有行。 這種由語句返回的完整行集稱為結果集。 應用程序,特別是交互式聯機應用程序,并不總能將整個結果集作為一個單元來有效地…

安裝Go語言常用工具

好的,這里是常用的Go工具,包括下載地址、在線安裝指令和離線安裝步驟。 1. gopls (Go language server) 功能: 提供代碼補全、跳轉定義、文檔提示等IDE功能。 下載地址: golang.org/x/tools/gopls 在線安裝命令 : sh 復制代碼 go install golang.org/…

云倉適合什么商家?

1、電商平臺和網店: 對于擁有大量在線訂單但沒有自建倉儲和物流能力的小型和中型電商企業,云倉可以在成本和效率上提供顯著優勢,幫助快速處理訂單并縮短配送時間。 —————————————————————————————————— …

根據關鍵詞query獲取google_img(api方式)

文章目錄 說明代碼第一部分:鏈接保存為Json第二部分:鏈接轉換為img 說明 根據關鍵詞query獲取google_img USERNAME “xxx” PASSWORD “xxx” 官網申請。 代碼 首先獲取圖片鏈接,保存為json之后下載。 第一部分:鏈接保存為…

.net 8 使用 quic 協議通訊

debian環境安裝 quic支持 # 1. 添加unstable倉庫(如果您使用的是Debian的不穩定分支) sudo apt install apt-transport-https ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/microsoft.gpg https://packages.microsoft.com/keys/microsoft.asc …

【獨家揭秘】視頻號矩陣系統火爆上線,一鍵式多平臺管理,你的內容營銷神器!

在信息爆炸的時代,內容創作者們面臨著前所未有的挑戰與機遇。如何讓自己的內容在眾多平臺中脫穎而出,快速傳播并吸引大量觀眾,成為了每個創作者關注的焦點。近日,一款名為“迅狐視頻號矩陣系統”的神器震撼來襲,它以其…

UV膠,它是否有毒?如同那些隱藏在黑暗中的危險之物?

UV膠,它是否有毒?如同那些隱藏在黑暗中的危險之物? 關于uv膠的毒性問題,或許我們可以這樣深入探討。UV膠,如同一位戴著神秘面紗的訪客,在我們的生活中悄然出現,卻帶著諸多疑問。那么&#xff0…

二維碼生成需知:名片二維碼尺寸多少合適?電子名片二維碼制作方法?

隨著數字化時代的到來,二維碼在各個領域的應用越來越廣泛,名片作為商業交流的重要工具之一,也開始逐漸融入二維碼的元素。通過在名片上添加二維碼,我們可以輕松實現信息的快速傳遞和分享。然而,名片二維碼的尺寸選擇成…

Monorepo倉庫管理策略之 Lerna

這里寫目錄標題 前言:一、簡介二、新建項目使用安裝生成結構 三、復用現有項目執行命令查看包 四、配置package相互引用導入現有的包 五、發布包確定項目版本發布項目添加項目到到git發布包到NPM包發布出錯解決方案 五、實例代碼 前言: 將大型代碼倉庫分…

Python 與扣子 API的鏈接

當 Python 與各種 API 進行鏈接時,更是能碰撞出無數精彩的火花,為我們的開發工作帶來極大的便利和創新。今天,咱們就來聊聊 Python 與扣子 API 的鏈接那些事兒。 扣子 API 作為一種新興的技術接口,為我們提供了豐富的數據和功能。…

文心一言的流式接口數據進行處理 增加屬性

需求:需要對文心一言的流式接口數據進行處理 增加屬性 return ResponseEntity.ok().header("Access-Control-Allow-Origin", "*").contentType(org.springframework.http.MediaType.TEXT_EVENT_STREAM).cacheControl(org.springframework.http…