Dubbo
文章平均质量分 81
qq_43171869
小刀爱编程,爱学习,分享一些知识给大家
展开
-
Dubbo (二) ——- 项目结构解析
本文主要说明点概述背景需求架构Dubbo源代码项目结构概述分享 Dubbo 的项目结构 ,通过本文可以大致了解到Dubbo整个项目的结构背景将一个项目进行拆分, 进行分布式架构。需要解决下面的问题单一应用架构网站流量少时单一架构,简化开发。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构访问大时单一应用速度过小,需要进行应用拆分。此时,用于加速...原创 2018-10-16 16:15:08 · 194 阅读 · 0 评论 -
老司机带你深入浅出Java反射
反射,它就像是一种魔法,引入运行时自省能力,赋予了 Java 语言令人意外的活力,通过运行时操作元数据或对象,Java 可以灵活地操作运行时才能确定的信息这里笔者就深入浅出总结下Java反射,若有不正确地方,感谢评论区指正交流~ 建议打开idea,写一个Java反射的demo,跟着调试,效果会更好 :)反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状...原创 2018-11-07 19:24:25 · 193 阅读 · 0 评论 -
Java并发-从同步容器到并发容器
引言容器是Java基础类库中使用频率最高的一部分,Java集合包中提供了大量的容器类来帮组我们简化开发,我前面的文章中对Java集合包中的关键容器进行过一个系列的分析,但这些集合类都是非线程安全的,即在多线程的环境下,都需要其他额外的手段来保证数据的正确性,最简单的就是通过synchronized关键字将所有使用到非线程安全的容器代码全部同步执行。这种方式虽然可以达到线程安全的目的,但存在几个...原创 2018-11-05 14:41:17 · 139 阅读 · 0 评论 -
Redis 分布式锁进化史
按:系统架构经过多年演进,现在越来越多的系统采用微服务架构,而说到微服务架构必然牵涉到分布式,以前单体应用加锁是很简单的,但现在分布式系统下加锁就比较难了,我之前曾简单写过一篇文章,关于分布式锁的实现,但有一次发现实现的分布式锁是有问题的,因为出问题的概率很低,所以当时也没在意,前几天和朋友聊这个问题,想起来看过一篇文章,写的不错,今天特转载过来,希望能让更多的人看到,同时也加深一下记忆。原文链接...原创 2018-11-08 20:42:20 · 121 阅读 · 0 评论 -
详解netty原理分析
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于N...原创 2018-11-14 16:13:51 · 988 阅读 · 0 评论 -
Dubbo 源码分析 - 服务引用
1. 简介在上一篇文章中,我详细的分析了服务导出的原理。本篇文章我们趁热打铁,继续分析服务引用的原理。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直联的方式引用服务,第二种方式是基于注册中心进行引用。服务直联的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环...原创 2018-11-16 19:27:19 · 102 阅读 · 0 评论 -
轻松搞懂锁和分布式锁
锁的由来 :多线程环境中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,这就需要某种机制来保证只有满足某个条件(获取锁成功)的线程才能访问资源,而不满足条件(获取锁失败)的线程只能等待,在下一轮竞争中来获取锁才能访问资源。两个知识点:1.高级缓存CacheCPU为了提高处理速度,不和内存直接进行交互,而是使用Cache。可能引发的问题:...原创 2018-11-19 20:26:42 · 946 阅读 · 0 评论 -
深入Dubbo 源码解析 — 负载均衡LoadBalance
技术点面试中Dubbo负载均衡常问的几点 常见负载均衡算法简介 Dubbo 官方文档介绍 Dubbo 负载均衡的策略 Dubbo 负载均衡源码解析面试中Dubbo负载均衡常问的几点负载均衡算法最小活跃数一致性哈希算法常见负载均衡算法简介首先引出一点 负载均衡的目的是什么?当一台服务器的承受能力达到上限时,那么就需要多台服务器来组成集群,提升应用整体的吞吐量,那...原创 2018-11-22 19:22:58 · 465 阅读 · 0 评论 -
收藏起来-Redis 集群管理常见操作
Redis 内置客户端 redis-cli 通过 --cluster 选项集成了多个 Redis 集群管理工具, 这些工具可以执行创建集群、向集群中添加或移除节点、对集群实施重分片以及负载均衡等操作, 它们每一个都非常强大:$ redis-cli --cluster helpCluster Manager Commands: create host1:port1 .....原创 2018-11-22 19:49:10 · 279 阅读 · 0 评论 -
Java并发:volatile的实现原理
synchronized 是一个重量级的锁, volatile 通常被比喻成轻量级的 synchronizedvolatile 是一个变量修饰符,只能用来修饰变量。volatile写:当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存。volatile读:当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效。线程接下来将从主内存中读...原创 2018-11-02 19:40:02 · 144 阅读 · 0 评论 -
Java核心-深入理解BIO、NIO、AIO
导读:本文你将获取到:同/异步 + 阻/非阻塞的性能区别;BIO、NIO、AIO 的区别;理解和实现 NIO 操作 Socket 时的多路复用;同时掌握 IO 最底层最核心的操作技巧。BIO、NIO、AIO 的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO 如何实现多路复用功能?带着以上这几个问题,让我们一起进入IO的世界吧。在开始之前...原创 2018-11-09 20:49:21 · 332 阅读 · 0 评论 -
如何用 redis 实现分布式幂等服务中间件
背景在编程领域,幂等性是指对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。在分布式系统里,服务通常通过 RPC 或 HTTP 或其他形式对外提供。不管怎样,client 调用 server 服务都是将调用数据按特定协议封装好,然后通过网络发送给 server,server 将需要返回的数据同样按特定协议封装然后通过网络发送给 client。由于网络环境的复杂...原创 2018-11-06 16:49:05 · 383 阅读 · 0 评论 -
Dubbo深入分析之Transport层
Transporter类分析dubbo为通讯框架提供了统一的bind和connet接口,方便进行管理和扩展,封装在接口类:Transporter中:@SPI("netty")public interface Transporter { @Adaptive({Constants.SERVER_KEY, Constants.TRANSPORTER_KEY}) Serve...原创 2018-10-25 15:31:50 · 507 阅读 · 0 评论 -
简单易懂带你了解Java Agent
Java Agent这个技术,对于大多数同学来说都比较陌生,但是多多少少又接触过,实际上,我们平时用的很多工具,都是基于Java Agent实现的,例如常见的热部署JRebel,各种线上诊断工具(btrace, greys),还有阿里最近开源的arthas。其实Java Agent一点都不神秘,也是一个Jar包,只是启动方式和普通Jar包有所不同,对于普通的Jar包,通过指定类的main函数进...原创 2018-10-28 19:16:49 · 9193 阅读 · 0 评论 -
JavaScript数据结构之 - 队列
前面我们学习了 栈的实现 ,队列和栈非常类似,但是使用了不同的原则,而非后进先出。队列是遵循FIFO(First In First Out,先进先出)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。在计算机科学中,一个最常见的例子就是 打印队列 。比如说我们要打印五份文档。我们会打开每个文档,然后点击打印按钮。每个文档都会被发送至打印队列。...转载 2018-10-29 14:21:03 · 215 阅读 · 0 评论 -
详解SpringBoot的配置外部化
在前面的课程中,我们给大家分享过SpringBoot精妙的启动配置,主要阐述的是spring的IoC容器在SpringBoot中的加载过程,并与传统项目中Spring的IoC容器加载过程进行了一个对比.我们在开发的过程中,除了IoC容器的配置之外,当然还有许多其他的配置,诸如数据库的链接信息,端口,以及项目的内部使用的一些个性化信息等.那SpringBoot是如何管理这些配置呢?我今天呢,就从以下...原创 2018-10-26 16:43:33 · 565 阅读 · 0 评论 -
Java中线程池,你真的了解会用吗
在《 深入源码分析Java线程池的实现原理 》这篇文章中,我们介绍过了Java中线程池的常见用法以及基本原理。在文中有这样一段描述:可以通过Executors静态工厂构建线程池,但一般不建议这样使用。关于这个问题,在那篇文章中并没有深入的展开。作者之所以这么说,是因为这种创建线程池的方式有很大的隐患,稍有不慎就有可能导致线上故障,如:一次Java线程池误用引发的血案和总结( zhuan...转载 2018-10-31 15:52:43 · 248 阅读 · 0 评论 -
来一次彻底解决Java的值传递和引用传递
本文旨在用最通俗的语言讲述最枯燥的基本知识学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨论的话题又是充满争议:有的论坛帖子说Java只有值传递,有的博客说两者皆有;这让人有点摸不着头脑,下面我们就这个话题做一些探讨,对书籍、对论坛博客的说法,做一次考证,以得出信得过的答案。其实,对...原创 2018-10-24 19:35:20 · 1697 阅读 · 1 评论 -
深入浅出JVM内存模型与JVM参数详细配置
JVM内存结构由上图可以清楚的看到 JVM的内存空间分为3大部分:堆内存方法区栈内存其中 栈内存 可以再细分为 java虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代, 新生代中还可以再次划分为Eden区、From Survivor区和To Survivor区。其中一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及...原创 2018-11-01 19:56:23 · 131 阅读 · 0 评论 -
Java 多线程— 线程的生命周期及方法
这篇博客介绍线程的生命周期。线程是一个动态执行的过程,它也有从创建到死亡的过程。线程的几种状态在 Thread 类中,有一个枚举内部类:上面的信息以图片表示如下:第一张图:第二张图:把等待、计时等待、阻塞看成阻塞一个状态了1、新建状态(new):使用 new 创建一个线程,仅仅只是在堆中分配了内存空间新建状态下,线程还没有调用 start()方法启动,只...原创 2018-11-03 19:23:33 · 152 阅读 · 0 评论 -
Dubbo 源码分析 - 服务引用
1. 简介本文分析服务引用的原理。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直联的方式引用服务,第二种方式是基于注册中心进行引用。服务直联的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除此之外,服务消费者还需要经历 Invoker 创建、代理类创建等...原创 2019-09-10 22:15:39 · 117 阅读 · 0 评论