• dubbox 学习


    目录

     

    编译源码

    dubbox是没有安装包的,所以我们只能先下载源码

    直接从最新源码下载的话  可能会有各种问题,所以一定要选择一个发行版来下载  地址:https://github.com/dangdangdotcom/dubbox/releases

    下载后就开始编译吧

    mvn install maven.test.skip=true

    发布dubbo的jar包到私库

    dubbo的jar包在 dubbo/target/dubbo-2.x.x.jar (应该是2.8以上的版本)

    然后将该jar包发布到私库(关于私库搭建相关参照 如何上传jar包到第三方仓库 )

    mvn deploy:deploy-file 
      -DgroupId=com.alibaba 
      -DartifactId=dubbo 
      -Dversion=2.x.x 
      -Dpackaging=jar 
      -Dfile=dubbo/target/dubbo-2.x.x.jar 
      -Durl=http://192.168.0.170:8081/repository/3rd-part/ 
      -DrepositoryId=nexus

    然后将项目的maven源改为私库,这样就可以使用dubbox的jar包了

    安装dubbo-admin

    在dubbo-admin/target下会找到一个war包,这个是dubbox的管理网页,放到tomcat下,启动tomcat会自动解压并运行。

    刚安装的tomcat需要设置用户信息才能访问  

    编辑文件 tomcat/conf/tomcat-users.xml   (给tomcat用户添加角色manager-gui)

      <role rolename="tomcat"/>
      <role rolename="role1"/>
      <user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
      <user username="both" password="tomcat" roles="tomcat,role1"/>
      <user username="role1" password="tomcat" roles="role1"/>
    </tomcat-users>

    我们还需要修改解压后的配置文件:进入解压后的目录,编辑WEB-INF/dubbo.properties

    dubbo.registry.address=zookeeper://192.168.0.216,192.168.0.217,192.168.0.218
    dubbo.admin.root.password=root  
    dubbo.admin.guest.password=guest

    主要是设置dubbo的注册zookeeper地址和访问网站的登录信息(root:root,guest:guest)

    安装monitor

    这里可以使用一个开源的修改版  git clone https://git.oschina.net/handu/dubbo-monitor.git 

    下载之后进入目录,有一个sql文件夹,根据sql内容创建数据库和表

    然后编辑文件 src/main/resources/application.properties  (设置数据库连接及zookeeper注册地址)

    dubbo.application.name=dubbo-monitor
    dubbo.application.owner=Ray
    dubbo.registry.address=zookeeper://192.168.0.216,192.168.0.217,192.168.0.218
    dubbo.protocol.port=6060
    
    # Database Settings
    db.url=jdbc:mysql://192.168.0.250:3306/monitor?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8
    db.username=root
    db.password=123
    db.maxActive=500
    
    # System Manager
    manager.username=admin
    manager.password=admin

    Springboot + dubbox + spring-boot-starter-dubbo(provider和customer都是dubbox)

     这种方式是最简单粗暴的,本身通过springboot就已经简化了很多配置和操作,再加上某伙计写的starter,更是6的飞起。

    这里简单说说主要的代码,后面附上代码(代码来自参考中的文章,稍有改动)

    1.api 这个是服务提供者的接口,消费者也需要依赖这个接口。这里就是普通的接口,没有特别的。

    2.provider 提供者,需要实现api并指定注册地址及协议、端口等信息

    ServiceImpl.java

    @Service(version = "1.0.0")
    public class BusinessServiceImpl implements BusinessService {
        @Override
        public BusinessDomain findBusiness(int id, String name) {
            return null;
        }
    }

    注意这里的注解 @Service,不是Spring的,而是 com.alibaba.dubbo.config.annotation.Service

    通过这个注解可以设定服务的版本、重试次数、甚至是负载均衡策略等。此外,消费端要匹配这个Service中的version

    application.yml

    server:
      port: 8087
    spring:
      dubbo:
        application:
          name: business-provider
        registry:
          protocol: zookeeper
          address: node1:2181,node2:2181,node3:2181
        protocol:
          name: dubbo
          port: 20880
          host: server1.demo.cn
        scan: cn.veryjava.business.provider

    protocol.name是提供服务的协议,这里给的是dubbo,当然也可以用其他的如rest

    protocol.host是指定部署服务的IP,当然也可以用hostname代替,如localhost;

    registry.address是注册地址,即zookeeper集群的节点信息;

    3.consumer 消费者

    ConsumerController.java

    @Controller
    public class BusinessConsumerController {
    
        @Reference(version = "1.0.0")
        public BusinessService businessService;
    
        @RequestMapping("/business")
        @ResponseBody
        public BusinessDomain getBusiness() {
            return businessService.findBusiness(1, "businessaaa");
        }
    }

    application.yml

    server:
      port: 8088
    spring:
      dubbo:
        application:
          name: business-consumer
        registry:
          protocol: zookeeper
          address: node1:2181,node2:2181,node3:2181
        scan: cn.veryjava.business.consumer.controller

    代码在此

    其他

     1.Dubbo消费者启动报错 Failed to check the status of the service

    出现这个错误的时候,在dubbo admin中查看消费者,显示没有提供者(但提供者运行正常且可访问)

    我的原因是消费者没有指定服务版本,在消费者配置文件引用服务的时候加上服务版本即可(提供者的@Service注解)

    <dubbo:reference id="testService" version="1.0.0" interface="com.product.service.ITestService" />

    参考:

  • 相关阅读:
    Vue+ElementUI 安装与应用
    python 之serial、pyusb 使用开发
    ASP.NET Swagger 创建与汉化生成 API说明文档
    DataGridView绑定数据源后动态删除行
    MySql动态拼接SQL并动态赋值
    MySql存储过程
    DEV控件之TreeList使用
    DataGridView单元格格式化
    ajax通过PUT方式调用WEBAPI
    解决跨域session 同步问题
  • 原文地址:https://www.cnblogs.com/TiestoRay/p/6594216.html
Copyright © 2020-2023  润新知