Dubbo之集群容错前导篇(下) 发表于 2019-12-04 | 分类于 Dubbo 前言 在之前通过源码角度分析了Dubbo集群容错的服务目录 Directory、服务路由 Router两个部分,本篇主要介绍一下集群Cluster部分,简单介绍Cluster到底是干什么的,简单介绍一下Dubbo的9种集群容错的实现,官方文档上虽然只介绍了主要的5种集群容错模式。 阅读全文 »
Dubbo之集群容错前导篇(中) 发表于 2019-11-22 | 分类于 Dubbo 前言 上一篇主要介绍了服务目录 Directory的相关部分,本篇就主要结合源码来说说服务路由 Router相关部分,当然了,这边我们主要关注点是它是如何过滤的。具体的源码分析也能参考官方博客。 阅读全文 »
Dubbo之集群容错前导篇(上) 发表于 2019-11-21 | 分类于 Dubbo 前言 在Dubbo集群容错分析之前,要先有一个宏观的了解,集群容错源码分别是服务目录 Directory、服务路由 Router、集群 Cluster和负载均衡LoadBalance四个部分,这个在官网的博客中有简单的介绍,本篇就结合官网的介绍来简单介绍一下服务目录 Directory部分。 ps:以下所有的源码分析都是基于Dubbo2.6.6版本 阅读全文 »
实现一个自己的RPC框架5.0 发表于 2019-11-10 | 分类于 RPC 前言 距离上一个版本的RPC也有一两个月的时间了,中间也是在做论文的相关实验,自己也陆陆续续学习了一点Netty和其他的知识,今天记录和分享一下用Netty实现的RPC框架。在上一个博客中提到,使用NIO会有很多问题,比如Selector的空轮询、编码难度大等问题,用Netty能很好的解决以上问题,因为它把NIO很好的进行了封装,让使用者不必去考虑这么多的问题,这也是Netty的一个优势所在吧。 阅读全文 »
Java并发容器(转载整理) 发表于 2019-10-27 | 分类于 Java基础 前言 在之前的博客中,我介绍了HashMap的具体实现以及一些值得注意的地方。HashMap是线程不安全的,换句话说,当我们在并发的情况下使用HashMap的时候,会造成数据的错误。所以在并发的情况下,通常使用HashTable和ConcurrentHashMap这种线程安全的并发容器来代替HashMap这种线程不安全的集合。本篇主要介绍HashTable和ConcurrentHashMap是如何在并发的情况下实现线程安全的。 阅读全文 »
队列同步器AQS 发表于 2019-10-25 | 分类于 Java并发编程 前言 我们知道,Lock接口的实现基本都是通过聚合了一个同步器的子类来完成线程的访问控制的。队列同步器AbstractQueuedSynchronizer是用来构建锁或者其他同步组件的基础框架,以下简称AQS。网上关于AQS的总结已经很到位了,这边主要记录一下自己的学习过程。 阅读全文 »
线程间通信之wait/notify 发表于 2019-10-20 | 分类于 Java并发编程 前言 wait和notify这两个方法通常在线程间通信中常常用到,其中wait方法和sleep方法虽然都能够让线程“停下来”,但是有很大的区别,另外,耳熟能详的生产者消费者问题也涉及到wait和notify,本篇就简单的整理一下这些问题吧! 阅读全文 »
volatile关键字 发表于 2019-10-16 | 分类于 Java并发编程 前言 volatile关键字在平常的使用中似乎很少用到,但是其原理值得我们研究,因为它与Java的内存模型相关,并且能保证数据的可见性,但是保证不了原子性。简单来说,线程A对一个volatile变量的修改,对于其它线程来说是可见的,即线程每次获取volatile变量的值都是最新的。 阅读全文 »