随笔分类 - Java[分布式]
摘要:Java微服务:缓存穿透和缓存雪崩 缓存穿透 缓存是对数据库的一道保护墙,缓存穿透就是冲破了我们的保护墙。即调用方传来的永远都是我们缓存中不存在的Key,这样每次都需要去数据库中查询一次,当大量这样的请求过来时,瞬时数据库的压力会很大,相当于没用到缓存,同时还增加了去缓存中查找数据的时间,这就是所谓
阅读全文
摘要:Java高并发教程:详解NIO Selector类 NIO Selector Java NIO Selector可以检查一个或多个Java NIO Channel实例,并确定哪些通道可供使用,例如read或write。 这样,单个线程可以管理多个通道,从而可以管理多个网络连接。Selector 选择
阅读全文
摘要:Java高并发教程:详解NIO Channel(通道)类 NIO Channel NIO中一个连接用一个Channel来表示。从更广泛的层面来说,一个通道可以表示一个底层的文件描述符,例如硬件设备、文件、网络连接等。然后,远远不止如此,除了可以对应到底层文件描述符,Java NIO的通道还可以更加细
阅读全文
摘要:Java高并发教程:详解NIO Buffer类及其属性 NIO Buffer NIO的Buffer(缓存区)本质上是一个内存块,既可以写入数据,也可以从中读取数据。NIO的Buffer类,是一个抽象类,位于java.nio包中,其内部是一个内存块(数组)。 需要强调的是:Buffer类是一个非线程安
阅读全文
摘要:Java高并发教程:Future异步回调模式 Join异步阻塞 FutureTask异步回调 Guava异步回调 Netty的异步回调 Netty和Guava一样,实现了自己的异步回调体系:Netty继承和扩展了JDK Future系列异步回调的API,定义了自身的Future系列接口和类,实现了异
阅读全文
摘要:Java高并发教程:Java NIO Java NIO Java NIO 全程未 Java New IO类库,目的是让Java支持非阻塞IO(Non-Block IO),故很多人也称之为 Java Non-Block IO。原先的阻塞式IO也被称为OIO(Old IO)。总体上来说,NIO弥补了原来
阅读全文
摘要:Java高并发教程:高并发IO的底层原理 IO读写的基础原理 程序进行IO读写依赖于操作系统底层的IO读写,主要为read、write两大系统调用。在不同的操作系统中,IO读写的系统调用的名称可能不完全一样,但是基本功能是一样的。 首先我们必须要明白的的是,read系统调用,并不是直接从物理设备把数
阅读全文
摘要:Java分布式:分布式锁之数据库实现 分布式锁系列教程重点分享锁实现原理 锁实现原理 创建一张名为methodLock的数据库表,为方法名字段(method_name)添加唯一性约束。 每次访问方法前,都执行插入操作: 一旦插入成功,即认为此线程上锁成功,若插入失败,可执行while语句,在最大等待
阅读全文
摘要:Java分布式:分布式锁之Redis实现 分布式锁系列教程重点分享锁实现原理 Redis锁原理 核心命令 Redis分布式锁的原理是基于其SETNX命令,我们来看SETNX的解释。 实现过程 使用SETNX完成同步锁的流程及事项如下: 图解 参考资料 https://segmentfault.com
阅读全文
摘要:Java分布式:分布式锁之Zookeeper 分布式锁系列教程重点分享锁实现原理 引入ZooKeeper ZooKeeper是什么呢? ZooKeeper 是一个开源的分布式协调服务,它可以在分布式系统中共享配置,协调锁资源,提供命名服务等。ZooKeeper 的设计目标是将那些复杂且容易出错的分布
阅读全文
摘要:微服务实践:分布式锁 分布式锁 单体应用下,使用锁机制可以解决多线程同步问题。而在,集群环境下,单个服务有多个实例,每个实例都在自身JVM内做了同步,却不能保证整体服务的同步,这个服务依然是紊乱的。 故需要使用分布式锁技术来实现跨服务实例的多线程锁。 分布式与集群 单机处理到达瓶颈的时候,你就把单机
阅读全文
摘要:Java分布式:分布式事务 分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部
阅读全文
摘要:Java分布式:消息队列(Message Queue) 引入消息队列 消息,是服务间通信的一种数据单位,消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。队列,是一种常见的数据结构,它是保存消息的容器。那么消息队列就是以消息为基本单位的优先队列。 借助消息队列,系统的不同部分可
阅读全文
摘要:Java分布式:JWT(JSON Web Tokens) 0.优势 Session方式存储用户状态占用大量服务器内存。一般而言,大型应用还需要借助一些KV数据库和一系列缓存机制来实现Session的存储。而JWT方式将用户状态分散到了客户端中,可以明显减轻服务端的内存压力。除了用户id之外,还可以存
阅读全文
摘要:Java分布式:RPC(远程过程调用) 引入RPC 比如我们有一个查询的接口IDBQuery,以及其实现类DBQueryImp,如果我们执行IDBQuery查询方法,只需要new一个DBQueryImp然后调用request方法即可,这就是本地函数调用,因为在同一个地址空间或者同一块内存,通过方法栈
阅读全文