java总结 -- 6.分布式知识点记录

本文详细阐述了分布式系统的基本概念,包括其工作原理,如何通过分解任务提升系统可用性和并发能力。讨论了分布式系统的优点如高可用性和容错性,以及缺点如网络依赖和维护成本。还介绍了CAP理论和BASE原则,以及分布式事务处理的各种方法,如消息最终一致性、两阶段提交和TCC补偿机制。最后涉及分布式ID生成算法和Redis缓存管理的挑战,如缓存穿透和一致性问题。
摘要由CSDN通过智能技术生成

一、什么叫分布式

        将一个大的功能拆分成多个小的服务,协同完成。分布式解决的是中心化管理的问题,把所有的任务叠加在一个节点上处理,太慢了,压力太大了。分布式主要工作是分解任务,把智能拆解。应用的场景是:单台机器无法满性能的要求,必须融合多个节点,并且节点之间是有交互的。

二、分布式的优缺点

优点

  • 系统可用性提升:传统的集中式存储或者计算是单点故障时,整个服务都无法正常使用。分布式下的服务体系,单台机器有故障,不至于导致整个服务不可用。比如:jc平台下的标准管理服务不能正常写数据,但是不影响检验服务的使用;再比如检验数据无法正常写入数据,不影响查询服务的使用等
  • 系统并发能力提升:分布式的任何一个服务都可以进行水平扩展,通过nginx负载均衡分发到不同的服务器上。
  • 系统容错能力提升:分布式下的统一服务的某节点down掉,不影响该服务的使用
  • 低延迟:网路正常的情况下。提高了运算效率。

缺点

  • 分布式依赖网络:服务间的通讯依赖网络
  • 分布式维护成本高
  • 分布式cap中无法同时满足,智能满足cp或者ap,需要根据实际场景确定

三、分布式理论

CAP:

Consistency 一致性,Availablity 可用性,Partition tolerance 分区容错性,三者无法同时满足

BASE:

Base Available 基本可用,soft state 软状态,Eventually consisten最终一致性,其来源于大型互联网分布式实践的总结,基于cap理论。

分布式事物:

  • 基于mq的消息最终一致性方案:比如:检验业务完成后,会根据检验结果,不合格的数据生产质量异常单数据,在这个过程中数据会出现不一致的情况,项目中使用mq实现消息最终一致性,可靠性有rabbitmq保证,并做补偿机制,消费成功则回退,消费成功则不做处理,确保最终数据一致性。
  • 基于xa协议的两阶段提交:rm,tm;准备和提交阶段。存在性能问题,单点故障问题。
  • xa三段提交:把两端提交的提交阶段分成预提交和提交,预提交阶段设置了超时时间,如果超时未收到提交的请求,自动执行本地提交请求,可用性得到保证,但会出现数据不一致问题。
  • TCC补偿机制:Try、Commit、Cancel三种指令的缩写,逻辑模式类似于xa的两阶段提交。是应用层的一种补偿方式,需要开发写比较多的补充代码,相比于两阶段提交,可用性强,数据一致性差一些。

分布式缓存:(具体redis知识可查看:http://note.youdao.com/noteshare?id=1e8eef0da45349e8f386107f7af8562a&sub=C396722216FA455FB348BACBD54958AA)

    redis:

  • 缓存穿透:查询缓存中不存在的值,绕过缓存,直达db,每次都查不到数据又不会写入缓存,循环往复。解决方案:布隆过滤器,查到缓存中不存在的key,设置默认值,减少请求数据库的次数。
  • 缓存雪崩:热点key大批量过期。解决方案,key的过期时间设置错峰过期。
  • 缓存击穿:访问热点key时,正好过期,直达db。解决方案,设置热点key永不过期;另外的方式,不管缓存是否有数据直接返回,然后采用同步或异步方式查询数据库并更新缓存。

redis与mysql保持数据一致:

缓存延时双删;删除缓存重试机制;canal机制+mq异步删除缓存。

四、分布式id(分布式数据库)

  • uuid:缺点,无序,太长,
  • 数据库自增:缺点,性能差
  • 雪花算法:缺点,时钟回拨问题
  • uidgenerator:AtomicLong的incrementAndGet()方法获得下一秒时间,不依赖机器时钟
  • leaf:延迟等待,不行就抛异

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值