关于Dubbo开发项目,我有几个疑问

关于Dubbo开发项目,我有几个疑问

  1. 我们基于Dubbo来开发的分布式项目,都要放在一个大项目模块中,这个大项目模块也有依赖,那么我们实际开发中,如何将这个大项目和还有子项目各个拆分到各个机器上,并且还能有依赖的联系。

  2. Dubbo这种分布式开发模式,将各个项目拆分到各个机器上后,是如何做到所有项目的统一校验的?我们SpringCloud有Zuul的过滤器来做到,Dubbo呢?

  3. 我们Dubbo会向连接的注册中心定时发送心跳机制是默认自己会实现的,还是必须自己在application.properties中配置,还是在哪里配置?

  4. dubbo.registry.file=${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache

    我想问一下这个配置文件配置的这句代码,这 ${user.home} 和${spring.application.name}引用的是哪里的?还有我想问一下,这整句代码配置的效果是为Dubbo配置指定的缓存文件吧?这个缓存文件是保存到Zookeeper服务器还是本地还是哪里?




正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好

maven是支持按模块分别打包的,同学可以把每个maven模块理解成一个独立的程序。

整体流程是:

1、打包producer,

2、上传到producer到maven私服,

3、打包consumer

4、部属producer和consumer这两个jar包。

具体操作流程如下:

打包:

首先,由于是spring boot 项目,所以在模块的 pom里加

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>

然后在idea里找到maven,并打开producer模块的lifecircle,双击package打包

此时会有一个producer的jar产出。

这时需要deploy部署到私有maven服务器,但是由于通常我们个人开发者不具有私有maven,所以在课程里才没有演示多模块项目的部属过程。

​如果同学公司有私有maven,那么就可以deploy,然后按同样方法package我们的consumer,会有一个consumer的jar产出,之后就像普通spring项目一样,在不同的机器上java -jar运行就可以了。

祝学习愉快~


好帮手慕阿园 2021-02-23 17:40:47

同学你好

  1. 所有的依赖都是通过Maven管理的,Maven打包时的作用就是根据pom.xml文件里面的配置信息,当我们的程序有多个模块组成时,我们可以使用Maven来组织聚合我们的项目。Maven聚合项目可以通过父子继承和模块聚合来实现。使用Maven来聚合项目,会有一个顶层项目,这个顶层项目并没有实际的业务功能,只是用来组织各个下级的模块项目,并且对项目的依赖插件等进行统一管理。所以打包项目时只需要在顶层项目中执行packing,即可将整个项目打包,如果子项目有相互依赖的需要install将被引用的子项目安装进maven的本地仓库中,安装后所有项目都可以引用该项目

  2. dubbo项目是controller层和service层通过dubbo通信,拆分项目只会将 controller层和service层拆分开来分别部署到不同服务器,而统一校验功能一般写在controller层,而所有的controller层是部署在一台服务器上,没有拆分,所以dubbo 可以自定义filter 实现公用过滤器处理;并且dubbo也是有网关的,同学感兴趣的话可以查阅些相关资料

  3. dubbo的心跳机制是默认实现的,如果没有配置的话,默认是60s;

  4. user.home 代表当前操作系统的用户目录,spring.application.name代表项目名称;这个缓存文件存储到本地电脑,以保证即使zookeeper挂了也不影响consumer调用provider,因为provider地址都缓存在本地了,zookeeper连不上还可以从缓存文件里找

祝学习愉快~


  • 提问者 机电渣渣 #1

    我还有点不明白,比如我们这个视频演示的dubbo-practice项目包含了consumer和producer两个子项目,consumer这个子项目中有controller和service层,producer有service层,像比如这整个dubbo-practice项目要以分布式放到各个机器上的时候,是从哪里开始打包来发布上线?哪个部分需要放到一个机器上?请你帮我捋一捋。

    2021-02-23 17:59:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师