100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 15分钟从零开始搭建支持10w+用户的生产环境(二)

15分钟从零开始搭建支持10w+用户的生产环境(二)

时间:2024-06-21 02:35:19

相关推荐

15分钟从零开始搭建支持10w+用户的生产环境(二)

上一篇文章,把这个架构的起因,和操作系统的选择进行了详细说明。

原文地址:15分钟从零开始搭建支持10w+用户的生产环境(一)

二、数据库的选择

对于一个10W+用户的系统,数据库选择很重要。

一般来说,这个用户量,根据不同的应用,会形成单表年度400W~4000W条的数据量。在这个数据量下,我们需要相对大型的数据库。

可供选择的主流数据库:

具体数据库的区别分析,网上有很多文章,这儿就不再多讨论。

在现在讨论的这个架构下,有几个要求:

数据库要是免费的;

数据库的安装要简单;

数据库的使用要方便。这个使用,包括管理和开发;

最重要的一点,是数据后期可扩展成分布式架构,以保证在不改动代码的情况下,支持B、C轮的数据:P。

在这个要求下,我们选择MongoDB作为主数据库。

MongoDB的官网:

MongoDB最新版下载:/download-center/community

community版和professional版本最大的区别是pro版有InMemoryDB模式,可以依托大内存建立存放在内存中的数据库文件。一般应用,社区版足够。

先看看MongoDB的安装有多简单:

第一步:下载数据库,以4.2.6 for Debian版本为例:

wget/linux/mongodb-linux-x86_64-debian92-4.2.6.tgz

下载完成后,打开压缩包,

tarxvfmongodb-linux-x86_64-debian92-4.2.6.tgz-C/your_folder

我们会得到以下文件,

-rw-r--r--1testtest30608Apr1711:10LICENSE-Community.txt-rw-r--r--1testtest16726Apr1711:10MPL-2-rw-r--r--1testtest2617Apr1711:10README-rw-r--r--1testtest75405Apr1711:10THIRD-PARTY-NOTICES-rw-r--r--1testtest183512Apr1711:13THIRD-PARTY-NOTICES.gotoolsdrwxr-xr-x2testtest4096Apr:29bin

bin目录中,有以下文件,

-rwxr-xr-x1testtest12715648Apr1711:12bsondump-rwxr-xr-x1testtest7694Apr1711:36install_compass-rwxr-xr-x1testtest47998920Apr1711:36mongo-rwxr-xr-x1testtest73240640Apr1711:36mongod-rwxr-xr-x1testtest17526720Apr1711:12mongodump-rwxr-xr-x1testtest17277000Apr1711:12mongoexport-rwxr-xr-x1testtest17242056Apr1711:12mongofiles-rwxr-xr-x1testtest17452192Apr1711:12mongoimport-rwxr-xr-x1testtest17879808Apr1711:13mongoreplay-rwxr-xr-x1testtest17851848Apr1711:12mongorestore-rwxr-xr-x1testtest40628464Apr1711:36mongos-rwxr-xr-x1testtest17029440Apr1711:12mongostat-rwxr-xr-x1testtest16707368Apr1711:12mongotop

其中:

mongo是个shell,用来操作数据库。

mongod是单个数据库的服务程序,每个数据库都需要一个mongod进程。

mongos是集群的路由和入口,做集群时必须要用到。

别的都是一些管理工具,可以慢慢了解。

第二步:安装&启动

MongoDB本身是一个绿色软件,上一节的下载和解压,就是安装的过程了。

下面是启动数据库。

./mongod--dbpathyour_database_folder_path

MongoDB运行,只需要一个数据库文件的存放目录。

当你看到命令执行后,出现一大篇内容,其中有两行:

INETWORK[listener]Listeningon127.0.0.1INETWORK[listener]waitingforconnectionsonport27017

的时候,恭喜你,数据库已经上线了。

简单不?

但是一定要记着,运行简单并不等于这是个Access一样的小东西。

这是个大型的基于文档的NoSQL数据库!

如果想查询各个命令都有什么参数,可以在命令后边加 --help 来查询。

例如:

./mongod--help

里面有详细的说明。

下面列几个常用的参数:

--config配置文件。MongoDB除了直接用命令行参数外,也可以把参数写在一个配置文件中,然后在config参数引用这个配置文件

--portMongoDB默认端口是27017,可以改成任何端口

--logpath默认数据库日志是输出到终端的,可以改为保存到文件(也可以不用这个参数,而在命令行重定向)

--bind_ipMongoDB默认绑定IP是127.0.0.1,可以改成任意IP地址

--db_path数据库文件的保存目录

下面,我们检查一下数据库的安装是否正确。

我们用mongo连到数据库进行操作:

$./mongolocalhost:27017MongoDBshellversionv4.2.5>useTestDBswitchedtodbTestDB>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

在这一节的最后,补充两个问题:

扩展性

上面介绍的是单MongoDB数据库的安装。这是最简单的一种形式,也是应用最多的一种形式。

如果数据很重要,为了防止任何情况的数据丢失,可以采用 Master + N Slave 的方式,做主从结构,把同样的多个库放到多个服务器上,互为备份。同时,这种方式还可以实现读写分离。

如果数据量再大,则可以把数据库扩展成集群,用以增加数据库的容量,并提升访问性能。

安全

上面介绍安装的时候,采用的默认端口。在实际使用时,可以改换一个端口,减少被扫描攻击的机率。

另外,数据库默认安装时,是不检查用户的。换言之,就是任何人都可以连到数据库。如果用在生产服务器上,一定要在数据库中建议用户和权限,以保证阻挡非法的访问。

MongoDB的安全问题,我会单独写一篇文章来说,敬请关注。

(未完待续)

您的赞赏是我最大的鼓励

I will be more solid with your donations

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。