加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2021-05-21 07:54:31 所属栏目:大数据 来源: https://www.jb51.cc
导读:上一篇文章,把这个架构的起因,和操作系统的选择进行了详细说明。 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(一) ? 二、数据库的选择 对于一个10W+用户的系统,数据库选择很重要。 一般来说,这个用户量,根据不同的应用,会形成单表年度400W~40
关系型数据库 MysqL,sql Server for Linux,Oracle,DB2,PostgreDB Nosql数据库 Radis,HBase,MongoDB

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

?

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

  1. 数据库要是免费的;
  2. 数据库的安装要简单;
  3. 数据库的使用要方便。这个使用,包括管理和开发;
  4. 最重要的一点,是数据后期可扩展成分布式架构,以保证在不改动代码的情况下,支持B、C轮的数据:P。

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

MongoDB的官网: https://www.mongodb.com

MongoDB最新版下载: https://www.mongodb.com/download-center/community

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

?

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

第一步:下载数据库,以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??16726?Apr?17?11:10?MPL-2
-rw-r--r--?1?test???2617?Apr?17?11:10?README
-rw-r--r--?1?test??75405?Apr?17?11:10?THIRD-PARTY-NOTICES
-rw-r--r--?1?test?183512?Apr?17?11:13?THIRD-PARTY-NOTICES.gotools
drwxr-xr-x?2?test???4096?Apr?20?19:29?bin

bin目录中,有以下文件,

-rwxr-xr-x?1?test?12715648?Apr?17?11:12?bsondump
-rwxr-xr-x?1?test?????7694?Apr?17?11:36?install_compass
-rwxr-xr-x?1?test?47998920?Apr?17?11:36?mongo
-rwxr-xr-x?1?test?73240640?Apr?17?11:36?mongod
-rwxr-xr-x?1?test?17526720?Apr?17?11:12?mongodump
-rwxr-xr-x?1?test?17277000?Apr?17?11:12?mongoexport
-rwxr-xr-x?1?test?17242056?Apr?17?11:12?mongofiles
-rwxr-xr-x?1?test?17452192?Apr?17?11:12?mongoimport
-rwxr-xr-x?1?test?17879808?Apr?17?11:13?mongoreplay
-rwxr-xr-x?1?test?17851848?Apr?17?11:12?mongorestore
-rwxr-xr-x?1?test?40628464?Apr?17?11:36?mongos
-rwxr-xr-x?1?test?17029440?Apr?17?11:12?mongostat
-rwxr-xr-x?1?test?16707368?Apr?17?11:12?mongotop

其中:

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

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

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

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

第二步:安装&启动

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

下面是启动数据库。

./mongod?--dbpath?your_database_folder_path

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

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

I??NETWORK??[listener]?Listening?on?127.0.0.1
I??NETWORK??[listener]?waiting?for?connections?on?port?27017

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

?

简单不?

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

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

?

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

例如:

./mongod?--help

里面有详细的说明。

?

下面列几个常用的参数:

参数 config 配置文件。MongoDB除了直接用命令行参数外,也可以把参数写在一个配置文件中,然后在config参数引用这个配置文件 port MongoDB默认端口是27017,可以改成任何端口 logpath 默认数据库日志是输出到终端的,可以改为保存到文件(也可以不用这个参数,而在命令行重定向) bind_ip MongoDB默认绑定IP是127.0.0.1,可以改成任意IP地址。 db_path 数据库文件的保存目录

?

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

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

$?./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."test2"})
WriteResult({?find()
{?"_id"?:?ObjectId("5ea0279699857fc83ddf6ef5"),?"user"?:?"test1"?}
>?db.collection.find({"test2"})
{?"5ea029a599857fc83ddf6ef6"),1); word-wrap: inherit !important; word-break: inherit !important">"test2"?}
>?exit

?

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

  1. 扩展性

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

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

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

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

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

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

    (未完待续)

    ?


    ?

    微信公众号:老王Plus

    扫描二维码,关注个人公众号,可以第一时间得到最新的个人文章和内容推送

    本文版权归作者所有,转载请保留此声明和原文链接

    (编辑:北几岛)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

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

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

    ?

    二、数据库的选择

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

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

    可供选择的主流数据库:

    类别 数据库
    说明
      推荐文章
        热点阅读