• dubbo 配置文件详解


    1. 概述

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。主要核心部件
    Remoting: 网络通信框架,实现了sync-over-async 和 request-response 消息机制.
    RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
    Registry: 服务目录框架用于服务的注册和服务事件发布和订阅。
    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

    dubbo架构图如下所示:

    节点角色说明:
    Provider: 暴露服务的服务提供方。
    Consumer: 调用远程服务的服务消费方。
    Registry: 服务注册与发现的注册中心。
    Monitor: 统计服务的调用次调和调用时间的监控中心。
    Container: 服务运行容器。
    调用关系说明:
    0 服务容器负责启动,加载,运行服务提供者。
    1. 服务提供者在启动时,向注册中心注册自己提供的服务。
    2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
    3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
    4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
    5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    Dubbo的一些属性:

    dubbo:service/ 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
    eg、

    dubbo:reference/ 引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。
    eg、

    dubbo:protocol/ 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
    eg、

    dubbo:application/ 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
    eg、

    dubbo:module/ 模块配置,用于配置当前模块信息,可选。
    dubbo:registry/ 注册中心配置,用于配置连接注册中心相关信息。
    eg、

    dubbo:monitor/ 监控中心配置,用于配置连接监控中心相关信息,可选。
    dubbo:provider/ 提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。
    dubbo:consumer/ 消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。
    dubbo:method/ 方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。
    dubbo:argument/ 用于指定方法参数配置。

    注意:

    服务端客户端的区分

    服务端:dubbo:service

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}”
    timeout=“${dubbo.protocol.timeout}” ref=“loanAppService” retries=“0”/>

    客户端:dubbo:reference

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    流程:服务端提供接口供客户端调用。理论上是服务端提供的接口外人是不知道的,也不知道项目的真实架构流程。

    一般分为三步:1.服务端提供接口,一般部署在自己的内网。2、对外网暴漏在外的客户端接口,供别的项目调用接口。中间涉及到了黑白名单。不细说(我也没学会呢。)

    服务端代码:

    1、config.properties配置文件(包含数据库的,zk的,redis的等等一些配置信息)。

    2、applicationContext.xml spring配置文件,加载了配置文件。如

    3、applicationContext_dubbo_main_server.xml Dubbo服务端提供的配置文件以及接口:


    xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:context=“http://www.springframework.org/schema/context”
    xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”
    xsi:schemaLocation=“http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd”>

    d u b b o _ s e r v e r _ p o r t " h o s t " ˉ {dubbo\_server\_port}" host\=" dubbo_server_port"host"ˉ{dubbo_server_address}” />
    d u b b o _ s e r v e r _ a d d r e s s " t h r e a d p o o l " ˉ {dubbo\_server\_address}" threadpool\=" dubbo_server_address"threadpool"ˉ{dubbo_server_threadpool_type}” threads=“${dubbo_server_threadpool_threads}”/>

    class=“com.chainfin.loan.modules.application.service.LonApplicationServiceImpl” />

    class=“com.chainfin.loan.modules.msgPush.MessagePushServiceImpl” />

    
    
    • 1
    • 2
    • 3
    
    
    • 1
    • 2
    • 3

    客户端代码:

    1、config.properties,一些属性的配置文件信息

    2、spring-context.xml spring的配置文件信息,里面加载了config.properties配置文件。

    3、spring-context-dubbo-client.xml Dubbo的客户端配置文件:


    xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
    xmlns:context=“http://www.springframework.org/schema/context”
    xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”
    xsi:schemaLocation=“http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.1.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd”>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    group=“ d u b b o . p r o t o c o l . g r o u p " v e r s i o n " ˉ {dubbo.protocol.group}" version\=" dubbo.protocol.group"version"ˉ{dubbo.protocol.version}” timeout=“${dubbo.protocol.timeout}” registry=“userzk” check=“false”/>

    4、注意:我接口中虽然提供了消息推送的接口。但是dubbo没有消息推送的功能。都是自己写的接口,然后根据业务来实现的。你可以接口消息中间件之类的实现。

    5、黑白名单可以参考文档。比如:http://itindex.net/detail/56167-dubbo-%E6%8E%A5%E5%8F%A3-dubbo

  • 相关阅读:
    5G网络建设 - 华为OD统一考试(C卷)
    小程序day02
    海洋cms新手入门安装配置教程
    ROS机械臂 Movelt 学习笔记1 | 基础准备
    【单片机原理及应用】第一篇——单片机概述
    【脚本】【Linux】shell常用接口封装
    list[dict]类型数据如何提取和储存?
    win10自带wifi共享功能
    SpringBootWeb请求响应
    为什么你的抖店总做不好?原因就在这里,你中招了吗?
  • 原文地址:https://blog.csdn.net/m0_67403272/article/details/126327804