今天运行 soul-examples-dubbo,其实这里的配置可以参考官方文档,写的很详细。dubbo 默认使用 zookeeper 作为配置中心,当然也不一定非要使用 zookeeper,nacos 也可以,只要你在 soul-admin 修改下相关的配置即可。

我这次启动 soul-examples-dubbo 时,还是遇到不少问题的,首先是 zookeeper 的安装,就这个问题我都搞了三四个小时,按照网上的配置一直不成功,最后才发现是因为配置的 JAVA_HOME 路径里有空格,为了个小问题折腾了这么久,我真是要气死。。。

dubbo 服务和 http 服务的使用方式还是有很大区别的,由于对这一块还不是很了解,还查了一些资料。dubbo 是基于 TCP 协议的 rpc,http 基于 HTTP 协议的 restful 风格,调用的效率相比之下 Dubbo 比http 效率高。

dubbo这里直接使用的是Service类,启动 example 类,即可通过网关访问。

访问网关代理的 dubbo 时,发现 get ,post 都可以,一开始使用 get 时,还遇到一个问题,如下图![]( https://img-blog.csdnimg.cn/20210116234405781.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3R0TG92ZXRn,size_16,color_FFFFFF,t_70)

我以为 get 请求,必须要再填一个 body,后来经猫大人解答才知道,是因为我 get 请求时,设置的 content-type 是 application/json,导致 body 是空

![image-20210116231202127]( https://img-blog.csdnimg.cn/20210116231218409.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3R0TG92ZXRn,size_16,color_FFFFFF,t_70)

不加 content-type ,这里就自动把地址栏里的 id=1 转为 body:"{"id":"1"}"

![]( https://img-blog.csdnimg.cn/20210116231315557.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3R0TG92ZXRn,size_16,color_FFFFFF,t_70)

万万没想到是这个原因,后续我再看下源码,研究下具体细节。

http 代理 dubbo 服务这块感觉还挺神奇的,而且配置是如此的简单,看到官网说原理是把 http 请求,转成dubbo 协议,内部使用dubbo泛化来进行调用。这块后续也可以研究下。

今天只是简单运行了下 soul-examples-dubbo,明天再继续。