Centos 7 安装 elasticsearch 8 及添加密码认证
Centos 7 安装 elasticsearch 8 及添加密码认证安装可以使用yum安装或使用压缩包直接启动。为了方便启停,我这里使用了yum安装
1234567891011121314rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchvim /etc/yum.repos.d/es.repo #内容如下cat /etc/yum.repos.d/es.repo[elasticsearch]name=Elasticsearch repository for 8.x packagesbaseurl=https://artifacts.elastic.co/packages/8.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=0autorefresh=1type=rpm-mdsudo yum install --enablerepo=elasticsearch elasticsearch
调整系统配 ...
面试问题记录 五/二 - redis 主从
Redis 主从架构单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发。
redis replication 的核心机制
redis 采用异步方式复制数据到 slave 节点,不过 redis2.8 开始,slave node 会周期性地确认自己每次复制的数据量;
一个 master node 是可以配置多个 slave node 的;
slave node 也可以连接其他的 slave node;
slave node 做复制的时候,不会 block master node 的正常工作;
slave node 在做复制的时候,也不会 block 对自己的查询操作,它会用旧的数据集来提供服务;但是复制完成的时候,需要删除旧数据集,加载新据集,这个时候就会暂停对外服务了;
slave node 主要用来进行横向扩容,做读写分离,扩容的 sla ...
面试问题记录 五/三 - redis 哨兵
Redis 哨兵作用主从复制当master出现故障时,需要手动切换master。哨兵模式就是为了解决手动切换这个问题。Redis2.8中提供了哨兵工具,来实现自动化的系统监控和故障恢复。哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行多个Redis实例。
哨兵通过发送命令,让Redis服务器返回运行状态,包括master和slave。当哨兵(Sentinel)检测到master宕机,会自动将slave切换成master。然后通过发布订阅模式通知其他的slave。让其他slave切换主机。
故障自动切换假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行 failover 过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行 failover 操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。
...
面试问题记录 五/四 - redis 集群
Redis 集群Redis的哨兵模式基本实现了读写分离+高可用。
但是只有1个master的话,存储会有性能的瓶颈。如果要支持更大数据量的缓存,那就横向扩容更多的master节点即可。假如假如1个master节点可以支持存放32GB内存。30台左右差不多就是1个T的内存啦。
Redis Cluster是一种服务器 Sharding 技术,3.0版本开始正式提供。它实现了Redis的分布式存储,也就有说每台Redis节点上存储不同的数据。
集群的数据分片Redis 集群没有使用一致性 hash,而是引入了哈希槽【hash slot】的概念。Hash槽共有16384(2的14次方)个槽,每台服务器分管一部分。假设有三台服务器,第一台服务器负责【0,5460】这个范围,第二台服务器负责【5461,10992】这个范围,第三台服务器负责【10923,16383】这个范围。采用CRC16算法先对key产生一个整数值,再对16384求余数,即CRC16(key)%16384。也就是通过Hash槽分发数据。增加新的服务器需要对key进行迁移,即从一台服务器搬到另一台服务器。
特点
使用Redis c ...
面试问题记录 九 - Kafka
Kafka 是什么Kafka是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由LinkedIn公司开发,使用Scala语言编写,目前是Apache的开源项目。
broker: Kafka服务器,负责消息存储和转发
topic:消息类别,Kafka按照topic来分类消息
partition: topic的分区,一个topic可以包含多个partition, topic 消息保存在各个partition上4. offset:消息在日志中的位置,可以理解是消息在partition上的偏移量,也是代表该消息的唯一序号
Producer:消息生产者
Consumer:消息消费者
Consumer Group:消费者分组,每个Consumer必须属于一个group
Zookeeper:保存着集群 broker、 topic、 partition等meta 数据;另外,还负责broker故障发现, partition leader选举,负载均衡等功能
partition的数据文件partition中的每条Message包含了以下三个属性: offset,MessageSize,data, ...