zoukankan      html  css  js  c++  java
  • dubbo相关概念

    dubbo概念

    dubbo是一个高性能的rpc框架,并在此基础上具有服务治理功能,用于分布式系统架构。


    架构

    节点主要分为

    • provider 暴露服务的服务提供方
    • consumer 调用远程服务的服务消费方
    • registry 服务注册与发现的注册中心
    • monitor 统计服务的调用次数和调用时间的监控中心
    • container 服务运行容器

    运行流程中关键组件/结构

    • service 业务接口层,对应业务逻辑
    • config 配置类
    • porxy 接口层的代理,用来透明化dubbo运行流程
    • registry 封装服务注册和发现
    • cluster 消费端组合多个服务提供方,透明化选择过程
    • protocol 封装rpc调用过程,负责invoker的生命周期,是invoker暴露和引用的主功能入口
    • exchange 封装请求响应过程,同步转异步
    • transport 封装网络传输过程,包括抽象mina/netty等
    • serialize 序列化,如hessiandubbo等

    配置优先级

    从低到高

    • applicationConfig
    • registryConfig
    • providerConfig
    • consumerConfig 可继承providerconfig配置
    • ProtocolConfig
    • ServiceConfig 可继承providerConfig配置
    • referenceConfig 可继承serviceConfig配置,可继承consumerConfig配置
    • MethodConfig
    • ArgumentConfig

    常用配置

    • 服务路由
    • 运行时检查 check
    • 超时重连 timeout/retries
    • 集群容错 cluster
    • 负载均衡 loadbalance
    • 结果缓存 cache
    • 服务分组 group
    • 多版本 version
    • 只发布 register
    • 只订阅 subscribe
    • 异步调用 async
    • 事件通知 onreturn onthrow oninvoke
    • 服务降级 mock

    SPI扩展

    dubbo框架整体建立在spi机制(SPI 全称为 Service Provider Interface,是一种服务发现机制,目标是为接口寻找实现类。)上,同时增强了spi机制,可以键值对形式使用,另增加如默认加载类,以及自适应类@adaptive,还有指定场景加载实现类@activate、


    javassit动态编译

    考虑到性能问题,实现过程中默认都是用javassit来生成静态代理类,比起动态代理执行过程性能更好。


    spi的依赖注入

    由于扩展点可以灵活组合,可能需要注入spring容器的bean或者其他@SPI的实例,因此SpringExtensionFactory持有了spring容器,注入时会从spi的容器和spring容器中找bean


    启动过程

    重点关注

    • DubboConfigBindingRegistrar 配置注册类
    • serviceAnnotationBeanPostProcessor 服务实现类
    • ReferenceAnnotationBeanPostProcessor 消费实现类

    invoker

    dubbo中最重要的接口之一,统一了流程中的各个组件调用的规范。

  • 相关阅读:
    序列化与反序列化之Kryo
    集合框架
    dubbo配置方式简单介绍
    sql(Oracle)优化之索引
    多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
    Storm 性能优化
    web.xml配置重理解
    Java各个版本的新特性
    这两天光写shell了,再贴一段代码,以供日后参考。
    Hadoop常用操作笔记
  • 原文地址:https://www.cnblogs.com/wish5714/p/15021398.html
Copyright © 2011-2022 走看看