集群容错之 DirectoryDubbo 集群容错方面的源码,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取到服务提供者的信息,比如 ip、端口、服务协议等。通过这些信息,服务消费者就可通过 Netty 等客户端进行远程调用。在一个服务集群中,服务提供者            
                
         
            
            
            
            dubbo1. 依赖 spring扫描注入 2. 反射3. 动态代理4.Zookeeper5.netty                                       &nbs            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-13 09:56:10
                            
                                33阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            分析源代码,基本原理如下:client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object向专门存放调用信息的全局ConcurrentHashMap里面put(ID, objec            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-11 08:32:21
                            
                                23阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            自适应拓展原理原理Dubbo 中的很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并非想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用,就无法进行加载,这似乎是个死结。不过好在也有相应的解决办法,通过代理模式就可以解决这个问            
                
         
            
            
            
            dubbo的介绍dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。dubbo框架是基于Spring容器运行的。RPC远程过程调用远程过程调用协议是一种通过网络从远程计算机程序上请求服务,而不需要了解网络底层技术的协议。RPC协议假定某些传输协议的存在,如TCP或者UDP,为通信程序之间携带信息数据。在OSI            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-15 16:39:00
                            
                                69阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            面试题dubbo 的 spi 思想是什么?面试官心理分析继续深入问呗,前面一些基础性的东西问完了,确定你应该都 ok,了解 dubbo 的一些基本东西,那么问个稍微难一点点的问题,就是 spi,先问问你 spi 是啥?然后问问你 dubbo 的 spi 是怎么实现的?其实就是看看你对 dubbo 的掌握如何。面试题剖析spi 是啥?spi,简单来说,就是 service provider            
                
         
            
            
            
            dubbo的心跳机制:目的:检测provider与consumer之间的connection连接是不是还连接着,如果连接断了,需要作出相应的处理。原理:
provider:dubbo的心跳默认是在heartbeat(默认是60s)内如果没有接收到消息,就会发送心跳消息,如果连着3次(180s)没有收到心跳响应,provider会关闭channel。consumer:dubbo的心跳默认是在60s内            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-18 12:25:54
                            
                                56阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            分布式系统面试系列02-Dubbo 的底层原理,前面我们讲了 SpringCloud 核心组件的底层原理,同样的,作为微服务里面的另外一大派系Dubbo ,使用的也是蛮多的,很多时候面试也会考到。前言平常我们在构建分布式系统的时候,一般都是基于 Dubbo 技术栈或者是SpringCloud 技术栈来做。早期其实最先比较流行的是Dubbo,我记得我们当时有个部分的老大就是用的是Dubbo 来构建的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-19 15:41:54
                            
                                4阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             注:使用InputStream 作为方法参数的时候,需要将该参数作为方法的最后一个参数,否则会有问题     dubbo和hessian的maven依赖:    1. <dependency>  
2.     <groupId>com.alibaba</groupId>  
3.     <artifactId            
                
         
            
            
            
            序之前的笔记学习了RPC原理,对于dubbo的模块组成还是不清楚,看了官网的用户手册,转载过来。dubbo采用分层方式来架构,用实用角度有分为服务的提供方和消费方来看。总体架构Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口, 位于            
                
         
            
            
            
            认识Dubbo          Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。同时也是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Du            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-27 22:14:01
                            
                                38阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            java io体系 如图可以看出,java的io按照包来划分的话可以分为三大块:io、nio、aio,但是从使用角度来看,这三块其实揉杂在一起的,下边我们先来概述下这三块:io:主要包含字符流和字节流,我们常用的文件读写,流处理等都要用到,也是本次介绍的重点。jdk1.7之后的io底层部分类经已改为使用阻塞的nio实现了nio:jdk1.4后加入,多路非阻塞(多路IO复用模型),此外还实现了bu            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-13 23:05:21
                            
                                64阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.io流的概念把这些不同类型的输入、输出源抽象为流(Stream),其中输入或输出的数据称为数据流(Data Stream),用统一的接口来表示;2.io流的分类按照流向分:输入流:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中;输出流:把程序(内存)中的内容输出到磁盘、光盘等存储设备中;深入java io底层(上)-1.jpg (29.12 KB, 下载次数: 0)2021-1-1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-06 21:41:22
                            
                                99阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            我们平时都是使用sql语句去查询数据,都是很直接的看到结果。那么对于sql底层执行的过程大家有了解吗?一、MySQL的内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-13 12:02:13
                            
                                105阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            dubbo在调用服务不成功时,默认会重试2次。Dubbo的路由机制,会把超时的请求路由到其他机器上,而不是本机尝试,所以 dubbo的重试机器也能一定程度的保证服务的质量。但是如果不合理的配置重试次数,当失败时会进行重试多次,这样在某个时间点出现性能问题,调用方再连续重复调用,系统请求变为正常值的retries倍,系统压力会大增,容易引起服务雪崩,需要根据业务情况规划好如何进行异常处理,何时进行重            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-12 16:24:25
                            
                                88阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Dubbo底层 用到Socket1.通信原理 计算机于外界的信息交换成为通信, 基本的通信方法有两种 并行通信和串行通信 并行通信:Parallel communication{并行是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。}穿行通信:serial communication 串行通信作为计算机通信方            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-08 12:04:03
                            
                                36阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、电商系统架构演进1、单一应用架构当网站规模很小时,采用单一应用框架,把所有的服务集中在一个应用中,但随着网站规模增大,单一应用框架会越来越难维护。2、垂直应用架构把应用垂直的拆分开来,拆分成如支付、查询等垂直模块,每个模块都有从顶层显示层到底层数据持久层的业务逻辑,每个模块都是一个独立的子系统。虽然在一定程度上降低了开发成本和维护成本,但是会导致许多底层业务逻辑代码的重复。3、分布式应用架构把            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-09 09:30:27
                            
                                44阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Cluster 模块的目标是暴露 Invoker 对象,实现统一的调用入口@SPI(FailoverCluster.NAME) //默认扩展点
public interface Cluster {
    @Adaptive//基于 Directory ,创建 Invoker 对象
    <T> Invoker<T> join(Directory<T> dir            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-07 19:19:56
                            
                                24阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. 前言前面的文章分析了Dubbo Provider是如何处理RPC调用请求的,整个处理链路是清晰了,但是关于线程模型却一笔带过,Dispatcher也只是简单介绍了一下,本篇文章会全面分析Provider线程模型。 Dubbo线程可以分为两大类,一类是用于处理底层网络通信的IO线程,一类是处理业务逻辑的业务线程,也可称作Dubbo线程。IO线程以Netty为例,又细分为Boss和Worker,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-29 08:11:24
                            
                                70阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.什么是DubboDubbo是一套RPC框架。既然是框架,我们可以在框架结构高度,定义Dubbo中使用的通信协议,使用的序列化框架技术,而数据格式由Dubbo定义,我们负责配置之后直接通过客户端调用服务端代码。 简单来说,Dubbo就是RPC概念的实现 Dubbo是Spring Cloud Alibaba提供的一个框架 能够实现微服务项目的互相调用PS:什么是RPCRPC是Remote Proc            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-18 19:44:51
                            
                                66阅读
                            
                                                                             
                 
                
                                
                    