- 博客(25)
- 资源 (21)
- 收藏
- 关注
转载 java为什么还需要分布式锁?锁的演进
原文:https://baijiahao.baidu.com/s?id=1655515801283332550&wfr=spider&for=pc目前的项目单体结构的基本上已经没有了,大多是分布式集群或者是微服务这些。既然是多台服务器。就免不了资源的共享问题。既然是资源共享就免不了并发的问题。针对这些问题,redis也给出了一个很好的解决方案,那就是分布式锁。这篇文章主要是针对为什么需要使用分布式锁这个话题来展开讨论的。不喜勿喷。前一段时间在群里有个兄弟问,既然分布...
2020-05-29 15:54:57 338
转载 JAVA中的阻塞队列和非阻塞队列-简介
队列是一种数据结构,它有两个基本操作:在队列尾部加入元素和从队列头部移除元素。在我们日常开发中,经常用来并发操作数据。java包中有一些应用比较广泛的特殊队列:一种是以ConcurrentLinkedQueue为代表的非阻塞队列;另一种是以BlockingQueue接口为代表的阻塞队列。通过这两种队列,我们保证了多线程操作数据的安全性。java集合中的Queue继承collection接口,Dueue、LinkedList、PriorityQueue、BlockingQueue等类都实现了它。.
2020-05-29 14:21:31 999
转载 Java中的BlockingQueue
1 Java中的阻塞队列1.1 简介一种支持两个附加操作的队列,是一系列阻塞队列类的接口当存取条件不满足时,阻塞在操作处 队列满时,阻塞存储元素的线程,直到队列可用 队列空时,获取元素的线程会等待队列非空 阻塞队列常用于生产者/消费者场景,生产者是向队列里存元素的线程,消费者是从队列里取元素的线程.阻塞队列就是生产者存储元素、消费者获取元素的容器BlockingQueue继承体系阻塞队列不可用时,两个附加操作提供了4种处理方式 抛出异...
2020-05-29 14:18:07 601
转载 Linux系统中java线上问题常用排查命令
查询java线程占用的资源1、ps -aux | grep java或者 jps 命令,找出java进程的pid 1564。2、top -H -p 1564 查看进程下的线程资源占用情况。3、jstack 1564 查看进程号1564下的线程信息。4、步骤2中的PID是线程ID(十进制),步骤3中的nid也是线程ID(十六进制)。通过进制转换,我们就可以知道某个线程所占用的资源和线程信息。生成堆存储快照1、jmap -heap 1564 查看堆(h...
2020-05-29 14:13:01 515
转载 Redis的并发竞争问题的解决方案总结【参考】
什么是Redis的并发竞争问题Redis的并发竞争问题,主要是发生在并发写竞争。考虑到redis没有像db中的sql语句,update val = val + 10 where ...,无法使用这种方式进行对数据的更新。假如有某个key = "price", value值为10,现在想把value值进行+10操作。正常逻辑下,就是先把数据key为price的值读回来,加上10,再把值给设置回去。如果只有一个连接的情况下,这种方式没有问题,可以工作得很好,但如果有两个连接时,两个连接同时想对还p.
2020-05-29 13:43:22 281
转载 ※HashMap底层实现原理(全)
HashMap底层实现原理(上)本来想先在专栏里简单的说一下二叉树,红黑树的内容后再说HashMap的,但看到评论区里不断的出现HashMap这个词,怕大家等得着急,本篇文章就先说说HashMap吧,前面讲ArrayList和LinkedList时把源码说得很细,只要理解了这两块内容,本篇内容也很好理解,先来看看HashMap在Map这个大家族中的位置。上图中,白色部分是接口,黄色部分是要重点了解的,最好是看一遍源码,绿色部分已经过时,不常用了,但是面试中可能会问到。这里先简单的说一下这几个Ma
2020-05-29 12:48:03 495
转载 深入理解HashMap底层原理剖析(JDK1.8) 扩容方法resize()
接下来会从以下几个方面介绍 HashMap 源码相关知识: 1、HashMap 存储结构 2、HashMap 各常量、成员变量作用 3、HashMap 几种构造方法 4、HashMap put 及其相关方法 5、HashMap get 及其相关方法 6、HashMap remove 及其相关方法 7、HashMap 扩容方法 resize() 介绍方法时会包含方法实现相关细节。 先来看一下 HashMap 的继承图: HashMap 根据键的
2020-05-29 12:41:59 1859
转载 Linux中top命令参数详解、常用快捷键
1、命令1.简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。显示系统当前的进程和其他状况; top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在.
2020-05-28 17:50:43 4763
转载 Redisson实现Redis分布式锁的原理
Redisson实现Redis分布式锁的原理一、写在前面现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。大家如果...
2020-05-22 17:46:05 4510 2
原创 java成神之路阅读笔记——常用工具
java成神之路阅读笔记:to be top javaer:https://hollischuang.github.io/toBeTopJavaer/#/menu常用工具:工具 git & svn maven & gradle git技巧 分支合并 冲突解决 提交回滚 maven技巧 依赖树 依赖仲裁 Intellij IDEA 常用插件:Mav.
2020-05-20 14:27:44 174
转载 Netty 原理
版本说明Netty3(3.x)版本是比较旧的版本。Netty4(4.x)版本是当前官方推荐的,目前一直在维护中。跟3.x版本相比变化比较大,特别是API。Netty5(5.x)是被舍弃的版本,官方不推荐使用!Netty5舍弃的官方解释:1. netty5 中使用了 ForkJoinPool,增加了代码的复杂度,但是对性能的改善却不明显2. 多个分支的代码同步工作量很大3. 作者觉得当下还不到发布一个新版本的时候4. 在发布版本之前,还有更多问题需要调查一下,比如是否应该废弃
2020-05-20 10:47:26 285 1
转载 ShardingSphere、Mycat原理
1.ShardingSpheresharding-jdbc后续发展为Sharding-Sphere,包含sharding-jdbc、Sharding-Proxy、Sharding-Sidecar。1)概述:ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 ...
2020-05-20 10:23:22 5599
转载 共识算法:Raft
拜占庭将军问题https://www.jianshu.com/p/26adc88a1f49针对简化版拜占庭将军问题,Raft 解决方案类比我们还是用拜占庭将军的例子来帮助理解 Raft。假设将军中没有叛军,信使的信息可靠但有可能被暗杀的情况下,将军们如何达成一致性决定?Raft 的解决方案大概可以理解成 先在所有将军中选出一个大将军,所有的决定由大将军来做。选举环节:比如说现在一共有3个将军 A, B, C,每个将军都有一个随机时间的倒计时器,倒计时一结束,这个将军就会把自己..
2020-05-15 17:50:24 368
转载 Zookeeper:一致性协议之 ZAB(二)
1. 什么是 ZAB 协议? ZAB 协议介绍 ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。 Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议。 ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复和原子广播协议。下面我们会重点讲这两个东西。 ...
2020-05-15 15:50:56 248
转载 Zookeeper:一致性协议:Zab协议(一)
什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 崩溃恢复 如何保证数据一致性 Zab 协议如何数据同步 如何处理需要丢弃的 Proposal Zab 协议实现原理 选主过程 什么是Zab协议?Zab协议 的全称是 Zookeeper Atomic Broadcast (Zookeeper原子广播协议)。Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。 Zab协议是为分布式协调服务Zookeepe.
2020-05-15 15:20:54 243
转载 一致性及解决一致性的两种方式:2PC和3PC
1一致性1.1 简述一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的假设一个具有N个节点的分布式系统,当其满足以下条件时,我们说这个系统满足一致性:全认同: 所有N个节点都认同一个结果 值合法: 该结果必须由N个节点中的过半节点提出 可结束: 决议过程在一定时间内结束,不会无休止地进行下去1.2 面临着的问题消息传递异步无序: 现实网络不是一个可靠的信道,存在消息延时、丢失,节点间消息传递做不到同步有序 节点宕机: 节点持续宕机,不会恢复 节点宕机恢复..
2020-05-14 17:46:33 1519 1
转载 数据库中ACID、CAP、BASE
关系型数据库中遵循的ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。 比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱.
2020-05-14 17:18:30 696
转载 Zookeeper 在 Kafka 中的作用
leader 选举 和 follower 信息同步如上图所示,kafaka集群的 broker,和 Consumer 都需要连接 Zookeeper。Producer 直接连接 Broker。Producer 把数据上传到 Broker,Producer可以指定数据有几个分区、几个备份。上面的图中,数据有两个分区 0、1,每个分区都有自己的副本:0'、 1'。黄色的分区为 leader,白色的为 follower。leader 处理 partition 的所有读写请求,与此同时,fol
2020-05-12 15:43:17 2508
转载 RabbitMQ和Kafka对比
一、语言不同RabbitMQ是由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。kafka是采用Scala语言开发,它主要用于处理活跃的流式数据,大数据量的数据处理上二、结构不同RabbitMQ采用AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议RabbitMQ的broker由Exchange,Binding,queue组成kafka采用mq结构:broker 有pa.
2020-05-12 15:28:56 22691 1
转载 Kafka 架构原理
Apache Kafka 最早是由 LinkedIn 开源出来的分布式消息系统,现在是 Apache 旗下的一个子项目,并且已经成为开源领域应用最广泛的消息系统之一。 Kafka 社区非常活跃,从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为"一个分布式流平台"。 Kafka 和传统的消息系统不同在于:• Kafka是一个分布式系统,易于向外扩展。• 它同时为发布和订阅提供高吞吐量。• 它支持多订阅者,当失败时能自动平衡消费者。• 消息...
2020-05-12 15:19:29 295
转载 Kafka 原理:深入理解架构
本文主要讲解 Kafka 是什么、Kafka 的架构包括工作流程和存储机制,以及生产者和消费者,最终大家会掌握 Kafka 中最重要的概念,分别是 broker、producer、consumer、consumer group、topic、partition、replica、leader、follower,这是学会和理解 Kafka 的基础和必备内容。1. 定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用与大数据实时处理领域。1.1 消息队列..
2020-05-12 13:59:06 270
转载 分布式定时任务调度框架选型
分布式定时任务调度框架选型背景业务场景定期执行任务:如每天0点做资源稽查;需求和痛点集群部署服务时,如何确保任务不被重复执行?---最急迫如何监控、告警等;高可用、无单点故障;优秀的并行处理能力、分片能力;自研 or 开源任何工具的使用都要结合自身的业务场景,脱落业务场景谈技术选型就是耍流氓。考虑私有云场景业务量一般,高并发场景很少遇到,同一时间也不会有超...
2020-05-08 16:44:41 1029 2
转载 RabbitMQ之消息确认机制(事务+Confirm)
概述在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达broker的,如果在消息到达broker之前已经丢失...
2020-05-08 11:20:54 1132
转载 理解linux cpu load - 什么时候应该担心了
译文原文: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages你可能已经很熟悉linux的平均load. 平均load是3个数 (可以用uptime或者top命令查看), 他们看着像下面这样:load average: 0.09, 0.05, 0.011大多数人对这些数都有一个模糊的概念:三个数...
2020-05-08 10:29:37 317
转载 Java中HashMap底层原理源码分析
在介绍HashMap的同时,我会把它和HashTable以及ConcurrentHashMap的区别也说一下,不过本文主要是介绍HashMap,其实它们的原理差不多,都是数组加链表的形式存储数据,另外本文所介绍的都是JDK1.8版本的。在介绍之前,先看下Map家族的继承体系图:其中,TreeMap是基于树实现...
2020-05-07 21:31:09 200
博客下载工具
2017-06-22
Java调用C#com方法
2013-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人