• 笔记-分布式系统常见概念


    分布式理论

    01简述CAP理论

    数据一致性(consistency): 如果系统对一个写操作返回成功,则之后的读请求都必须读到这个新的值
    服务可用性(avaliability): 所有读写请求在一定时间内一定能得到响应
    分区容错性(partition-tolerance):在网络分区情况下,被分隔的节点能够正常对外开放
    在分布式的环境中,必须要有p,不然就不叫分布式了
    所以只能选择CP和AP
    因为允许分区容错, 写操作有可能在节点1上成功,节点2失败,这个时候对于client1和client2就可能读取到了不同的值,
    出现了不一致的情况
    如果要保持一直性,则写入必须同时失败,也就是降低了系统的可用性

    简述Base理论

    在CAP的基础上做了妥协
    Base理论降低了发生分区容错时对可用性和一致性的要求
    1.基本可用: 允许可用性降低(可能相应时间变长,可能服务降级)
    2.软状态: 允许系统中的数据存在中间状态,并认为中间状态不会影响系统整体的可用性(支付中等状态)
    3.最终一致性: 节点数据同步可能存在时延,但在一定期限后必须达成一致,变成最终状态

    数据一致性模型有哪些

    强一致性: CAP,插入和更新后所有节点都能同时读到
    弱一致性: 存在不一致性的窗口
    最终一致性: 弱一致性的特例
    因果一致性: 有因果操作的顺序得到保证,A更新完某个数据后通知B,B拿到的值必须是A修改过后的值
    会话一致性: 将数据访问框定在一个会话当中,在同一个会话中,总是能读到最新值 eg: 分布式session一致性问题
    单调读一致性: 当一个值存在多个修改的版本,每次读都只会读到最新的版本
    单调写一致性: 写的顺序控制
    读写一致性: 自己写的值自己读能够一致

    Quorum waro机制


    总共10个副本,一次更新成功3个,然后最少读8个副本的数据,这样就一定能取到最新的数据,取版本号最大的那条数据就是最新的

    一致性paxos算法

    解决多个节点对某个值达成一致的协议,只是一个算法思想


    raft算法



    zab协议

    负载均衡策略有哪些

    集群 分布式 SOA 微服务的概念及区别

    分布式系统的设计目标

    分布式事务有哪些解决方案

    1.多数据源的情况下
    2.两个微服务使用两个数据库


    对比两阶段, 三阶段有哪些改进

    两阶段



    三阶段提交

    三阶段相比二阶段的区别是多了一次探测的操作,确认数据库的环境是否正常



    简述TCC事务模型

    如何理解RPC

    zookeeper

    zk的初始化选举和崩溃选举过程


    简述zk的数据模型


    zk数据同步原理

    zk的watch机制实现原理




    先进先出队列进行处理

    zk分布式锁实现原理

    通过临时节点实现

    zk典型应用场景

    zk中的一个客户端修改了某个节点的数据,其他客户端能马上获取到这个最新数据吗

    如果访问的是从节点,需要先执行sync命令,让从节点先从主节点拉取最新的值, 然后再读取,这样就能读取到最新的值

    zk对事务的支持

    zk中的观察者机制

    zk的会话管理机制


    dubbo

    阿里巴巴开源的rpc框架,是一个远程服务调用的分布式框架
    核心部分:

    dubbo工作流程


    简述dubbo中的spi机制

    jdk中的SPI(服务发现机制): 自动根据接口找到接口的实现类
    eg: jdbc中的class.forName 没有指定实现类,只指定了一个接口,最后也能使用
    jdk中的实现:

    1. 指定一个目录
    2. 在这个目录中放实现类的文件

    为什么dubbo不用jdk的spi,而是自己实现

    dubbo服务暴露过程

    dubbo服务引入过程

    dubbo服务调用过程

    dubbo中zk集群挂掉, 发布者和订阅者还能通信吗

    zk实际如何存储dubbo生产者和消费者信息

    生产者和消费者都注册临时节点,并维持心跳

    dubbo支持的注册中心

    dubbo集群容错策略

    dubbo支持的协议

    dubbo的分层设计

    dubbo和springcloud对比

    redis

    缓存雪崩


    互斥锁的意思是,查询数据库的时候只允许一个key查db,查询到马上更新缓存,其他线程唤醒后直接读缓存

    缓存穿透

    缓存击穿

    分布式系统常见缓存方案


    常见缓存淘汰算法

    如何保证数据库和缓存一致性

    ***


    服务降级 服务熔断


    redis持久化机制

    rdb

    bgsave命令用到了写时复制技术,保证是某一时间节点的备份数据,在持久化过程中不影响读写功能
    aof

    redis单线程为什么这么快

    为了减少线程上下文切换的消耗
    为什么java要使用多线程? 因为java中的线程操作时间长,cpu切换的时间
    相对线程消耗的时间来说也是划算的

    redis主从同步机制



    分布式缓存寻址算法

    redis高可用方案

    redis事务



    redis数据结构: 一般是说5种

    数据库实现分布式锁

    redis分布式锁的实现

    消息队列优缺点,使用场景

    如何保证消息没有被重复消费

    redis高可用集群模式

    启动的时候,将16384个节点均匀分布到不同的节点上

    kafka activemq rabbitmq rocketmq 对比

    rabbitmq

    rabbitmq架构设计


    vhost: 可以实现应用隔离

    rabbitmq交换机类型

    rabbitmq可以直连队列吗

    可以,但是正常情况下不会这样做

    rabbitmq持久化机制

    rabbitmq事务消息机制

    发送端: 准备多一个队列,当commit后将该队列的内容移到有消费者连接的那一个队列
    消费端: commit就删除队列的数据,否则不删除队列的数据

    rabbitmq如何保证消息可靠性传输

    不用事务,因为溪能比较差

    rabbit 死信队列,延迟队列原理


    rabbitmq的普通集群模式


    只有元数据才是同步的,数据是分布在每个节点上

    rabbitmq的镜像队列原理

    kafka

    kafka架构设计

    kafka性能高的原因

    kafka副本同步机制


    kafka消息高可靠解决方案

    kafka的rebalance机制

    rebalance发生时读写会停止

    rocketmq

    rocketmq架构设计

    rocketmq事务消息原理



    rocketmq怎样实现顺序消息

    rocketmq持久化机制


    rocketmq广播消息

    延迟消息

    事务消息

    ACL

    rocketmq高效三大利器

    1.顺序存
    2.零拷贝
    3.异步刷盘

  • 相关阅读:
    提高samba的传输速度[转载]
    centos安装samba,与其它OS共享文件[转载]
    解决*unix系统下Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    java在windows cmd中乱码
    mysql 主从复制配置
    mysql 开启binlog
    关于mysql varchar类型的长度
    MyISAM的表锁
    html页面跳转不保存上个页面的记录
    golang 下载所有依赖
  • 原文地址:https://www.cnblogs.com/Baronboy/p/14571331.html
Copyright © 2020-2023  润新知