![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式数据库
文章平均质量分 65
最常见的分布式数据库面试题,带你三分钟搞懂,面试再也不虚。
喵呜刷题
来来来,我们一起组队学习!
展开
-
如何缓存与数据库最终一致性
在我们的业务系统中,Redis缓存通常被用在数据库前面,作为数据读取的缓冲,使得I/O 操作不至于直接落在数据库上。以商品详情页为例,假如卖家修改了商品信息,并写回到数据库,但是这时候用户从商品详情页看到的信息还是从缓存中拿到的过时数据,这就出现了缓存系统和数据库系统中的数据不一致的现象。...原创 2022-07-05 16:55:52 · 114 阅读 · 0 评论 -
Elasticsearch对于大数据量(上亿量级)的聚合如何实现?
Elasticsearch 提供的首个近似聚合是cardinality 度量。它提供一个字段的基数,即该字段的distinct或者unique值的数目。它是基于HLL算法的。HLL 会先对我们的输入作哈希运算,然后根据哈希运算的结果中的 bits 做概率估算从而得到基数。其特点是:可配置的精度,用来控制内存的使用(更精确 = 更多内存);小的数据集精度是非常高的;我们可以通过配置参数,来设置去重需要的固定内存使用量。无论数千还是数十亿的唯一值,内存使用量只与你配置的精确度相关。...原创 2022-07-04 11:35:42 · 1086 阅读 · 0 评论 -
在并发情况下,Elasticsearch如果保证读写一致?
可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用层来处理具体的冲突;另外对于写操作,一致性级别支持quorum/one/all,默认为quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,分片将会在一个不同的节点上重建。对于读操作,可以设置replication为sync(默认),这使得操作在主分片和副本分片都完成后才会返回;...原创 2022-07-03 20:44:22 · 395 阅读 · 0 评论 -
说说Elasticsearch搜索的过程
搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch;在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的优先队列。PS:在搜索的时候是会查询Filesystem Cache的,但是有部分数据还在Memory Buffer,所以搜索是近实时的。...原创 2022-07-02 11:19:58 · 230 阅读 · 0 评论 -
说说Elasticsearch索引文档的过程
协调节点默认使用文档ID参与计算(也支持通过routing),以便为路由提供合适的分片。shard = hash(document_id) % (num_of_primary_shards)当分片所在的节点接收到来自协调节点的请求后,会将请求写入到Memory Buffer,然后定时(默认是每隔1秒)写入到Filesystem Cache,这个从Momery Buffer到Filesystem Cache的过程就叫做refresh;...原创 2022-07-01 10:49:44 · 533 阅读 · 0 评论 -
在使用Elasticsearch时GC 方面要注意什么?
倒排词典的索引需要常驻内存,无法GC,需要监控data node上segment memory增长趋势。原创 2022-06-30 13:55:28 · 160 阅读 · 0 评论 -
Elasticsearch是如何实现Master选举的?
Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分;对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是master节点。...原创 2022-06-29 16:46:23 · 1151 阅读 · 0 评论 -
说说Elasticsearch Segment合并
通过每隔一秒的自动刷新机制会创建一个新的segment,用不了多久就会有很多的segment。segment会消耗系统的文件句柄,内存,CPU时钟。最重要的是,每一次请求都会依次检查所有的segment。segment越多,检索就会越慢。...原创 2022-06-28 14:18:12 · 880 阅读 · 0 评论 -
Elasticsearch使用你会注意那些优化?
分析&回答1)GC 方面优化gc,减少gc时间。某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_timeout)。后来发现根本原因是有个节点的系统所在硬盘满了。导致系统性能下降。2)索引方面按着分词效率和业务契合度的分词器。优化segment(段)。3)分片按着自原创 2022-06-27 20:33:47 · 388 阅读 · 0 评论 -
Elasticsearch 数据清洗注意点
分析&回答错开峰值进行清洗,比如晚上搞如果没有其他的写入,可以先修改refresh interval 成-1用type=scan做扫描,然后bulk去update全搞定以后,手工_refresh + _flush再把refresh interval 设置回去,然后 optimize 索引为了大家更加方便的刷题,我们对文章进行了分类和整理,免费为大家提供刷题服务。程序员不欺骗程序员,赶紧扫码小程序刷起来!为了一站式解决面者刷题问题,部分内容可能存在摘录情况,如有侵权辛苦您留言联系原创 2022-06-27 19:19:18 · 182 阅读 · 0 评论 -
Elasticsearch 中 Query与Filter区别
Filter 过滤器过滤器(filter)通常用于过滤文档的范围,比如某个字段是否属于某个类型,或者是属于哪个时间区间原创 2022-06-25 14:46:49 · 656 阅读 · 0 评论 -
说说HBase Region核心切分流程?
HBase将整个切分过程包装成了一个事务,意图能够保证切分事务的原子性。整个分裂事务过程分为三个阶段:prepare – execute – (rollback)整个region切分是一个比较复杂的过程,涉及到父region中HFile文件的切分、两个子region的生成、系统meta元数据的更改等很多子步骤,因此必须保证整个切分过程的事务性,即要么切分完全成功,要么切分完全未开始,在任何情况下也不能出现切分只完成一半的情况。...原创 2022-06-24 11:32:34 · 538 阅读 · 0 评论 -
说说HBase读、写流程
HBase读流程首先,客户端需要获知其想要读取的信息的Region的位置,这个时候,Client访问hbase上数据时并不需要Hmaster参与(HMaster仅仅维护着table和Region的元数据信息,负载很低),只需要访问zookeeper,从meta表获取相应region信息(地址和端口等)。【Client请求ZK获取.META.所在的RegionServer的地址。】客户端会将该保存着RegionServer的位置信息的元数据表.META.进行缓存。...原创 2022-06-23 11:15:40 · 271 阅读 · 0 评论 -
HBase RowKey 的设计原则?
RowKey设计原则唯一原则必须在设计上保证其唯一性。由于在HBase中数据存储是Key-Value形式,若HBase中同一表插入相同Rowkey,则原先的数据会被覆盖掉(如果表的version设置为1的话),所以务必保证Rowkey的唯一性。...原创 2022-06-22 11:23:25 · 1118 阅读 · 2 评论 -
说说Hbase的两层缓存
memstoreblockcache原创 2022-06-21 10:14:18 · 200 阅读 · 0 评论 -
说说HBASE中compact用途是什么,什么时候触发?
在hbase中每当有memstore数据flush到磁盘之后,就形成一个storefile,当storeFile的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。原创 2022-06-20 10:32:29 · 540 阅读 · 0 评论 -
说说Hbase中scan和get的功能以及实现的异同
HBase只提供两种查询方式Get方式 Scan 方式原创 2022-06-19 11:23:22 · 1600 阅读 · 0 评论 -
说说HBase中Scan对象的setCache和setBatch 方法的使用
setCaching设置的值为每次rpc的请求记录数,默认是1;cache大可以优化性能,但是太大了会花费很长的时间进行一次传输。原创 2022-06-17 11:18:03 · 520 阅读 · 0 评论 -
HBase 的特点是什么
HBase是一个分布式的、面向列的开源数据库存储系统,具有高可靠性、高性能和可伸缩性,它可以处理分布在数千台通用服务器上的PB级的海量数据。HBase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型。BigTable的底层是通过GFS来存储数据,而HBase对应的则是通过HDFS(Hadoop分布式文件系统)来存储数据的。...原创 2022-06-16 16:18:33 · 5743 阅读 · 0 评论 -
HBase如何实现模糊查询?
事务数据是带时间属性的,建议将时间信息存入到Rowkey中,这有助于提示查询检索速度。对于事务数据建议缺省就按天为数据建表,这样设计的好处是多方面的。按天分表后,时间信息就可以去掉日期部分只保留小时分钟毫秒,这样4个字节即可搞定。...原创 2022-06-15 10:13:44 · 4184 阅读 · 0 评论 -
如何解决Redis缓存单机热点问题?
1、凭借业务经验预估哪些是热key,其实这个方法还是挺有可行性的。比如某商品在做秒杀,那这个商品的key就可以判断出是热key。缺点很明显,并非所有业务都能预估出哪些key是热key。2、程序统计在客户端进行收集,缺点就是对客户端代码造成入侵。在Redis代理层进行收集,并非所有的redis集群架构都使用proxy。流量上报、日志采集分析,需要额外的系统处理。...原创 2022-06-14 10:34:26 · 449 阅读 · 0 评论 -
说说Redis Cluster 集群化部署?
Redis 集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis 实现,集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset)。Redis 集群中不存在中心(central)节点或者代理(proxy)节点,集群的其中一个主要设计目标是达到线性可扩展性(linear scalability)。...原创 2022-06-13 11:05:12 · 98 阅读 · 0 评论 -
Redis 新版本支持多线程,性能怎么样?
redis是基于内存的,内存的读写速度非常快;redis是单线程的,没有上下文切换以及无锁操作,读速度仍可达到11万次/s,写速度达到8.1万次/s;redis使用多路复用技术,可以处理并发的连接; 说说IO多路复用...原创 2022-06-12 09:51:45 · 1306 阅读 · 0 评论 -
Redis 的高可用有哪些机制?
Redis 的高可用主要依托于主从复制(replication)和 哨兵机制(sentinel)。主从复制(replication)Redis里面只支持一个主,不像Mysql、Nginx主从复制可以多主多从。实现原理:从节点设置了主节点后,通过replication.c#replicationCron方法与master节点建立socket连接,每隔1秒执行一次。连接成功后从节点会创建一个专门处理复制工作的事件处理器,用于命令传播以及接收RDB文件等。...原创 2022-06-11 10:15:18 · 504 阅读 · 0 评论 -
Redis 的持久化有哪些方式?
Redis 持久化的两种方式RDB:RDB 持久化机制,是对 redis 中的数据执行周期性的持久化。AOF:AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集。...原创 2022-06-10 09:33:36 · 3811 阅读 · 0 评论 -
Redis 过期策略都有哪些?
如何设置过期时间?为Key设置过期时间,expire key time(以秒为单位)。定期删除也叫主动删除:redis会定期主动淘汰一批已经过期的key。原创 2022-06-09 21:35:02 · 290 阅读 · 0 评论 -
Redis 有什么数据类型,都在哪些场景下使用?
String 字符串类型 : 在Redis里面采用的是SDS来封装char[]的,SDS结构(free、len、buf),这个也是redis的最小存储单元。String 类型的值最大能存储 512MB。原创 2022-06-08 14:22:24 · 1593 阅读 · 0 评论 -
缓存穿透、击穿、雪崩的理解?如何解决?
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。原创 2022-06-07 12:40:10 · 128 阅读 · 0 评论