springboot+dubbo+zookeeper+dubbo可视化工具整合,直接通过注解使用,而不是加载xml

先引入dubbo相关包

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.8.3</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.5</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.32.Final</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>

一、服务端

准备好provider.xml,放入resources目录,随便放哪个位置,只要能加载

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--当前项目在整个分布式架构里面的唯一名称,计算依赖关系的标签-->
<!--    <dubbo:application name="provider" owner="generateArchivePackage"/>-->
    <dubbo:application name="provider" owner="generateArchivePackage">
        <dubbo:parameter key="qos.enable" value="true"/>
        <dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
        <dubbo:parameter key="qos.port" value="21811"/>
    </dubbo:application>

    <dubbo:monitor protocol="registry"/>

    <!--dubbo这个服务所要暴露的服务地址所对应的注册中心-->
    <!--<dubbo:registry address="N/A"/>-->
<!--    <dubbo:registry address="N/A" />-->
    <dubbo:registry  address="zookeeper://localhost:2181" check="false"/>

    <!--当前服务发布所依赖的协议;webserovice、Thrift、Hessain、http-->
    <dubbo:protocol name="dubbo" port="20880"/>

    <dubbo:annotation package="com.ybarchives.generateArchivePackage.impl.GenerateServiceImpl"/>

    <!--服务发布的配置,需要暴露的服务接口-->
<!--    <dubbo:service-->
<!--            interface="com.ybarchives.generateArchivePackage.IGenerateService"-->
<!--            ref="generateService"/>-->
    <!--Bean bean定义-->
<!--    <bean id="generateService" class="com.ybarchives.generateArchivePackage.impl.GenerateServiceImpl"/>-->
</beans>
1.
<dubbo:annotation package="com.ybarchives.generateArchivePackage.impl.GenerateServiceImpl"/>
2.
    <!--服务发布的配置,需要暴露的服务接口-->
   <dubbo:service-->
          interface="com.ybarchives.generateArchivePackage.IGenerateService"-->
       ref="generateService"/>
    <!--Bean bean定义-->
  <bean id="generateService" class="com.ybarchives.generateArchivePackage.impl.GenerateServiceImpl"/>

重点:1和2任选一种配置

选1【推荐】:这种方式可以在服务端使用@autowired,@value等注解

①需要在客户端impl层加入service注解【是dubbo包的service!】

②需要在启动项加注解

@EnableDubboConfig
@DubboComponentScan

③配置yml加入配置

dubbo:
  application:
    name: provider
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: dubbo
    port: 20882
  monitor:
    protocol: registry

服务端xml示例:

service层

public interface IGenerateService {
    String say();
}

impl层

import com.alibaba.dubbo.config.annotation.Service;

@Service
public class GenerateServiceImpl implements IGenerateService {

    //网上的大部份文章都只有简单的hello,world,
    //该类一旦遇到有其他注解就凉凉,所以provider.xml需要使用dubbo:annotation
    //dubbo:annotation使用后,①springboot启动类就需要使用注解②yml配置加dubbo配置
    @Autowired
    public JdbcTemplate jdbcTemplate;
    @Value("${generatearchivepackage.path}")
    private String doloadPath;

    @Override
    public String say() {
        return "hello";
    }
}

总结:反正在客户端正常写代码就行了,最好加dubbo包的service注解

启动:

1.如果xml使用dubbo:annotation,则在启动类加@注解【推荐】

2.如果xml使用dubbo:service在springboot启动类main方法加这两句代码。

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/provider.xml");
        context.start();

启动成功后dubbo admin出现服务

二、消费端

准备consumer.xml放入resource下面

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="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">
<!--    <dubbo:annotation package="com.ybarchives.generateArchivePackage"></dubbo:annotation>-->
    <!--当前项目在整个分布式架构里面的唯一名称,计算依赖关系的标签-->
    <dubbo:application name="consumer" owner="generateArchivePackage"/>

    <!--dubbo这个服务所要暴露的服务地址所对应的注册中心-->
    <!--点对点的方式-->
<!--    <dubbo:registry address="N/A" />-->
    <dubbo:registry   address="zookeeper://localhost:2181" check="false"/>

    <!--生成一个远程服务的调用代理-->
    <!--点对点方式-->

    <dubbo:reference id="generateService"
                     interface="com.ybarchives.generateArchivePackage.IGenerateService" check="false"/>

</beans>

新建一个同样的包,下面只写一个Service

public interface IGenerateService {
    public String say() ;
}

yml文件写一个配置,如果不写这个会报错

dubbo:
  application:
    name: consumer
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: dubbo
    port: 20882
  monitor:
    protocol: registry

启动项新增注解:

@EnableDubboConfig
@DubboComponentScan或者@EnableDubbo=》@EnableDubboConfig和@DubboComponentScan属于@EnableDubbo

dubbo amdin:

三、使用

1.直接使用注解

@Reference(check = false)  这里还有一个延时的坑,如果服务端代码执行时间过长 ,需要设置timeout = 60000 ,  假如check不设置,或者为true,在服务端挂掉后项目会无法启动,因为启动项加了注解,会自动扫描dubbo相关。

2.通过加载xml文件:这种方式只有在运行

context.getBean

时才会在dubbo amdin显示进程,运行完后马上消失

    public static void main(String[] args) {

        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("META-INF/spring/consumer.xml");
        context.start();
        IGenerateService providerService = (IGenerateService) context.getBean("generateService");
        String str = providerService.say();
        System.out.println(str);
    }

四、其他

zookeeper比较好安装,在网上找其他的文章随便安装就行了。dubbo admin我找了一个war包,迟一点放一个连接下载https://download.csdn.net/download/qq_32736535/88478380,放到tomcat下面可直接运行,D:\T8\webapps\dubbo-admin\WEB-INF\dubbo.properties    找到dubbo.properties修改相关配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,用于快速构建独立的、基于Spring的应用程序。它简化了Spring应用程序的配置和部署过程,并提供了许多嵌入式服务器,如Tomcat、Jetty等。Spring Boot还提供了自动配置的特性,可以根据类路径中的依赖自动配置Spring应用程序。 Dubbo是一款高性能的分布式服务框架,也是阿里巴巴开源的项目。它提供了服务治理、远程通讯和分布式调用等功能,帮助开发人员轻松构建分布式服务化的应用。 Zookeeper是一个开源的分布式协调服务,可以用于实现分布式应用程序的一致性和可靠性。它提供了一个类似于文件系统的层次化的命名空间,并允许开发人员注册、协调和共享各种资源,如配置信息、服务注册和发现等。 当使用Spring Boot结合DubboZookeeper时,可以构建一个高性能、可扩展和可靠的微服务架构。Spring Boot提供了便利的开发和部署方式,Dubbo提供了分布式服务框架的支持,而Zookeeper则提供了分布式协调服务。开发人员可以使用Spring Boot快速构建独立的微服务应用程序,使用Dubbo进行服务间的通信和管理,同时通过Zookeeper进行服务的注册和发现。这样的架构可以方便地实现微服务架构中的资源共享和服务治理等功能,大大简化了开发人员的负担。 综上所述,Spring Boot结合DubboZookeeper可以构建高效、可靠的微服务架构,并提供了便利的开发和部署方式,帮助开发人员构建高性能的分布式应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值