开发者学堂课程【MongoDB精讲课程(下):分片概念&架构目标】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/727/detail/12981
分片概念&架构目标
集群分片:
特点,不管搭建了多少个这个副本节点,它存储的数据都是一样的,存储的数据一样就带来一个问题,它只能存在数据,只能存在一台服务器上面,完整的数据随着业务量非常大的时候,一台服务器已经存不下的时候就得用这个分片集群的方式。
分片集群:
实际上就是一种跨多台机器分布数据的一个方法。它就是将这个数据拆分对吧,拆分成好多片儿,然后分别分散在不同的机器上,那分散在不同的机器上之后,就能达到一个好处,就是只需要用一片儿,或者说多台这种简单的这种小服务器就可以达到一个数,非常大的一个数据集的一个存储,不用再去单个的去增加那个配置。
解决系统增长的这个方法:
随着这个业务越来越大,数据量越来越大之后,一般会有两种方案,一种是叫垂直扩展配置,垂直扩展是最传统的方式,就是不停的增加这台服务器的配置,给它加内存加硬盘,但是垂直扩展它是有一个上限的,也知道这个计算机你甭管怎么加加到最后它都是有一个上限,而且这个上限机器配置越好,其实它的这个性价比是越低的,那用分片其实可以带来第二种方式,就是水平扩展。当数据集在增加的时候,就需要将它拆分,分成一片儿一片儿的,给它分散的存在在不同的这种廉价一点儿,或者便宜的这个小服务器上面,最后再把它数据一汇总就可以构成大数据的这个高分组,这是非常大的一个数据集。这就是这个分片的好处,说白了,就是用多台廉价的小服务器,可以达到一个存储大数据的一个作用,这就是这个分片。
分片集群,包含三个组件,一个是这个分片,分片就是每个分片,都是存储数据的,最重要是存储数据的地方。那还有个就是路由,这个机器你作为这个分片存储了之后,怎么访问以及访问的时候数据是在放在哪一片。需要通过这个路由来调度配置。然后还需要第三个组件,其实就是存放这些配置信息的,就是哪个数据,存在哪个分片,到时候路由怎么去掉。需要一个这个调度的这个配置就是咱们的这个配置服务 configservers ,看一下整个完整的这个架构图:
APP 这个 server 通过路由去访问,访问的时候去抓取这个配置服务,配置服务之后再根据这个配置服务,去知道哪个数据存在哪一片,再去找对应的这个分片的这个服务器,把这个架构搞这么大之后,再把这个副本级也给它用上。
这个分片集群,实际上就是最后有这么一个庞大的架构:
上面是路由,两个路由的主要作用,就是为了这个容灾,当一个路由坏了之后,另一个路由还能用,它们两个之间其实是相互独立的,它的作用都是作为这个路由节点,那还有这个配置服务和这个分片,至少要搭建两个分片服务,这两个分片服务分别都用这个副本集的方式去搭建。比如说分片一,一主一副本一仲裁。
分片二一样也是一主一副本一仲裁,这个 config 就是这个配置服务因为存储的是配置信息就不需要仲裁节点了,直接用副本就可以了,两个副本就可以了。
可以想象一下,这块儿用仲裁的目的是什么,它不干什么事,它也不存储数据,它主要的作用是为了投票,但是这个配置服务之它并不会存储大量的数据,其实就不需要这个仲裁节点了,两个副本都可以,因为它对这个机器的要求其实是不高的,它不需要存储很多数据,它就存储一些这个配置服务,所以这块搞两个副本就可以了,不用再去为了省钱搞一个什么仲裁,当然这块儿如果要搞成仲裁道理是一样的,其实就是为了还去搞一个这个配置服务,也给它做一个这个,副本类似于副本集。
待会儿搭建的时候,其实跟这个副本级的搭建非常像,那其实要搭建这么123,三个副本级,然后加上两个路由,那这个三个副本级,分别每个里面又有三个服务,那一共是需要搭建11个,这个 mongo 服务,这个11个 mongo 服务,待会儿搭建的时候呢,需要有一定的顺序。
其实这个顺序就是甭管先搭副本集还是先搭这个配置服务都可以,这两个可以任意的就是随便搭,随便谁先搭都可以,但是路由节点一定是需要先搭的,这个是需要注意的,搭建的时候,就跟这个副本级搭建基本一致。