乐观锁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 是修改,所以是幂等性
乐观锁vs悲观锁, 集群vs分布式 , 微服务, 幂等性的更多相关文章
- k8s 集群管理和微服务 适合做啥
k8s 集群管理和微服务 适合做啥 都知道k8s是集群 适合微服务 有很多教程 但你可以先了解他能干啥 traefix 是负载均衡工具 k8s 适合部署无状态依赖的微服务 可以按需求开启多个微服务 管 ...
- 如何使用Istio 1.6管理多集群中的微服务?
假如你正在一家典型的企业里工作,需要与多个团队一起工作,并为客户提供一个独立的软件,组成一个应用程序.你的团队遵循微服务架构,并拥有由多个Kubernetes集群组成的广泛基础设施. 由于微服务分布在 ...
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...
- Java高可用集群架构与微服务架构简单分析
序 可能大部分读者都在想,为什么在这以 dubbo.spring cloud 为代表的微服务时代,我要还要整理这种已经"过时"高可用集群架构? 本人工作上大部分团队都是7-15人编 ...
- 8分钟学会Consul集群搭建及微服务概念
Consul介绍: Consul 是由 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...
- 在Kubernetes集群里安装微服务DevOps平台fabric8
转载于https://blog.csdn.net/wzp1986/article/details/72128063?utm_source=itdadao&utm_medium=referral ...
- 单体->集群->模块化->分布式微服务
开头语: 每篇一段开头语,在技术的道路中寻找文采的乐趣.(如果随笔中都是大白话勿喷,兄弟姐妹们) 单体项目 单体项目适用于小型开发,或自己来进行小项目的测试和使用. 单体项目的缺憾 多人开发项目所出现 ...
- mysql的锁--行锁,表锁,乐观锁,悲观锁
一 引言--为什么mysql提供了锁 最近看到了mysql有行锁和表锁两个概念,越想越疑惑.为什么mysql要提供锁机制,而且这种机制不是一个摆设,还有很多人在用.在现代数据库里几乎有事务机制,aci ...
- web开发中的两把锁之数据库锁:(高并发--乐观锁、悲观锁)
这篇文章讲了 1.同步异步概念(消去很多疑惑),同步就是一件事一件事的做:sychronized就是保证线程一个一个的执行. 2.我们需要明白,锁机制有两个层面,一种是代码层次上的,如Java中的同步 ...
- Python知识之 方法与函数、偏函数、轮询和长轮询、流量削峰、乐观锁与悲观锁
方法与函数 函数需要手动传参self.cls,方法自动传,比如对象方法自动传self,类方法自动传cls,而函数相对而言需要手动传,比如静态绑定的函数,self是需要手动传值得,比如我们平常使用的函数 ...
随机推荐
- vivo Xplay 5的Usb调试模式在哪里,打开vivo Xplay 5Usb调试模式的经验
在我们使用安卓手机链接PC的时候,如果手机没有开启Usb调试模式,PC则无办法成功检测到我们的手机,部分app也无办法正常使用,因此我们需要找处理方法将手机的Usb调试模式开启,如下内容我们介绍viv ...
- Comparing Spring AOP and AspectJ
AOP 概念 在我们开始之前 , 让我们做一个快速.高级别审查的核心术语和概念 : 方面 — —标准 / 特征代码被分散在多个场所中的应用 , 通常不同于实际的业务逻辑 (例如 , 交易管理) .各方 ...
- get 和 post 请求的区别,一个不错的链接
https://www.cnblogs.com/logsharing/p/8448446.html
- React Native之遇到的问题
问题一:使用 Android Studio 运行 React Native 新项目时,报错:Unable to load script from assets 'index.android.bundl ...
- flutter -webview 报错 err_cleartext_not_permitted
文件 android\app\src\main\AndroidManifest.xml <manifest xmlns:android="http://schemas.android. ...
- Insert 导致死锁的两种情况
官档原文,懒得翻译了 https://dev.mysql.com/doc/refman/5.7/en/innodb-locks-set.html INSERT sets an exclusive lo ...
- EECS 649 Introduction to Artificial Intelligence
EECS 649 Introduction to Artificial IntelligenceExamElectronic Blackboard Submission Due: April 24, ...
- 20175307《Java程序设计》第5周学习总结
教材内容总结 6.1 接口 1接口声明 接口使用关键字interface来进行声明 eg:interface 接口的名字 2接口体 接口体中包含常量的声明和抽象方法两部分(没有变量) 注意一定的要 ...
- Mysql 5.7--ubuntu18.04 安装过程及遇到的问题
Mysql 5.7安装过程 1. 下载mysql的apt-config文件 a. https://dev.mysql.com/downloads/file/?id=477124 b. 点击downlo ...
- git checkout --ours 【学习笔记】
用新分支:git checkout --theirs 文件用master分支:git checkout --ours 文件 执行之后git add