• 乐观锁vs悲观锁, 集群vs分布式 , 微服务, 幂等性


    乐观锁:

    总认为不会产生并发问题,因此不会上锁,更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作来实现

    version: 数据上有数据版本号version字段,每次更新version值加一

    CAS操作方式:compare and set, 三个参数,数据所在的内存值,预期值,新值,当需要更新时,判断内存值与之前取到的值是否相等,若相等,用新值更新,否则不断尝试

    悲观锁: 总是假设最坏的情况,每次取数据都认为其他线程会修改,所以都会加锁(读锁,写锁,行锁),当其他线程要访问数据时, 阻塞挂起。

    # --------------------------------------------------------------------------------------------------------------------------------

    集群: 同一个任务部署在多台机器上,提高系统可用性

    分布式: 将不同的业务分部在不同的地方

        分布式的每一个节点,都完成不同的任务,一个节点跨了,该任务就无法访问

    举例: 计算1到100加法

    集群: 每台集群都要完成1 加到 100, 耗时1秒,但可以多台机器同时进行计算,即1秒可以完成多次1 加到 100 这个请求

    分布式: 将 1 到100 拆成 例如10组部署10台机器,每台机器完成一组计算,耗时0.1 秒, 总用时 0.1秒

    总结: 分布式中的每一个节点都可以做集群,而集群不一定是分布式的

    # --------------------------------------------------------------------------------------------------------------------------------

    微服务:
    单体应用: 项目是一个整体,一旦出错,程序奔溃
    微服务: 项目拆成不同的服务,服务和服务之间交互,restful 接口


    幂等性:

    多次请求和一次请求的效果一样,put和patch 是幂等性,post不是
    post 是新增, put and patch 是修改,所以是幂等性

  • 相关阅读:
    .NET平台下,初步认识AutoMapper
    python 二分查找算法
    01背包问题(动态规划)python实现
    NSSM安装服务
    iis .apk .ipa下载设置
    动态规划 转载
    leetcode 5 查找最长的回文子串
    [DEncrypt] MySecurity--安全加密/Base64/文件加密 (转载)
    [DEncrypt] HashEncode--哈希加密帮助类 (转载)
    [DEncrypt] Encrypt--加密/解密/MD5加密 (转载)
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10609877.html
Copyright © 2020-2023  润新知