soul从入门到放弃3--dubbo代理

零、前戏

首先启动一个dubbo的注册中心,zookeeper或是nacos都可以。

本文启动zookeeper,zookeeper不是本文的重点,
相关可以参考https://www.jianshu.com/p/5491d16e6abd
https://www.cnblogs.com/peng-28/archive/2004/01/13/13402584.html

./zkServer.sh start  // 开启服务
./zkServer.sh stop   // 停止服务
./zkServer.sh status // 查看服务状态
tail -f zookeeper.out    // 持续打印日志

整个调用过程http-->网关-->dubbo provider如图所示:

image

通过dubbo的范化调用,实现的dubbo的转发,ApplicationConfigCache

image.png

范化调用小知识点

下面我们开始一步步搞起,dubbo的网关代理

一、soul-admin添加dubbo插件及相关操作

在soul-admin在 soul-admin --> 插件管理-> dubbo 设置为开启,并配置zookeeper注册中心地址。

image

soul数据库添加元数据表meta_data

默认soul-admin初始化启动时已添加,用于存储注册的dubbo元数据

CREATE TABLE `meta_data` (
  `id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'id',
  `app_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'application name',
  `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'path, cannot be repeated',
  `path_desc` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'path description',
  `rpc_type` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'rpc type',
  `service_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'service name',
  `method_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'method name',
  `parameter_types` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'parameter types are provided with multiple parameter types separated by commas',
  `rpc_ext` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'rpc extended information, json format',
  `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'create time',
  `date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update time',
  `enabled` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'enabled state',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC

每一个dubbo方法,对应一条元数据,可以在 soul-admin -->元数据管理,进行查看。

image

路径(path):就是你http请求的路径

rpc扩展参数(rpc_ext):对应为dubbo接口的一些配置,调整的化,请在这里修改,支持json格式

{"timeout":10000,"group":"",version":"","loadbalance":"","retries":1}

二、依赖引入

soul-bootstrap添加依赖

  • alibaba dubbo项目,添加依赖如下,dubbo换成自己项目当前版本
 <!--soul alibaba dubbo plugin start-->
         <dependency>
             <groupId>org.dromara</groupId>
             <artifactId>soul-spring-boot-starter-plugin-alibaba-dubbo</artifactId>
              <version>${last.version}</version>
         </dependency>
          <!-- soul  alibaba dubbo plugin end-->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>dubbo</artifactId>
             <version>2.6.5</version>
         </dependency>
         <dependency>
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-client</artifactId>
             <version>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-framework</artifactId>
             <version>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-recipes</artifactId>
             <version>4.0.1</version>
         </dependency>
  • apache dubbo,添加依赖如下,dubbo换成自己项目当前版本
  <!--soul apache dubbo plugin start-->
         <dependency>
             <groupId>org.dromara</groupId>
             <artifactId>soul-spring-boot-starter-plugin-apache-dubbo</artifactId>
             <version>${last.version}</version>
         </dependency>
         <!--soul apache dubbo plugin end-->
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo</artifactId>
             <version>2.7.5</version>
         </dependency>
          <!-- Dubbo Nacos registry dependency start -->
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-registry-nacos</artifactId>
             <version>2.7.5</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
             <artifactId>nacos-client</artifactId>
             <version>1.1.4</version>
         </dependency>
         <!-- Dubbo Nacos registry dependency  end-->
         <!-- Dubbo zookeeper registry dependency start-->
         <dependency>
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-client</artifactId>
             <version>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-framework</artifactId>
             <version>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-recipes</artifactId>
             <version>4.0.1</version>
         </dependency>
         <!-- Dubbo zookeeper registry dependency end -->

注:如果使用启动服务时报错 KeeperErrorCode = Unimplemented for /dubbo,可以参照https://www.cnblogs.com/peng-28/p/13402584.html调整下jar依赖

dubbo服务引入soul的client

  • alibaba dubbo 用户
<dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-client-alibaba-dubbo</artifactId>
            <version>${last.version}</version>
       </dependency>

yml中添加配置

soul:
     dubbo:
       adminUrl: http://localhost:9095
       contextPath: /dubbo
       appName: dubbo
      # adminUrl: 为你启动的soul-admin 项目的ip + 端口,注意要加 http://
      # contextPath: 为你的这个项目在soul网关的路由前缀,这个你应该懂意思把? 比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
      # appName:你的应用名称,不配置的话,会默认取 dubbo配置中application 中的名称

三、调用参数的说明

通过http post方式访问网关,通过body,json类型传递,以java bean参数类型

多参数类型支持,在soul-bootstrap中的yaml 配置中新增如下配置:

soul :
    dubbo :
      parameter: multi

通过@SoulDubboClient,注册接口,可在dubbo插件中查看

image

常见定义调用:

  • 单个参数,基本数据类型
image
image
  • javabean
image
image
  • 多参数
image
image
  • 没有参数-- 传入{}
image
image

关于参数具体的解析可以参考

image

四、心得与体会

  • 因为zookeeper版本与soul不一致的问题,导致soul项目启动失败,倒是演练了一把“断点调试法+猜想法”,粗略的趟了一遍流程,也算塞翁失马吧
  • dubbo范化调用还是挺好玩的,很像spi的写法
  • 日拱一卒,每天进步一点点
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容