分布式
文章平均质量分 56
普通网友
这个作者很懒,什么都没留下…
展开
-
极客时间 系统性能调优 笔记01 CPU & 内存 & 零拷贝 & 协程
CPU 的多级缓存刚刚我们提到,CPU 缓存离 CPU 核心更近,由于电子信号传输是需要时间的,所以离 CPU 核心越近,缓存的读写速度就越快。但 CPU 的空间很狭小,离 CPU 越近缓存大小受到的限制也越大。所以,综合硬件布局、性能等因素,CPU 缓存通常分为大小不等的三级缓存。CPU 缓存的材质 SRAM 比内存使用的 DRAM 贵许多,所以不同于内存动辄以 GB 计算,它的大小是以 MB 来计算的。比如,在我的 Linux 系统上,离 CPU 最近的一级缓存是 32KB,二级缓存是 256KB,原创 2021-07-03 16:45:50 · 1009 阅读 · 0 评论 -
JVM 源码分析07 CAS 底层实现
这里只是举了一个例子, 也许这个例子也不太恰当, 本文只是列出了这个api的调用方法而已, 重点在于介绍compareAndSet()方法的底层原理. 调用的是unsafe里面的compareAndSwapInt()方法刚刚跑去取介绍了getUnsafe()方法...接下来继续讲解cas...刚才说到了AtomicBoolean类里的compareAndSet()方法内部其实...原创 2020-04-16 22:31:47 · 199 阅读 · 0 评论 -
LevelDB 学习01
设计思路 LevelDB的数据是存储在磁盘上的,采用LSM-Tree的结构实现。LSM-Tree将磁盘的随机写转化为顺序写,从而大大提高了写速度 为了做到这一点LSM-Tree的思路是将索引树结构拆成一大一小两颗树,较小的一个常驻内存,较大的一个持久化到磁盘,他们共同维护一个有序的key空间 写入操作会首先操作内存中的树,随着内存中树的不断变大,会触发与磁盘中树的归并操作,而归并操作本身仅有顺序写。随着数据的不断写入,磁盘中的树会不断膨胀,为了避免每次参与归并操作的数据量过大,以...原创 2020-07-04 23:11:45 · 220 阅读 · 1 评论 -
ZAB 协议 故障恢复 && 写请求 && XA && TCC
加餐 | ZAB协议(二):如何从故障中恢复?加餐 | ZAB协议(三):如何处理读写请求?加餐 | MySQL XA是如何实现分布式事务的?那么我当时是如何实现多个 MySQL 数据库更新的一致性呢?答案就是采用 MySQL XA。另外,我想补充的是,如果你要开启 MySQL 的 XA 功能,必须设置存储引擎为 InnoDB,也就是说,在 MySQL 中,只有 I原创 2020-07-04 17:16:36 · 174 阅读 · 0 评论 -
分布式协议与算法 03
11 | Gossip协议:流言蜚语,原来也可以实现一致性Gossip 的三板斧Gossip 的三板斧分别是:直接邮寄(Direct Mail)、反熵(Anti-entropy)和谣言传播(Rumor mongering)。 从图中你可以看到,节点 A 向节点 B、D 发送新数据,节点 B 收到新数据后,变成活跃节点,然后节点 B 向节点 C、D 发送新数据。其实,谣言传播非常具有传染性,它适合动态变化的分布式系统。15 | ZAB协议:如何实现操作的..原创 2020-07-03 22:47:49 · 263 阅读 · 0 评论 -
分布式协议与算法 02
Raft算法原理和解析++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Raft算法(一):如何选举领导者 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...原创 2020-07-03 22:45:35 · 504 阅读 · 0 评论 -
分布式协议与算法 01
一致性模型一致性(Consistency)是指多副本(Replications)问题中的数据一致性。关于分布式系统的一致性模型有以下几种:强一致性当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值,直到这个数据被其他数据更新为止。但是这种实现对性能影响较大,因为这意味着,只要上次的操作没有处理完,就不能让用户读取数据。弱一致性系统并不保证进程或者线程的访问都会返回最新更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。原创 2020-07-03 22:44:30 · 537 阅读 · 0 评论 -
MCC 配置中心设计
原创 2020-07-17 20:00:58 · 573 阅读 · 0 评论 -
2pc 对比 3pc Raft 对比 ZAB
1.1.1 选举投票可能会多次轮番上演,为了区分,所以需要定义你的投票是属于哪个轮次的。Raft定义了term来表示选举轮次 ZooKeeper定义了electionEpoch来表示他们都需要在某个轮次内达成过半投票来结束选举过程1.1.2 投票PK的过程,更多的是日志越新越多者获胜选举出来的leader至少包含之前全部已提交的日志有2种选择,一种就是所有日志中的最后一个...原创 2020-05-04 20:04:32 · 550 阅读 · 0 评论 -
分布式锁 高并发使用汇总
究竟什么样的锁才能更好的支持高并发场景呢?今天,我们就一起解密高并发环境下典型的分布式锁架构,结合【高并发】专题下的其他文章,学以致用。锁用来解决什么问题呢?在我们编写的应用程序或者高并发程序中,不知道大家有没有想过一个问题,就是我们为什么需要引入锁?锁为我们解决了什么问题呢?在很多业务场景下,我们编写的应用程序中会存在很多的资源竞争的问题。而我们在高并发程序中,引入锁,就是为了解...原创 2020-06-16 10:24:16 · 156 阅读 · 0 评论 -
Nacos 源码分析 (三) 服务注册与发现
服务如何注册服务注册最重要的就是将服务注册到哪里,在注册中心服务端,肯定有一个用来管理服务的容器,他保存着所有服务的实例。我们暂时不需要知道该容器具体的实现细节,只需要知道有这样一个概念。nacos-registry-princple-1.jpgnacos-registry-princple-2.jpgnacos-registry-princple-3.jpg...原创 2019-12-30 09:43:26 · 1263 阅读 · 0 评论 -
Nacos 源码分析 (二) 配置中心服务
https://blog.csdn.net/egworkspace/article/details/94504383?utm_source=app先来看下example是由NacosFactory 创建一个configService,实现对配置config的增删改查1.通过反射初始化驱动类2.加载配置properties3.最后创建出一个实例configService...原创 2019-12-10 22:21:44 · 551 阅读 · 2 评论 -
Nacos 源码分析 (一) 代码结构总览 && 概述
java代码大概488个类,共69000行代码,整体算是中等规模。分析难度不大下面看一下各个包的核心功能一、address :地址服务相关二、api :这个里面,主要是把naming和config的api进行了抽取,从结构上看更清晰一些,api的具体实现,都还在client模块里面三、client:这个里面放的是Nacos客户端的代码,服务发现和配置管理2个功能的客户端...原创 2019-12-09 22:48:35 · 2456 阅读 · 0 评论 -
Nacos 学习 (二) 官方文档介绍
Nacos 的关键特性包括: 服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO或HTTP&API查找和发现服务。 Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支...原创 2019-12-09 22:30:10 · 1889 阅读 · 0 评论 -
Nacos 学习 (一) 简介 && 概述
一、Nacos简介Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。Nacos主要提供以下四大功能: 服务发现与服务健康检查 Nacos使服务更容易注册自己并通过DNS或HTTP接口发现其他服务。Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。 动态配置管理 动态配置服务允许您在所有环境中以集中和动态...原创 2019-12-09 22:20:30 · 1345 阅读 · 0 评论 -
分布式系统 注册中心对比
解决的问题在一个分布式系统中,服务注册与发现组件主要解决两个问题:服务注册和服务发现。服务注册:服务实例将自身服务信息注册到注册中心。这部分服务信息包括服务所在主机IP和提供服务的Port,以及暴露服务自身状态以及访问协议等信息。 服务发现:服务实例请求注册中心获取所依赖服务信息。服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。除此之外,服务注...原创 2019-12-08 21:43:41 · 777 阅读 · 0 评论