自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 收藏
  • 关注

原创 面向对象思想写好并发程序

面向对象思想写好并发程序前言一、封装共享变量二、识别共享变量间的约束条件三、制定并发访问策略总结前言在工作中很多时候在设计之初都是直接按照单线程的思路来写程序的,而忽略了本应该重视的并发问题;等上线后的某天,突然发现诡异的 Bug,再历经千辛万苦终于定位到问题所在,却发现对于如何解决已经没有了思路。面向对象思想与并发编程本来是没关系的,它们分属两个不同的领域,但是在 Java 语言里,这两个领域被融合在一起了,融合的效果还是不错的:在 Java 语言里,面向对象思想能够让并发编程变得更简单。用面

2022-01-09 23:10:09 27617

原创 局部变量是线程安全

局部变量是线程安全前言方法是如何被执行的局部变量存哪里?调用栈与线程线程封闭总结前言多个线程同时访问共享变量的时候,会导致并发问题。那在 Java 语言里,是不是所有变量都是共享变量呢?比如,下面代码里的 fibonacci() 这个方法,会根据传入的参数 n ,返回 1 到 n 的斐波那契数列,斐波那契数列类似这样: 1、1、2、3、5、8、13、21、34……第 1 项和第 2 项是 1,从第 3 项开始,每一项都等于前两项之和。在这个方法里面,有个局部变量:数组 r 用来保存数列的结果,每次

2022-01-09 22:33:13 27125

原创 创建多少线程才是合适的

创建多少线程才是合适的前言为什么要使用多线程?多线程的应用场景创建多少线程合适?总结前言在 Java 领域,实现并发程序的主要手段就是多线程,使用多线程还是比较简单的,但是使用多少个线程却是个困难的问题。工作中,经常有人问,“各种线程池的线程数量调整成多少是合适的?”或者“Tomcat 的线程数、Jdbc 连接池的连接数是多少?”等等。那我们应该如何设置合适的线程数呢?要解决这个问题,首先要分析以下两个问题:为什么要使用多线程?多线程的应用场景有哪些?为什么要使用多线程?使用多线程,本

2022-01-04 23:17:36 28542

原创 Java线程的生命周期

Java线程的生命周期前言通用的线程生命周期Java 中线程的生命周期1.RUNNABLE 与 BLOCKED 的状态转换2.RUNNABLE 与 WAITING 的状态转换3.RUNNABLE 与 TIMED_WAITING 的状态转换4.从 NEW 到 RUNNABLE 状态5. 从 RUNNABLE 到 TERMINATED 状态总结前言在 Java 领域,实现并发程序的主要手段就是多线程。线程是操作系统里的一个概念,虽然各种不同的开发语言如 Java、C# 等都对其进行了封装,但是万变不离操

2022-01-04 22:44:53 27709 1

原创 安全性、活跃性以及性能问题

安全性、活跃性以及性能问题前言安全性问题活跃性问题性能问题总结前言通过前面六篇文章,我们开启了一个简单的并发旅程,相信现在你对并发编程需要注意的问题已经有了更深入的理解,这是一个很大的进步,正所谓只有发现问题,才能解决问题。但是前面六篇文章的知识点可能还是有点分散,所以是时候将其总结一下了。并发编程中我们需要注意的问题有很多,很庆幸前人已经帮我们总结过了,主要有三个方面,分别是:安全性问题、活跃性问题和性能问题。下面我就来一一介绍这些问题。安全性问题相信你一定听说过类似这样的描述:这个方法不是

2022-01-03 23:16:33 27185

原创 用“等待-通知”机制优化循环等待

用“等待-通知”机制优化循环等待前言完美的就医流程用 synchronized 实现等待 - 通知机制小试牛刀:一个更好地资源分配器尽量使用 notifyAll()总结前言在破坏占用且等待条件的时候,如果转出账本和转入账本不满足同时在文件架上这个条件,就用死循环的方式来循环等待,核心代码如下:/ 一次性申请转出账户和转入账户,直到成功while(!actr.apply(this, target)) ;如果 apply() 操作耗时非常短,而且并发冲突量也不大时,这个方案还挺不错的,因为这

2022-01-03 23:11:00 26871

原创 解决并发时的死锁问题

解决并发时的死锁问题前言向现实世界要答案没有免费的午餐如何预防死锁1. 破坏占用且等待条件2. 破坏不可抢占条件3. 破坏循环等待条件总结前言用 Account.class 作为互斥锁,解决银行业务里面的转账问题,虽然这个方案不存在并发问题,但是所有账户的转账操作都是串行的,例如账户 A 转账户 B、账户 C 转账户 D 这两个转账操作现实世界里是可以并行的,但是在这个方案里却被串行化了,性能太差。试想互联网支付盛行的当下,8 亿网民每人每天一笔交易,每天就是 8 亿笔交易;每笔交易都对应着一次转

2021-12-31 23:34:50 29845

原创 一把互斥锁保护多个资源

一把互斥锁保护多个资源前言保护没有关联关系的多个资源保护有关联关系的多个资源使用锁的正确姿势总结前言在上一篇文章中,我们提到受保护资源和锁之间合理的关联关系应该是 N:1 的关系,也就是说可以用一把锁来保护多个资源,但是不能用多把锁来保护一个资源,并且结合文中示例,我们也重点强调了“不能用多把锁来保护一个资源”这个问题。而至于如何保护多个资源,我们今天就来聊聊。当我们要保护多个资源时,首先要区分这些资源是否存在关联关系。保护没有关联关系的多个资源在现实世界里,球场的座位和电影院的座位就是没有关

2021-12-31 23:26:30 21165

原创 互斥锁解决并发原子性问题

互斥锁解决原子性问题前言简易锁模型改进后的锁模型Java 语言提供的锁技术:synchronized用 synchronized 解决 count+=1 问题锁和受保护资源的关系总结前言一个或者多个操作在 CPU 执行的过程中不被中断的特性,称为“原子性”。理解这个特性有助于分析并发编程 Bug 出现的原因,例如利用它可以分析出 long 型变量在 32 位机器上读写可能出现的诡异 Bug,明明已经把变量成功写入内存,重新读出来却不是自己写入的。原子性问题的源头是线程切换,如果能够禁用线程切换就能

2021-12-30 22:54:00 22670

原创 管程模型解决并发编程

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档管程模型解决并发编程前言什么是管程MESA 模型wait() 的正确姿势notify() 何时可以使用总结前言管程技术可以很方便地解决并发问题。Java 语言在 1.5 之前,提供的唯一的并发原语就是管程,而且 1.5 之后提供的 SDK 并发包,也是以管程技术为基础的。除此之外,C/C++、C# 等高级语言也都支持管程。管程就是一把解决并发问题的万能钥匙。什么是管程为什么 Java 在 1.5 之前仅仅提供了 synchroni

2021-12-30 22:32:08 22472

原创 Java 内存模型解决可见性和有序性导致的并发问题

Java 内存模型解决可见性和有序性导致的并发问题前言什么是 Java 内存模型?使用 volatile 的困惑Happens-Before 规则1. 程序的顺序性规则2. volatile 变量规则3. 传递性4. 管程中锁的规则5. 线程 start() 规则6. 线程 join() 规则7. 被忽视的 final总结前言在并发场景中,因可见性、原子性、有序性导致的问题常常会违背我们的直觉,从而成为并发编程的 Bug 之源。这三者在编程领域属于共性问题,所有的编程语言都会遇到,Java 在诞生之

2021-12-29 23:23:50 23257

原创 Java并发编程:可见性、原子性和有序性问题

文章目录前言并发程序幕后的故事源头之一:缓存导致的可见性问题源头之二:线程切换带来的原子性问题源头之三:编译优化带来的有序性问题前言如果你细心观察的话,你会发现,不管是哪一门编程语言,并发类的知识都是在高级篇里。换句话说,这块知识点其实对于程序员来说,是比较进阶的知识。我自己这么多年学习过来,也确实觉得并发是比较难的,因为它会涉及到很多的底层知识,比如若你对操作系统相关的知识一无所知的话,那去理解一些原理就会费些力气。这是我们整个专栏的第一篇文章,我说这些话的意思是如果你在中间遇到自己没想通的问题,

2021-12-29 22:43:27 28454

原创 串联分布式核心技术

串联分布式核心技术前言铁路局发布火车票用户查询火车票用户购买火车票总结前言先以购买火车票的流程,串联分布式核心技术。购买火车票的流程三大核心步骤:铁路局向购票系统发布火车票;用户通过系统查询火车票,找到需要的火车票后购买;购票系统给用户响应,完成购票。这个流程看似简单,但涉及了很多知识。铁路局发布火车票铁路局发布火车票的过程,主要涉及分布式数据存储的知识,包括存储系统三要素、 数据分布和数据复制等技术。铁路局向购票系统发布火车票的过程,主要是将火车票信息发送到服务器集群进行存储,

2021-12-28 21:41:02 31901

原创 分布式集群中网络分区问题

分布式集群中网络分区问题前言如何判断是否发生了网络分区?集中式架构的网络分区形态非集中式架构中的网络分区形态网络分区最微妙的地方在哪里?网络分区出现概率较高的场景是什么?网络分区有哪些常见的处理方法?方法一:通过 Static Quorum 处理网络分区方法二:通过 Keep Majority 处理网络分区方法三:通过设置仲裁机制处理网络分区方法四:基于共享资源的方式处理网络分区总结前言网络分区就是其中的一种故障类型。通常情况下,网络分区指的是在分布式集群中,节点之间由于网络不通,导致集群中节点形

2021-12-28 20:52:05 34974 1

原创 分布式高可用:故障恢复

分布式高可用:故障恢复前言故障类型故障检测故障恢复分布式故障检测原理故障恢复策略知识扩展:固定心跳检测和基于历史心跳信息预测故障的策略,各有什么特点呢?总结前言故障隔离的目的是对故障组件进行隔离,以避免其影响系统中的其他组件,尽可能保证分布式系统的可用性。在分布式系统中,故障在所难免,发生故障后仅仅进行隔离还远远不够,还需要进行故障恢复。比如,现在集群中有 3 个节点,节点 1 故障后,对节点 1 进行隔离,如果节点 2、节点 3 紧接着故障了,又隔离了这两个节点。整个集群就无法继续提供服务了。

2021-12-27 21:56:42 29855

原创 分布式高可用:故障隔离

分布式高可用:故障隔离前言什么是故障隔离?分布式故障隔离策略线程级隔离进程级隔离资源隔离故障隔离策略综合对比知识扩展:从用户角度看,有哪些常用的故障隔离方案?总结前言分布式系统高可靠技术,包括分布式负载均衡和流量控制。除了高可靠,在实际生产中,分布式系统的高可用也极其重要。比如,在双十一的抢购高峰期,如果分布式系统不能满足高可用的特性,那么当大量用户同时抢购时就可能导致系统崩溃,无法提供服务,导致大量用户流失。故障隔离和恢复机制这两项关键技术,保证分布式系统的高可用。什么是故障隔离?故障隔离

2021-12-27 21:14:00 32404

原创 分布式高可靠:流量控制

分布式高可靠:流量控制前言什么是流量控制?分布式系统流量控制策略漏桶策略令牌桶策略两种策略对比Sentinel 流量控制工作原理知识扩展:什么是拥塞控制?它与流量控制的区别是什么?总结前言分布式高可靠中的负载均衡的核心在于,将用户请求均匀分配到多个处理服务器处理,以解决单个服务器的单点瓶颈问题。但如果用户请 求数非常多的话,即便实现了负载均衡,服务器能力达到上限,还是无法处理所有的用户请求。比如,类似双十一、双十二的秒杀场景,用户流量突增时,即使做了负载均衡,仍然会感受到点击抢购时,需要等待较长的

2021-12-27 00:09:28 32423

原创 分布式高可靠:负载均衡

分布式高可靠:负载均衡前言什么是负载均衡?服务请求的负载均衡方法轮询策略顺序轮询加权轮询随机策略哈希和一致性哈希策略对比分析知识扩展:如果要考虑请求所需资源不同的话,应该如何设计负载均衡策略呢?总结前言分布式可靠性相关的知识,包括负载均衡、 流量控制、故障隔离和故障恢复。 负载均衡是分布式可靠性中非常关键的一个问题或技术,在一定程度上反映了分布式系统对业务处理的能力。比如,早期的电商抢购活动,当流量过大时,可能就会发现有些地区可以购买,而有些地区因为服务崩溃而不能抢购。这其实就是系统的负载均衡出现了

2021-12-26 22:49:05 33683

原创 分布式数据:缓存技术

分布式数据:缓存技术前言什么是分布式缓存?Redis 分布缓存原理Memcached 分布式缓存原理对比分析知识扩展:除了分布式存储中的缓存,还有计算机体系结构和网络中的缓存, 它们又分别是什么呢?总结前言分布式存储中“货架”的关键技术——缓存技术。 在计算机领域的各个方面,缓存都非常重要,是提升访问性能的一个重要技术。从单个计算机的体系结构来看,内存和处理器速度差异很大,如果不采用缓存技术,处理器的性能会受到很大的限制。 计算机应用如果不采用缓存技术,对于每个请求,应用都要与后台数据库做一次交互

2021-12-26 20:12:56 30029

原创 分布式数据复制技术

分布式数据复制技术前言什么是数据复制技术?数据复制技术原理及应用同步复制技术原理及应用异步复制技术原理及应用半同步复制技术原理及应用三种数据复制技术对比知识扩展:在半同步复制技术中,对于未回复数据更新结果的节点,如何解决数据不一致或冲突呢?总结前言数据分布(也称数据分片)技术,主要用于构建数据索引, 是实现“导购”功能的关键技术。数据分布的本质是,将原数据集划分为多个数据子集,以存储到不同的地方,在一定程度上体现了数据的可用性和可靠性(一个存储节点故障,只影响该存储节点的数据)。数据分片和数据复制

2021-12-26 19:28:04 29683

原创 数据分布方式:哈希与一致性哈希

数据分布方式:哈希与一致性哈希前言数据分布设计原则数据分布方法哈希一致性哈希带有限负载的一致性哈希带虚拟节点的一致性哈希四种数据分布方法对比知识扩展:数据分片和数据分区,有何区别?总结前言分布式存储系统的三个要素:顾客、导购和货架。导购实现了分布式数据存储系统中数据索引的功能,包括存储数据时确定存储位置,以及获取数据时确定数据所在位置。在分布式系统中,实现数据索引或数据分布常用的方法是哈希和一致性哈希。数据分布设计原则数据分布主要是数据分片。数据分片技术解决了确定数据位置的问题,可以按照数据特

2021-12-26 15:32:28 29186

原创 分布式数据存储系统:三要素

分布式数据存储系统:三要素前言什么是分布式数据存储系统?分布式数据存储系统三要素顾客:生产和消费数据导购:确定数据位置货架:存储数据知识扩展:业界主流的分布式数据存储系统有哪些?总结前言CAP 理论指出,在分布式系统中,不能同时满足一致性、可用性和分区容错性,指导了分布式数据存储系统的设计。随着数据量和访问量的增加,单机性能已经不能满足用户需求,分布式集群存储成为一种常用方式。把数据分布在多台存储节点上,可以为大规模应用提供大容量、高性能、高可用、 高扩展的存储服务。而分布式存储系统就是其具体实现

2021-12-26 14:19:41 29901

原创 分布式数据存储系统:CAP理论

分布式数据存储:CAP理论前言什么是 CAP?CAP 选择策略及应用保 CA 弃 P保 CP 弃 A保 AP 弃 C对比分析知识扩展:CAP 和 ACID 的“C”“A”是一样的吗?总结前言分布式系统处理的关键对象是数据,而数据其实是与用户息息相关的。CAP 理论指导分布式系统的设计,以保证系统的可用性、数据一致性等特征。比如电商系统中, 保证用户可查询商品数据、保证不同地区访问不同服务器查询的数据是一致的等。什么是 CAP?假设某电商,在北京、杭州、上海三个城市建立了仓库,同时建立了对应的服务

2021-12-26 13:26:02 28820

原创 分布式体系架构与分布式计算相关问题

分布式体系架构相关问题分布式体系结构集中式架构中,Master 如何判断 Slave 是否存活呢?Slave 故障的两类情况:Slave 进程退出;Slave 所在服务器宕机或重启了。如下图所示,假设 Master 节点与 3 个 Slave 节点相连。Master 与 Slave 之间画了两条线,实线旁写的是 TCP 长连接,虚线旁写的是心跳。因为 Master 与 Slave 之间的监控关系是固定的,因此用两种机制协同来判断 Slave 是否存活。Slave 进程的退出:TCP 长连接

2021-12-26 11:45:47 29262

原创 分布式通信:消息队列

分布式通信:消息队列前言什么是消息队列?消息队列工作原理RocketMQ 消息队列原理及工作机制知识扩展:发布订阅和消息队列模式都支持系统解耦,两者是否一致呢?总结前言发布订阅是发布者产生数据到消息中心,订阅者订阅自己感兴趣的消息,消息中心根据订阅者的订阅情况, 将相关消息或数据发送给对应的订阅者。在实际使用场景中,还有一种常用的通信方式,是将消息或数据放到一个队列里,谁需要谁就去队列里面取。在分布式领域中,这种模式叫“消息队列”。什么是消息队列?电子论文订阅的例子中,出版社或会议方将论文发布

2021-12-26 00:45:13 29984

原创 分布式通信:发布订阅

分布式通信:发布订阅前言什么是发布订阅?发布订阅的基本工作原理点对点模式发布订阅模式。Kafka 发布订阅原理及工作机制分区和消费组的原理和作用BrokerConsumer发布订阅实践应用知识扩展:观察者模式和发布订阅模式的区别是什么?总结前言分布式通信中的远程调用的核心是在网络服务层封装了通信协议、序列化、传输等操作,让用户调用远程服务如同进行本地调用一样。 通过网络服务层的封装实现了不同机器上不同进程之间的直接通信,因为是直接通信,所以通过线程阻塞的方式实现同步调用比较容易,因此通常被用于同步调

2021-12-26 00:00:39 30363

原创 分布式通信:远程调用

分布式通信:远程调用前言什么是远程调用?远程调用的原理及应用RPC 的原理及应用RMI 的原理及应用RPC 与 RMI 对比分析知识扩展:远程过程调用存在同步和异步吗?总结前言分布式的本质就是多进程协作,共同完成任务。要协作自然免不了通信。分布式通信技术模块中分布式通信中的远程调用。什么是远程调用?以电商购物平台为例,每一笔交易都涉及订单系统、支付系统及库存系统,假设三个系统分别部署在三台机器 A、B、C 中独立运行,订单交易流程如下所示:用户下单时,调用本地(机器 A)的订单系统进行下单;

2021-12-25 13:22:00 30086

原创 分布式计算模式:流水线

分布式计算模式:流水线前言什么是流水线模式?流水线计算模式流水线计算模式的原理实践: 构建机器学习流水线知识扩展:流水线模式和 MapReduce 模式中,都有将大任务拆分为多个子任务,两者的区别是什么?总结前言在现实生活中,经常出现这样的情况,前一个任务的结果是另外一个任务的输入。比如工厂生产一瓶饮料,首先需要往瓶子里装上饮料,待饮料装满后,再封口。如果装饮料和封口分别为子任务,那么前一个任务(装饮料)结束后才可以开始第二个任务(封口)。类似这样的作业,就是流水线作业。在分布式领域中解决类似具有

2021-12-25 12:06:50 30018

原创 分布式计算模式:Actor

分布式计算模式:Actor前言什么是 Actor?Actor 计算模式Actor 工作原理Actor 关键特征Actor 模型的应用知识扩展:Akka 中 Actor 之间的通信可靠性是通过 Akka 集群来保证的,那么 Akka 集群是如何检测节点故障的呢?总结前言MapReduce 和 Stream 虽然这两种计算模式对数据的处理方式不同,但都是以特定数据类型(分别对应静态数据和动态数据)作为计算维度。从计算过程或处理过程的维度,有两种分布式计算模式,Actor 和流水线。分布式计算的本质就是

2021-12-24 23:50:10 29207

原创 分布式计算模式:Stream

分布式计算模式:Stream前言什么是 Stream?Stream 工作原理Storm 的工作原理知识扩展:流计算和批量计算的区别是什么?总结前言分布式计算模式中的 MapReduce 模式的核心思想是,将大任务拆分成多个小任务,针对这些小任务分别计算后,再合并各小任务的结果 以得到大任务的计算结果。这种模式下任务运行完成之后,整个任务进程就结束了,属于短任务模式。但任务进程的启动和停止是一件很耗时的事儿,因此 MapReduce 对处理实时性的任务就不太合适了。实时性任务主要是针对流数据的处理

2021-12-24 21:14:24 29282

原创 分布式计算模式:MapReduce

分布式计算模式:MapReduce前言什么是分而治之?分治法的原理抽象模型MapReduce 工作原理MapReduce 实践应用知识扩展:Fork-Join 计算模式是什么意思呢?总结前言两层调度时提到,Mesos 的第二层调度是由 Framework 完成的。这里的 Framework 通常就是计算框架,比如 Hadoop、Spark 等。用户基于这些计算框架,可以完成不同类型和规模的计算。Hadoop 这个框架主要用于解决海量数据的计算问题。海量数据分成多个进程,每个进程计算一部分,然后汇总

2021-12-23 22:38:32 31062

原创 分布式事务与分布式锁相关问题

分布式事务的相关问题2PC 和 3PC 的第一步到底是不是“类似”的?2PC 的第一步投票(voting)阶段中,参与者收到事务执行询问请求时,就执行事务但不提交;而 3PC 却写着在 PreCommit 阶段执行事务不提交。2PC 和 3PC 的第一步,说它们类似,是指它们均是通过协调者,来询问参与者是否可以正常执行事务操作,参与者也都会给协调者回复。在 2PC 中,如果所有参与者都返回结果后,会进入第二阶段,也就是提交阶段,也可以说是执行阶段,根据第一阶段的投票结果,进行提交或取消。在

2021-12-23 21:39:15 29632

原创 分布式调度架构:共享状态调度

分布式调度架构:共享状态调度前言什么是共享状态调度?共享状态调度设计Omega 调度架构Omega 共享调度工作原理知识扩展:单体调度、两层调度和共享调度的区别是什么?总结前言在两层调度架构中,第二层调度只知道集群中的部分资源,无法进行全局最优调度。是否有办法解决全局最优调度的问题呢?解决办法是共享状态调度。什么是共享状态调度?集群中需要管理的对象主要包括两种:资源的分配和使用状态;任务的调度和执行状态;在单体调度中,这两种对象都是由单体调度器管理的,因此可以比较容易地保证全局状态的

2021-12-22 22:57:05 29593

原创 分布式调度架构:两层调度

分布式调度架构:两层调度前言什么是两层调度?两层调度设计两层调度架构资源分配算法最大最小公平算法主导资源公平算法。对比这两种调度算法知识扩展:两层调度如何保证不同的业务不会互相干扰?总结前言单体调度的核心是,所有节点的资源以及用户的任务均由中央服务器统一管理和调度。因此,中央服务器很容易成为单点瓶颈,会直接导致其支持的调度规模和服务类型受限。于是两层调度就出现了什么是两层调度?在单体调度架构中,中央服务器的单点瓶颈问题,会限制调度的效率和支持的任务类型。中央服务器的性能会限制调度的效率很好理解

2021-12-22 22:07:20 29933

原创 分布式调度架构:单体调度

分布式调度架构:单体调度 前言什么是单体调度?单体调度设计Borg 调度设计Borg 调度算法知识扩展:多个集群 / 数据中心如何实现单体调度呢?总结前言通过云资源管理的集中式架构和非集中式架构,可以看出分布式系统架构的目的是,将多个服务器资源管理起来,寻找合适的服务器去执行用户任务。衡量一个服务器是否合适会涉及很多条件或约束,比如在一些场景下,任务存在优先级,需要执行多个任务的时候,通常需要满足优先级高的任务优先执行的条件。但在这些条件中,服务器资源能够满足用户任务对资源的诉求是必须的。

2021-12-21 23:32:12 23287

原创 分布式体系结构:非集中式结构

分布式体系结构:非集中式结构前言什么是非集中式结构?Akka 集群Redis 集群Cassandra 集群对比分析知识扩展:如何优化 Gossip 协议中的重复消息问题?总结前言虽然很多云上的管理都采用了集中式结构,但是这种结构对中心服务器性能要求很高,而且存在单点瓶颈和单点故障问题。为了解决这个问题,分布式领域中又出现了非集中式结构,也叫作分布式结构。什么是非集中式结构?在非集中式结构中,服务的执行和数据的存储被分散到不同的服务器集群,服务器集群间通过消息传递进行通信和协调。在非集中式结构

2021-12-21 21:52:23 22960

原创 分布式体系结构:集中式结构

分布式体系结构:集中式结构前言什么是集中式结构?经典集中式结构Google BorgKubernetesMesos分析对比知识扩展:Mesos 是如何支持容器部署的?总结前言云上的资源丰富,可以尽可能地把更多的服务器组织起来,作为一个统一的资源,为多个用户提供服务。而如何组织,就是分布式体系结构的范畴了。很多场景下,请求都会汇总到一台服务器上,由这台服务器统一协调请求和其他服务器之间的关系。这种由一台服务器统一管理其他服务器的方式,就是分布式体系结构中的集中式结构(也称为 Master/Slave

2021-12-21 17:45:45 29997

原创 分布式技术引爆人工智能

分布式技术引爆人工智能前言什么是人工智能?数据处理分布式模型训练什么是分布式模型训练?数据分布式训练模型分布式训练混合模型训练总结前言以人工智能技术为例,了解分布式技术的应用及其重要性。什么是人工智能?2016 年 3 月,Google AlphaGo 与围棋世界冠军李世石进行围棋人机大战,以 4 比 1 的总分获胜。至此,人工智能技术被推向了高潮。现在,人工智能已经广泛渗入到了我们的生活中,比如手机拍照美化、人脸识别、平安城市、自然语言处理、语音识别等。人工智能就是机器模拟人的思维。目前,对

2021-12-21 16:41:24 29697

原创 分布式的锁

分布式的锁前言为什么要使用分布锁?分布式锁的三种实现方法及对比基于关系型数据库实现分布式锁基于缓存实现分布式锁基于 ZooKeeper 实现分布式锁三种实现方式对比知识扩展:如何解决分布式锁的羊群效应问题?总结前言分布式互斥的同一临界资源同一时刻只能被一个程序访问的问题,在解决分布式互斥的算法中,介绍了如何协调多个进程获取权限和根据权限有序访问共享资源,“获得访问权限的进程可以访问共享资源,其他进程必须等待拥有该权限的进程释放权限”。但是,在访问共享资源时,这个权限是如何设置或产生的,以及设置或产生

2021-12-21 15:08:18 29660

原创 分布式事务

分布式事务前言什么是分布式事务?如何实现分布式事务?基于 XA 协议的二阶段提交方法三阶段提交方法基于分布式消息的最终一致性方案三种实现方式对比知识扩展:刚性事务与柔性事务总结前言对于网上购物的每一笔订单来说,电商平台一般都会有两个核心步骤:订单业务采取下订单操作,库存业务采取减库存操作。通常这两个业务会运行在不同的机器上,甚至是运行在不同区域的机器上。针对同一笔订单,当且仅当订单操作和减库存操作一致时,才能保证交易的正确性。一笔订单只有这两个操作都完成,才能算做处理成功,否则处理失败。

2021-12-21 13:54:38 29336

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除