SSM+Maven+Dubbo+Zookeeper简单项目实战以及易错注意点

最近为了熟悉Dubbo远程过程调用架构的使用,并结合SSM+Maven整合了简单的一套项目实战


直接看项目结构图
在这里插入图片描述
各模块介绍
dubbo-common:存放项目需要的公众类,像查询模型、数据库实体模型等
dubbo-config:存放项目所需的公众配置文件,像日志、数据库连接信息配置文件等
dubbo-customer:Dubbo框架的服务消费方,也是http请求的入手
dubbo-interface:存放连接服务消费方和服务提供方的公共接口
dubbo-parent:存放整个项目所需的依赖,是其他模块的父类
dubbo-provide:Dubbo框架的服务提供方,负责处理业务逻辑和数据库请求

一般也有人把数据库操作单独整合成一个模块(dubbo-dao),其实都一样…


前置工作:安装注册中心Zookeeper,我选择的是在linux系统下安装,安装步骤详情网上有很多教程
注意:安装配置完之后记得打开该linux系统2181端口的防火墙


具体代码实现细节这里就不过多介绍了,这算是Dubbo最简单的入门应用了吧。

讲一下我在使用过程中遇到的一些问题:

  1. 要将dubbo-common中的实体模型,查询模型等实现序列化接口(就是在服务消费方和服务提供方之间传递或使用的对象)

  2. com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response...
    简单地说就是dubbo服务超时
    dubbo默认的时间是500ms,超过这个时间它会重新访问service层,最多尝试三次

    所以就发生了下面的一个很奇怪的现象:
    我第一次在浏览器访问服务消费方的接口,报500这个 com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response...异常(连接服务提供方超时)
    但是第二次回车,居然就访问成功了(访问服务提供方没有超时)

  3. 设置超时时间:
    规则:
    1.Consumer端配置优于Provider配置,优于全局配置;
    2.方法级配置别优于接口级别优于全局配置;
    根据规则1,纵使消费端配置优于服务端配置,但消费端配置超时时间不能随心所欲,需要根据业 务实际情况来设定。如果超时时间设置得太短,复杂业务本来就需要很长时间完成,服务端无法在设 定的超时时间内完成业务处理;如果超时时间设置太长,会由于服务端或者网络问题导致客户端资源大量线程挂起


    Dubbo服务消费端,全局超时配置
    <dubbo:consumer timeout=“5000” />

    Dubbo服务消费端指定接口或者接口中方法配置超时
    <dubbo:reference interface=“com.fei.CustomerrService” timeout=“3000”>
    <dubbo:method name=“sayHello” timeout=“5000” />
    </dubbo:reference>

    Dubbo服务提供端,全局超时配置
    <dubbo:provide timeout=“5000” />

    Dubbo服务提供端指定接口或者接口中方法配置超时
    <dubbo:reference interface=“com.fei.CustometService” timeout=“3000”>
    <dubbo:method name=“sayHello” timeout=“5000” />
    </dubbo:reference>

猜你喜欢

转载自blog.csdn.net/shijiujiu33/article/details/89426643