日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

【Redis24】Redis進(jìn)階:分布式部署RedisCluster(二)

 硬核項目經(jīng)理 2023-05-25 發(fā)布于湖南

Redis進(jìn)階:分布式部署RedisCluster(二)

上回學(xué)習(xí)的到內(nèi)容大家自己試了沒?搭建起來應(yīng)該難度不大的,今天我們就繼續(xù)學(xué)習(xí)。分布式開發(fā)中,最常見的一個問題就是怎么擴(kuò)展。本身我們做分布式,就是因為單機(jī)處理性能不夠,通過多機(jī)來并行處理,就你是單線程和多線程的區(qū)別。

對于應(yīng)用實例還好說,畢竟業(yè)務(wù)處理將流量分走就好了,大家干的是一樣的事,但是對于存儲系統(tǒng)來說,就有一個很大的問題:數(shù)據(jù)應(yīng)該落在哪里?

就拿 MySQL 的分表來說,本來分的 8 張表,隨著時間的推移和數(shù)據(jù)量的積累,現(xiàn)在要擴(kuò)充到 16 或者 32 張表了,天啊,想想都頭大,這一堆數(shù)據(jù)怎么遷移?之前的數(shù)據(jù)中,分表主鍵的 Hash 從 %8 變成了 %16 %32 ,很多數(shù)據(jù)都要重新遷移啊。

目前市面上,要么一開始就干它 100 張表,要么就是一致性哈希,其實 Redis 中的 Solt 就是一致性哈希的概念,新加入的節(jié)點,我們只需要向它分配槽就行了,畢竟槽的數(shù)量是有限的。這樣,在節(jié)點之間的數(shù)據(jù)遷移就只需要將新節(jié)點分配到的槽中的數(shù)據(jù)遷移過去就好了。

因此,整個 Cluster 的節(jié)點操作,其實就要分成兩步,一個是節(jié)點的添加刪除,另一個就是添加后和刪除前要進(jìn)行槽的分配,從而實現(xiàn)數(shù)據(jù)的轉(zhuǎn)移以及定位。

添加刪除節(jié)點與分槽操作

先來看怎么添加節(jié)點,我們直接看一下 --cluster 命令參數(shù)還有哪些子參數(shù)可以用。

? redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN
                 --cluster-replicas <arg>
  check          host:port
                 --cluster-search-multiple-owners
  info           host:port
  fix            host:port
                 --cluster-search-multiple-owners
                 --cluster-fix-with-unreachable-masters
  reshard        host:port
                 --cluster-from <arg>
                 --cluster-to <arg>
                 --cluster-slots <arg>
                 --cluster-yes
                 --cluster-timeout <arg>
                 --cluster-pipeline <arg>
                 --cluster-replace
  rebalance      host:port
                 --cluster-weight <node1=w1...nodeN=wN>
                 --cluster-use-empty-masters
                 --cluster-timeout <arg>
                 --cluster-simulate
                 --cluster-pipeline <arg>
                 --cluster-threshold <arg>
                 --cluster-replace
  add-node       new_host:new_port existing_host:existing_port
                 --cluster-slave
                 --cluster-master-id <arg>
  del-node       host:port node_id
  call           host:port command arg arg .. arg
                 --cluster-only-masters
                 --cluster-only-replicas
  set-timeout    host:port milliseconds
  import         host:port
                 --cluster-from <arg>
                 --cluster-from-user <arg>
                 --cluster-from-pass <arg>
                 --cluster-from-askpass
                 --cluster-copy
                 --cluster-replace
  backup         host:port backup_directory
  help

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

Cluster Manager Options:
  --cluster-yes  Automatic yes to cluster commands prompts

是不是感覺又發(fā)現(xiàn)新大陸了,上次我們只是用了一個 create 命令而已,還有這一大堆命令呢。別的不說,從名字就發(fā)現(xiàn)了 add-node是添加節(jié)點,del-node是刪除節(jié)點。

添加新節(jié)點

首先還是先建立配置文件和啟動普通實例,這一塊就不多說了,直接配置和啟動 6382 以及 7382 實例。然后我們先添加主節(jié)點。

? redis-cli --cluster add-node 127.0.0.1:6382 127.0.0.1:6379
>>> Adding node 127.0.0.1:6382 to cluster 127.0.0.1:6379
>>> Performing Cluster Check (using node 127.0.0.1:6379)
M: 1d48fc74ac96354c19a454bddbbf9b1dac62ac21 127.0.0.1:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 0bef7a24915f5e3c69cc70e7e51443f5a214cf7b 127.0.0.1:7380
   slots: (0 slots) slave
   replicates 1d48fc74ac96354c19a454bddbbf9b1dac62ac21
S: 47cf0ad16ddb3b80d8055334434dffd7f74229cc 127.0.0.1:6381
   slots: (0 slots) slave
   replicates 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed
M: 1adc88d15f82dc793e122cb274a1ba312c62d9c4 127.0.0.1:6380
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 127.0.0.1:7379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: e39a71d3484308bcc1fda21d5f919b9e707e21f0 127.0.0.1:7381
   slots: (0 slots) slave
   replicates 1adc88d15f82dc793e122cb274a1ba312c62d9c4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:6382 to make it join the cluster.
[OK] New node added correctly.

命令很簡單,add-node 后面跟著兩個參數(shù),第一個是新節(jié)點,第二是已有集群中隨便一個節(jié)點就可以了。這就添加完成了,我們看一下當(dāng)前集群的信息。

? redis-cli -p 6382
127.0.0.1:6382> CLUSTER NODES
47cf0ad16ddb3b80d8055334434dffd7f74229cc 127.0.0.1:6381@16381 slave 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 0 1656470300000 7 connected
0bef7a24915f5e3c69cc70e7e51443f5a214cf7b 127.0.0.1:7380@17380 slave 1d48fc74ac96354c19a454bddbbf9b1dac62ac21 0 1656470300620 1 connected
# 6382
19fbf50b3536d2ab18a116bfa1e15f424df9af25 127.0.0.1:6382@16382 myself,master - 0 1656470299000 0 connected
1d48fc74ac96354c19a454bddbbf9b1dac62ac21 127.0.0.1:6379@16379 master - 0 1656470300116 1 connected 0-5460
8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 127.0.0.1:7379@17379 master - 0 1656470301000 7 connected 10923-16383
1adc88d15f82dc793e122cb274a1ba312c62d9c4 127.0.0.1:6380@16380 master - 0 1656470300620 2 connected 5461-10922
e39a71d3484308bcc1fda21d5f919b9e707e21f0 127.0.0.1:7381@17381 slave 1adc88d15f82dc793e122cb274a1ba312c62d9c4 0 1656470301632 2 connected

可以看到,當(dāng)前的節(jié)點已經(jīng)連接上了,啥都正常,但是,它沒有槽的信息。如果沒有槽信息,Key 也就不會分配到這個節(jié)點上,目前這個節(jié)點還是廢物階段,那么我們就來配置它的 Solt 。

為新節(jié)點分配槽

為節(jié)點分配槽信息,使用的是 --cluster reshard命令參數(shù)。

? redis-cli --cluster reshard 127.0.0.1:6382
## 當(dāng)前集群信息
>>> Performing Cluster Check (using node 127.0.0.1:6382)
M: 19fbf50b3536d2ab18a116bfa1e15f424df9af25 127.0.0.1:6382
   slots: (0 slots) master
S: 47cf0ad16ddb3b80d8055334434dffd7f74229cc 127.0.0.1:6381
   slots: (0 slots) slave
   replicates 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed
S: 0bef7a24915f5e3c69cc70e7e51443f5a214cf7b 127.0.0.1:7380
   slots: (0 slots) slave
   replicates 1d48fc74ac96354c19a454bddbbf9b1dac62ac21
M: 1d48fc74ac96354c19a454bddbbf9b1dac62ac21 127.0.0.1:6379
   slots:[333-5460] (5128 slots) master
   1 additional replica(s)
M: 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 127.0.0.1:7379
   slots:[11256-16383] (5128 slots) master
   1 additional replica(s)
M: 1adc88d15f82dc793e122cb274a1ba312c62d9c4 127.0.0.1:6380
   slots:[5795-10922] (5128 slots) master
   1 additional replica(s)
S: e39a71d3484308bcc1fda21d5f919b9e707e21f0 127.0.0.1:7381
   slots: (0 slots) slave
   replicates 1adc88d15f82dc793e122cb274a1ba312c62d9c4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
## 想要移動多少到新的節(jié)點?
How many slots do you want to move (from 1 to 16384)? 1000
## 接收的 ID 是多少?就是新添加節(jié)點的 ID
What is the receiving node ID? 19fbf50b3536d2ab18a116bfa1e15f424df9af25
## 確認(rèn)槽點的來源,all 表示所有節(jié)點平均搞 1000 個過來
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: all
## 開始檢查 
……………………
 Moving slot 6119 from 1adc88d15f82dc793e122cb274a1ba312c62d9c4
 Moving slot 6120 from 1adc88d15f82dc793e122cb274a1ba312c62d9c4
 Moving slot 6121 from 1adc88d15f82dc793e122cb274a1ba312c62d9c4
 Moving slot 6122 from 1adc88d15f82dc793e122cb274a1ba312c62d9c4
 Moving slot 6123 from 1adc88d15f82dc793e122cb274a1ba312c62d9c4
 Moving slot 6124 from 1adc88d15f82dc793e122cb274a1ba312c62d9c4
……………………
## 確定按這個分槽計劃來?
Do you want to proceed with the proposed reshard plan (yes/no)? yes
……………………
Moving slot 11253 from 127.0.0.1:7379 to 127.0.0.1:6382:
Moving slot 11254 from 127.0.0.1:7379 to 127.0.0.1:6382:
……………………

內(nèi)容比較長,所以我也添加了注釋,不過咱們還是來一條一條的看一下。

  • How many slots do you want to move (from 1 to 16384)? 1000 表示要給它多少槽,這里我給了 1000 個槽過來
  • What is the receiving node ID? 誰來接收這 1000 個槽,當(dāng)然是新添加的這個節(jié)點的 ID
  • Please enter all the source node IDs 從哪些節(jié)點分配槽過來?all 就是其它所有節(jié)點平均分配,也可以填 ID 最后再加個 done 完成這一塊的配置
  • 接著輸出一堆移動的計劃,比如 6119 從 1adc88d15f82dc793e122cb274a1ba312c62d9c4 也就是 6379 分過來
  • Do you want to proceed with the proposed reshard plan (yes/no)? yes 確定這么分?yes 之后就開始正式分槽了,數(shù)據(jù)也就跟著槽帶過來了

好了,現(xiàn)在看下 6382 上是不是有數(shù)據(jù)了。

?  redis-cli -c -p 6382
127.0.0.1:6382> keys *
1) "{user:1:}bb"
2) "{user:1:}aa"
3) "{user:2:}aa"
4) "{user:2:}bb"

127.0.0.1:6382> CLUSTER NODES
47cf0ad16ddb3b80d8055334434dffd7f74229cc 127.0.0.1:6381@16381 slave 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 0 1656471120293 7 connected
0bef7a24915f5e3c69cc70e7e51443f5a214cf7b 127.0.0.1:7380@17380 slave 1d48fc74ac96354c19a454bddbbf9b1dac62ac21 0 1656471121811 1 connected
19fbf50b3536d2ab18a116bfa1e15f424df9af25 127.0.0.1:6382@16382 myself,master - 0 1656471120000 8 connected 0-332 5461-5794 10923-11255
1d48fc74ac96354c19a454bddbbf9b1dac62ac21 127.0.0.1:6379@16379 master - 0 1656471120000 1 connected 333-5460
8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 127.0.0.1:7379@17379 master - 0 1656471119788 7 connected 11256-16383
1adc88d15f82dc793e122cb274a1ba312c62d9c4 127.0.0.1:6380@16380 master - 0 1656471121304 2 connected 5795-10922
e39a71d3484308bcc1fda21d5f919b9e707e21f0 127.0.0.1:7381@17381 slave 1adc88d15f82dc793e122cb274a1ba312c62d9c4 0 1656471121000 2 connected

再看一下 NODES 信息,四臺主庫,新添加的主庫槽信息有點亂,是啊,畢竟是其它三臺平均分過來的,所以新主庫的槽信息是 0-332 5461-5794 10923-11255這個樣子的。

添加新的從庫

新來的兄弟有點孤單啊,咱們給它把從庫加上怎么樣?讓 7382 成為它的從庫,非常簡單。

?  redis-cli --cluster add-node 127.0.0.1:7382 127.0.0.1:6382 --cluster-slave --cluster-master-id 19fbf50b3536d2ab18a116bfa1e15f424df9af25

再來看 NODES 的信息。嗯,完美,數(shù)據(jù)也同步復(fù)制到從庫了。

? redis-cli -c -p 7382
127.0.0.1:7382> CLUSTER NODES
47cf0ad16ddb3b80d8055334434dffd7f74229cc 127.0.0.1:6381@16381 slave 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 0 1656471293998 7 connected
8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 127.0.0.1:7379@17379 master - 0 1656471294000 7 connected 11256-16383
19fbf50b3536d2ab18a116bfa1e15f424df9af25 127.0.0.1:6382@16382 master - 0 1656471294000 8 connected 0-332 5461-5794 10923-11255
e39a71d3484308bcc1fda21d5f919b9e707e21f0 127.0.0.1:7381@17381 slave 1adc88d15f82dc793e122cb274a1ba312c62d9c4 0 1656471292583 2 connected
0bef7a24915f5e3c69cc70e7e51443f5a214cf7b 127.0.0.1:7380@17380 slave 1d48fc74ac96354c19a454bddbbf9b1dac62ac21 0 1656471293593 1 connected
b09db43f11a3cd0b3e994d8780bca6b7faf4eb85 127.0.0.1:7382@17382 myself,slave 19fbf50b3536d2ab18a116bfa1e15f424df9af25 0 1656471293000 8 connected
1adc88d15f82dc793e122cb274a1ba312c62d9c4 127.0.0.1:6380@16380 master - 0 1656471294099 2 connected 5795-10922
1d48fc74ac96354c19a454bddbbf9b1dac62ac21 127.0.0.1:6379@16379 master - 0 1656471292583 1 connected 333-5460

127.0.0.1:7382> keys *
1) "{user:2:}aa"
2) "{user:2:}bb"
3) "{user:1:}aa"
4) "{user:1:}bb"

刪除節(jié)點

好了,接下來咱們就再試試怎么刪除剛剛新添加的節(jié)點。使用的是 --cluster del-node 命令參數(shù)。

? redis-cli --cluster del-node 127.0.0.1:7382 b09db43f11a3cd0b3e994d8780bca6b7faf4eb85
>>> Removing node b09db43f11a3cd0b3e994d8780bca6b7faf4eb85 from cluster 127.0.0.1:7382
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.

? redis-cli -c -p 7382
127.0.0.1:7382> CLUSTER NODES
b09db43f11a3cd0b3e994d8780bca6b7faf4eb85 127.0.0.1:7382@17382 myself,master - 0 1656471407000 0 connected

刪除從庫沒壓力,直接就刪了,再登進(jìn) 7382 看的話,它現(xiàn)在就是自己一個孤家寡人了。當(dāng)然,原來的集群中也沒有它的信息了。

? redis-cli -c -p 6382
127.0.0.1:6382> CLUSTER NODES
47cf0ad16ddb3b80d8055334434dffd7f74229cc 127.0.0.1:6381@16381 slave 8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 0 1656471472540 7 connected
0bef7a24915f5e3c69cc70e7e51443f5a214cf7b 127.0.0.1:7380@17380 slave 1d48fc74ac96354c19a454bddbbf9b1dac62ac21 0 1656471472642 1 connected
19fbf50b3536d2ab18a116bfa1e15f424df9af25 127.0.0.1:6382@16382 myself,master - 0 1656471471000 8 connected 0-332 5461-5794 10923-11255
1d48fc74ac96354c19a454bddbbf9b1dac62ac21 127.0.0.1:6379@16379 master - 0 1656471472000 1 connected 333-5460
8d0be91ca6c5e809f3915e23a2ab26d8b14fe5ed 127.0.0.1:7379@17379 master - 0 1656471472000 7 connected 11256-16383
1adc88d15f82dc793e122cb274a1ba312c62d9c4 127.0.0.1:6380@16380 master - 0 1656471471126 2 connected 5795-10922
e39a71d3484308bcc1fda21d5f919b9e707e21f0 127.0.0.1:7381@17381 slave 1adc88d15f82dc793e122cb274a1ba312c62d9c4 0 1656471472136 2 connected

好了,我們再來刪 6382 這臺主庫。

? redis-cli --cluster del-node 127.0.0.1:6382 19fbf50b3536d2ab18a116bfa1e15f424df9af25
>>> Removing node 19fbf50b3536d2ab18a116bfa1e15f424df9af25 from cluster 127.0.0.1:6382
[ERR] Node 127.0.0.1:6382 is not empty! Reshard data away and try again.

踫到問題了吧,現(xiàn)在的 6382 上是有槽數(shù)據(jù)的,如果已經(jīng)分配了槽,那么這個節(jié)點是不能直接被刪除的。首先,數(shù)據(jù)會丟,其次,這些槽也不知道該跟誰了。因此,我們需要先把槽轉(zhuǎn)給別人。還是使用 --cluster reshard來操作。

………………
# 要移動多少槽?
How many slots do you want to move (from 1 to 16384)? 16384
# 給誰?注意,這里不能給 6382 了,要把它的給別人
What is the receiving node ID? 1d48fc74ac96354c19a454bddbbf9b1dac62ac21
# 從 6382 上把槽拿出來
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: 19fbf50b3536d2ab18a116bfa1e15f424df9af25
Source node #2: done
………………

這里就沒有貼那么多代碼了,只是貼上來關(guān)鍵部分。

  • How many slots do you want to move (from 1 to 16384)? 這里要填的只要比 6382 的大就行了,意思就是要把 6382 的槽清空
  • What is the receiving node ID? 這里也不能再填 6382 的 ID 了,我們要把它的槽給別人
  • Please enter all the source node IDs 現(xiàn)在這里填的 6382 的

其它的選項就和之前添加新節(jié)點時一樣了,這樣原來 6382 的槽就轉(zhuǎn)給了 1d48fc74ac96354c19a454bddbbf9b1dac62ac21 也就是 6379 。好了,現(xiàn)在你可以用 --cluster nodes查看一下集群信息,確認(rèn)沒問題的話再刪除節(jié)點就沒問題了。

? redis-cli --cluster del-node 127.0.0.1:6382 90ac7cdc531bdbb88d47a1980cdf9535cede0b7f
>>> Removing node 90ac7cdc531bdbb88d47a1980cdf9535cede0b7f from cluster 127.0.0.1:6382
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.

上面的分槽方式,會將之前我們分配的 1000 個槽全部轉(zhuǎn)給 6379 ,這樣其實 6379 就比另外兩個槽的數(shù)據(jù)多了。其實正常轉(zhuǎn)的話,我們應(yīng)該多次去分槽,然后 How many slots do you want to move (from 1 to 16384)? 時指定大小,比如要給 6379 的就只分配 334 個,因為之前 6379 也是分了 0-333這些槽過來。另外兩臺也是類似的操作,相當(dāng)于就是把之前拿過來的再平均還回去了。不僅限于 3 個節(jié)點,N 個節(jié)點直接就操作 N 次,然后還 槽數(shù)/N 的數(shù)量回去就好了。

PHP 連接集群

Cluster 分布式集群的學(xué)習(xí)就完成了,最后再說一點就是在 PHP 這種客戶端上如何連接或者使用 Cluster 呢?非常簡單,phpredis 擴(kuò)展或者 predis 擴(kuò)展都有類似的對象可以直接使用,我們直接看 phpredis 的使用。不清楚 phpredis 和 predis 的小伙伴自己百度下,之前我也在 Laravel 系列的文章課程中講過 【Laravel系列4.7】連接redis以及緩存應(yīng)用https://mp.weixin.qq.com/s/DF3oo3c4RTfU_WvBSKXrpA 。

$c = new \RedisCluster(null, ['127.0.0.1:6379','127.0.0.1:6380','127.0.0.1:6381',
            '127.0.0.1:7379','127.0.0.1:7380','127.0.0.1:7381']);
var_dump($c);
// object(RedisCluster)#1 (0) {
// }

RedisCluster 對象就是連接 Cluster 集群的,它的參數(shù)第一個 null 是一個名稱的意思,啥意思?就是其實我們可以在 .ini 的配置文件中配置 redis 的一些相關(guān)信息。然后在這里可以直接通過這個名稱找到相關(guān)的配置,這樣就不用第二個參數(shù)了。

# 在 redis.ini or php.ini 文件中
redis.clusters.seeds = "mycluster[]=localhost:6379&test[]=localhost:6380"
redis.clusters.timeout = "mycluster=5"
redis.clusters.read_timeout = "mycluster=10"

#
 在代碼中
$redisClusterPro = new RedisCluster('mycluster');
$redisClusterDev = new RedisCluster('test');

從 RedisCluster 對象輸出的結(jié)果來看,它里面直接就顯示了當(dāng)前主庫的信息。另外還有一點就是,其實我們第二個參數(shù)不用寫那么多,只要隨便寫一個當(dāng)前集群中的節(jié)點信息就可以了。

$c = new \RedisCluster("aaa", ['127.0.0.1:6379']);

然后試試吧,和普通的 Redis 對象一樣的操作就行了。

$c->set("a1""111");
$c->set("b1""111");
$c->incr("b1");
$c->lPush("c1"123);

print_r($c->get("a1")); echo PHP_EOL;
print_r($c->get("b1")); echo PHP_EOL;
print_r($c->lRange("c1"0-1));
// 111
// 112
// Array
// (
//   [0] => 3
//   [1] => 2
//   [2] => 1
// )

去命令行看看,數(shù)據(jù)肯定是存在的啦!

127.0.0.1:6379> get a1
-> Redirected to slot [7785] located at 127.0.0.1:6380
"111"

總結(jié)

學(xué)習(xí)完了 Reids Cluster ,我們關(guān)于 Redis 的正課部分也就全部完成了,后面還有一些擴(kuò)展方面的知識。說實話,別提 Cluster 了,就是哨兵,甚至是主從,我在日常的真實項目開發(fā)中都沒接觸過。為啥?Redis 官方給的數(shù)據(jù),理想狀態(tài)下單機(jī)寫和讀分別能達(dá)到每秒 8 萬和 11 萬次。中小型公司大部分情況下單獨一臺 Redis 的性能都很難發(fā)揮到極致,更別說做主從或者分布式了。不過,機(jī)會總是留給有準(zhǔn)備的人的,知識的學(xué)習(xí)和應(yīng)用要分開來看,要是能學(xué)為所用當(dāng)然是最好的,如果用不到,至少還要有一定的儲備,免得真正需要你發(fā)揮的時候手忙腳亂了。

參考文檔:

https:///docs/manual/scaling/

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多