101.分布式-dubbo
2016-08-25 15:47:26 0 举报
AI智能生成
Dubbo是一款高性能、轻量级的开源Java RPC框架,致力于提供面向接口的远程服务调用方案,以及SOA服务治理方案。其核心功能包括接口级的远程方法调用、容错和负载均衡、自动服务注册和发现等。Dubbo采用全Spring配置方式,透明化远程方法调用,实现负载均衡和容错。同时,Dubbo还提供了完善的监控和管理功能,支持多种注册中心和协议,可灵活扩展和定制。Dubbo被广泛应用于电商、金融、物流等领域,是分布式系统开发中不可或缺的重要组件之一。
作者其他创作
大纲/内容
在Spring容器中集成dubbo
1. 扩展NamespaceHandler和BeanDefinitionParser
2. 编写spring.handlers和spring.schemas串联起所有部件
3. 定义的Bean实现Spring以下几个接口FactoryBean, ApplicationContextAware, InitializingBean, DisposableBean
dubbo消费者端的初始化过程
spring的机制会调起ReferenceBean的get()方法,该方法会根据配置到注册中心找到服务所对应的url, 生成service bean的代理对象, invoker抽象定义, 并将两者绑定, 在spring容器中, 代理被调用时触发invokerhandler, 此时会调用到底层的transport层, 封装netty消息发送给服务端, 阻塞订单服务端处理结果并返回
dubbo服务调用过程
1. 消费者端调用protocol协议层本地代理对象, 会调用初始化时定义的invokerhandler
2. invokerhandler,查找SPI插件,调用exchange层, 封装请求并调用transport层,根据配置指定的协议调用通信层组件,如netty,最终调用到Channel发送消息send给服务端,客户端本地在exchange层wait等待lock,exchange层起到同步异步转化的作用
3. 服务端初始化时会调用openServer打开接口监听, 收到请求会根据invoker元数据查找相应的invoker并本地调用,得到RPCResult,通过channel发送结果给请求方
4. 请求方收到结果后找到等待的锁并释放,将结果通过本地代理返回给上层调用逻辑
dubbo比较重要的几个分层
protocol
远程调用层,封将RPC调用,以Invocation, Result为中心,扩展接口为Protocol, Invoker, Exporter
config
配置层,对外配置接口,以ServiceConfig, ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类
ReferenceBean生成时会调用ReferenceConfig的get方法,其会调用protocol层的refer方法通过registry层得到invoker对象,并通过proxy层的proxyFactory的getProxy方法得到代理对象
proxy
服务代理层,服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory
exchange
信息交换层,封装请求响应模式,同步转异步,以Request, Response为中心,扩展接口为Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
transport
网络传输层,抽象mina和netty为统一接口,以Message为中心,扩展接口为Channel, Transporter, Client, Server, Codec
serialize
数据序列化层,可复用的一些工具,扩展接口为Serialization, ObjectInput, ObjectOutput, ThreadPool
0 条评论
下一页