• 单点故障和分布式锁


    单点故障和分布式锁

    单点故障:由于一个服务故障或阻塞导致后面的服务都不可用,致使整个系统陷入瘫痪
    分布式锁:分布式锁是解决单点故障的一种方式,zookeeper既是其中之一被称为分布式协调技术

    为什么要使用分布式锁:

    因为在分布式应用中,存在多组服务即进程访问同一块数据的问题,比如,网上商城同时3个人下订单分别购买一个商品,而商品的数量为2,此时因为是3个独立的服务,彼此之间共享数据,那么就会出现数据不一致的问题。虽然单机环境即Java中提供了并发处理的API,即单进程多线程的并发处理,而分布式系统是多进程多线程,所以原有的单机部署的并发策略就会失效,为了解决这个问题,此时就需要一种跨JVM的互斥机制来控制共享资源的访问。
    

    分布式锁应该具备的条件:

    - 1.在分布式环境中,一个方法同一时间只能被一个机器的一个线程执行
    - 2.高可用的获取与释放锁,即任何时候都能获取与释放锁,即分布式锁的解决方案本身(zookeeper)要高可用
    - 3.高性能的获取与释放锁,任何时候请求与释放锁都能被快速响应
    - 4.具备可重入特性,即多任务并发而不必担心数据错误
    - 5.具备锁失效机制,防止死锁的发生
    - 6.具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败,不能拿不到锁就陷入阻塞一直等待
    

    解决方案:zookeeper

    zookeeper:一个为分布式应用提供一致性服务的开源组件,

    本博客为Swagger-Ranger的笔记分享,文章会持续更新
    文中源码地址: https://github.com/Swagger-Ranger
    欢迎交流指正,如有侵权请联系作者确认删除: liufei32@outlook.com

  • 相关阅读:
    null和undefined的区别
    【面试】前端面试题总结一(css)
    【js基础类】火狐的滚动事件
    【Vue】provide和inject
    React学习:react-router-dom-主要组件
    React学习:组合VS继承
    React学习:状态提升
    React学习:form表单
    unity+ARKit 捕捉表情录制动画 表情动画与人形骨骼动画融合
    Unity导入模型材质球无法编辑属性解决方法
  • 原文地址:https://www.cnblogs.com/Swagger-Ranger/p/10671323.html
Copyright © 2020-2023  润新知