附上:MongoDB详解,用心看这篇就够了【重点】-CSDN博客
是一组维护相同数据集得mongodb服务。副本集可以提供冗余和高可用性,是所有生产部署的基础。也可以说,副本集是类似于有自动故障恢复功能的主从集群。
主节点,从节点,仲裁节点。
MongoDB在副本集中,会自动进行主节点的选举,主节点的选举的触发条件:
1)主节点故障
2)主节点网络不可达(默认心跳为10s)
3)人工干预
选举规则:
票数最高;如果票数相同,数据新的节点获胜(数据的新旧是根据操作日子oplog来对比的)
在选举过程中,优先级很重要,优先级越高,获得其他人的投票的几率就越大。
分片集群是一种跨多台机器分布数据的方法,MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。换句话说:分片是指将数据拆分,将其分散存在不同的机器上的过程。将数据分散到不同机器上,不需要功能强大的大型计算机就可以存储更多的数据,处理更多的负载。
1)分片(存储):每个分片包含分片数据的子集。每个分片都可以部署为副本集。
2)mongos(路由):mongos充当查询路由器,在客户端应用程序和分片集群之间提供接口。
3)config servers(“调度”的配置):配置服务器存储集群的元数据和配置设置。
默认情况下,MongoDB不会对连接客户端进行用户验证,这是十分危险的。为了保证mongodb的安全可以做以下几个步骤:
1)使用新的端口,默认27017端口如果一旦知道了ip就可以连接上,不安全。
2)设置mongodb的网络环境,最好将mongodb部署到公司服务器的内网中,这样外网是访问不到的,公司内部使用vpn等。
3)开启安全认证。认证要同时设置服务器之间的内部认证方式,同时要设置客户端连接到集群的账号密码认证方式。
elasticsearch是一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能。
是以elasticsearch为核心的技术栈,包括beats(用来做数据收集)、logstash(用来做数据收集)、kihana(用来做数据展示)、elasticsearch(负责数据的搜索,存储等核心功能)。
elasticsearch的底层就是基于Lucece来实现的。Lucece是Apache的开源搜索引擎类库,提供了搜索引擎的核心API。
传统数据库(mysql)使用正向索引,
elasticsearch采用倒序索引:
文档:每条数据就是一个文档
词条:文档按照语义分成的词语
eg:
用elasticsearch搜索的流程案例:
传统是根据文档去找词条,但是es是根据词条去找文档。这就是倒排索引的含义。
文档:每一条数据就是一个文档。
词条:对文档中的内容分词,得到的词语就是词条
正向索引:基于文档id创建索引。查询词条时必须先找到文档,而后判断是否包含词条。
倒排索引:对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时现根据词条查询文档id,而后获得文档。