Redis :间值数据库,适合缓存用户Session会话与经常需要查的数据
1.Redis集群,为什么在项目中使用集群
1.持久化,持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要左右是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失;
2、复制:主从复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
3、哨兵:在复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力受到单机的限制。
4、集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。
MongDB:是一个高性能,开源,无模式的文档型数据库,京东用它保存商品数据。
MongDB可以通过副本集、分片来扩展数据库性能;传统的关系型数据库一般是与数据库、表、记录三个层次概念组成,MongDB是由数据库、集合、文档对象三个层次组成。数据库对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
MongDB主要解决的是海量数据的访问效率问题。因为MongDB主要支持海量数据存储的,所以MongDB自带了了一个出色的分布式文件系统GridFS,可以支持海量数据的存储。
但是它不支持事务,没有SQL系统
MPP架构分布式数据库,主机、操作系统、内存、存储都是自我控制的,不存在共享。也就是每个节点都是一个独立的数据库。节点之间的信息交互是通过节点互联网络实现。
通过将数据分布到多个节点上来实现规模数据的存储,通过并行查询处理来提高查询性能。把小数据库组织起来形成一个大数据库。各个节点不共享资源,每个executor可以独自完成数据的读取和计算。
(这里,我看到一个“木桶短板”原理,我们这边应用场景是抽取各业务系统的数据,那是不是能够把各个业务系统理解为每个节点;但是木桶短板原理,如果出现一个业务系统出现问题,是不是全盘崩溃)
底层的实例是postgresql;实际用的是greenplum (Greenplum是一种基于PostgreSQL的分布式数据库)
MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到的最终的结果。
MPP架构特征:
任务并行执行;
数据分布式存储(本地化)
分布式计算
私有资源:每个节点只能访问自己本地的资源
横向扩展
Shared Nothing架构 (无共享结构)
kafka 是一个分布式流媒体平台:
发布和订阅消息流,这个功能类似于消息队列;
以容错的方式记录消息流,kafka以文件的方式来存储消息流
可以在消息发布的时候进行处理
主要应用场景:
在系统或应用程序之间构建可靠的用于传输实时数据的管道,消息队列功能
构建实时的流数据处理程序来变换或处理数据流,数据处理功能
通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的topic中的消息
消费者是通过与kafka集群简历长连接的方式,不断从集群中拉取消息,然后对消息进行处理;同一个主题下,消费者和生产这的数量并不是对应的,
短连接,是值通讯双方在有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。