15分钟从零开始搭建支持10w+用户的生产环境(二)
上一篇文章,把這個架構(gòu)的起因,和操作系統(tǒng)的選擇進行了詳細說明。
原文地址:15分鐘從零開始搭建支持10w+用戶的生產(chǎn)環(huán)境(一)
?
二、數(shù)據(jù)庫的選擇
對于一個10W+用戶的系統(tǒng),數(shù)據(jù)庫選擇很重要。
一般來說,這個用戶量,根據(jù)不同的應(yīng)用,會形成單表年度400W~4000W條的數(shù)據(jù)量。在這個數(shù)據(jù)量下,我們需要相對大型的數(shù)據(jù)庫。
可供選擇的主流數(shù)據(jù)庫:
| 關(guān)系型數(shù)據(jù)庫 | MySQL, SQL Server for Linux, Oracle, DB2, PostgreDB |
| NoSQL數(shù)據(jù)庫 | Radis, HBase, MongoDB |
具體數(shù)據(jù)庫的區(qū)別分析,網(wǎng)上有很多文章,這兒就不再多討論。
?
在現(xiàn)在討論的這個架構(gòu)下,有幾個要求:
數(shù)據(jù)庫要是免費的;
數(shù)據(jù)庫的安裝要簡單;
數(shù)據(jù)庫的使用要方便。這個使用,包括管理和開發(fā);
最重要的一點,是數(shù)據(jù)后期可擴展成分布式架構(gòu),以保證在不改動代碼的情況下,支持B、C輪的數(shù)據(jù):P。
在這個要求下,我們選擇MongoDB作為主數(shù)據(jù)庫。
MongoDB的官網(wǎng):https://www.mongodb.com
MongoDB最新版下載:https://www.mongodb.com/download-center/community
community版和professional版本最大的區(qū)別是pro版有InMemoryDB模式,可以依托大內(nèi)存建立存放在內(nèi)存中的數(shù)據(jù)庫文件。一般應(yīng)用,社區(qū)版足夠。
?
先看看MongoDB的安裝有多簡單:
第一步:下載數(shù)據(jù)庫,以4.2.6 for Debian版本為例:
wget?https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian92-4.2.6.tgz下載完成后,打開壓縮包,
tar?xvf?mongodb-linux-x86_64-debian92-4.2.6.tgz?-C?/your_folder我們會得到以下文件,
-rw-r--r--?1?test?test??30608?Apr?17?11:10?LICENSE-Community.txt -rw-r--r--?1?test?test??16726?Apr?17?11:10?MPL-2 -rw-r--r--?1?test?test???2617?Apr?17?11:10?README -rw-r--r--?1?test?test??75405?Apr?17?11:10?THIRD-PARTY-NOTICES -rw-r--r--?1?test?test?183512?Apr?17?11:13?THIRD-PARTY-NOTICES.gotools drwxr-xr-x?2?test?test???4096?Apr?20?19:29?binbin目錄中,有以下文件,
-rwxr-xr-x?1?test?test?12715648?Apr?17?11:12?bsondump -rwxr-xr-x?1?test?test?????7694?Apr?17?11:36?install_compass -rwxr-xr-x?1?test?test?47998920?Apr?17?11:36?mongo -rwxr-xr-x?1?test?test?73240640?Apr?17?11:36?mongod -rwxr-xr-x?1?test?test?17526720?Apr?17?11:12?mongodump -rwxr-xr-x?1?test?test?17277000?Apr?17?11:12?mongoexport -rwxr-xr-x?1?test?test?17242056?Apr?17?11:12?mongofiles -rwxr-xr-x?1?test?test?17452192?Apr?17?11:12?mongoimport -rwxr-xr-x?1?test?test?17879808?Apr?17?11:13?mongoreplay -rwxr-xr-x?1?test?test?17851848?Apr?17?11:12?mongorestore -rwxr-xr-x?1?test?test?40628464?Apr?17?11:36?mongos -rwxr-xr-x?1?test?test?17029440?Apr?17?11:12?mongostat -rwxr-xr-x?1?test?test?16707368?Apr?17?11:12?mongotop其中:
mongo是個shell,用來操作數(shù)據(jù)庫。
mongod是單個數(shù)據(jù)庫的服務(wù)程序,每個數(shù)據(jù)庫都需要一個mongod進程。
mongos是集群的路由和入口,做集群時必須要用到。
別的都是一些管理工具,可以慢慢了解。
第二步:安裝&啟動
MongoDB本身是一個綠色軟件,上一節(jié)的下載和解壓,就是安裝的過程了。
下面是啟動數(shù)據(jù)庫。
./mongod?--dbpath?your_database_folder_pathMongoDB運行,只需要一個數(shù)據(jù)庫文件的存放目錄。
當(dāng)你看到命令執(zhí)行后,出現(xiàn)一大篇內(nèi)容,其中有兩行:
I??NETWORK??[listener]?Listening?on?127.0.0.1 I??NETWORK??[listener]?waiting?for?connections?on?port?27017的時候,恭喜你,數(shù)據(jù)庫已經(jīng)上線了。
?
簡單不?
但是一定要記著,運行簡單并不等于這是個Access一樣的小東西。
這是個大型的基于文檔的NoSQL數(shù)據(jù)庫!
?
如果想查詢各個命令都有什么參數(shù),可以在命令后邊加 --help 來查詢。
例如:
./mongod?--help里面有詳細的說明。
?
下面列幾個常用的參數(shù):
--config?配置文件。MongoDB除了直接用命令行參數(shù)外,也可以把參數(shù)寫在一個配置文件中,然后在config參數(shù)引用這個配置文件
--port?MongoDB默認端口是27017,可以改成任何端口
--logpath?默認數(shù)據(jù)庫日志是輸出到終端的,可以改為保存到文件(也可以不用這個參數(shù),而在命令行重定向)
--bind_ip?MongoDB默認綁定IP是127.0.0.1,可以改成任意IP地址
--db_path?數(shù)據(jù)庫文件的保存目錄
下面,我們檢查一下數(shù)據(jù)庫的安裝是否正確。
我們用mongo連到數(shù)據(jù)庫進行操作:
$?./mongo?localhost:27017 MongoDB?shell?version?v4.2.5 >?use?TestDB switched?to?db?TestDB >?db.collection.insert({"user":"test1"}) WriteResult({?"nInserted"?:?1?}) >?db.collection.insert({"user":"test2"}) WriteResult({?"nInserted"?:?1?}) >?db.collection.find() {?"_id"?:?ObjectId("5ea0279699857fc83ddf6ef5"),?"user"?:?"test1"?} >?db.collection.find({"user":"test2"}) {?"_id"?:?ObjectId("5ea029a599857fc83ddf6ef6"),?"user"?:?"test2"?} >?exit?
在這一節(jié)的最后,補充兩個問題:
擴展性
上面介紹的是單MongoDB數(shù)據(jù)庫的安裝。這是最簡單的一種形式,也是應(yīng)用最多的一種形式。
如果數(shù)據(jù)很重要,為了防止任何情況的數(shù)據(jù)丟失,可以采用 Master + N Slave 的方式,做主從結(jié)構(gòu),把同樣的多個庫放到多個服務(wù)器上,互為備份。同時,這種方式還可以實現(xiàn)讀寫分離。
如果數(shù)據(jù)量再大,則可以把數(shù)據(jù)庫擴展成集群,用以增加數(shù)據(jù)庫的容量,并提升訪問性能。
安全
上面介紹安裝的時候,采用的默認端口。在實際使用時,可以改換一個端口,減少被掃描攻擊的機率。
另外,數(shù)據(jù)庫默認安裝時,是不檢查用戶的。換言之,就是任何人都可以連到數(shù)據(jù)庫。如果用在生產(chǎn)服務(wù)器上,一定要在數(shù)據(jù)庫中建議用戶和權(quán)限,以保證阻擋非法的訪問。
MongoDB的安全問題,我會單獨寫一篇文章來說,敬請關(guān)注。
(未完待續(xù))
您的贊賞是我最大的鼓勵
I will be more solid with your donations
總結(jié)
以上是生活随笔為你收集整理的15分钟从零开始搭建支持10w+用户的生产环境(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15分钟从零开始搭建支持10w+用户的生
- 下一篇: 15分钟从零开始搭建支持10w+用户的生