• dubbo框架的使用方法。。。


    图解。

    一、dubbo使用须知。

        1.所有的service层必须要使用service注解(之前用的spring框架的,现在用dubbo框架所提供的@Service注解)
        //    @Service(timeout=单位是秒)
            
            
        2.在配置dubbo端口号的时候
            只是provider项目和consumer项目直接数据通讯的时候所必需的要遵循的端口号
            也就是说必须要注意无论是provider还是consumer,所配置的dubbo端口号必须要保持一致
            端口号随意定制!!!
            

     

     1.1.provider的config下的application.properties的配置。   和数据库交互   和consumer 订制dubbo的端口号配置     zookeeper的端口号:2181!!!

    server.port=8081
    server.context-path=/zxf
    
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/qy200?useSSL=false
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
    
    mybatis.type-aliases-package=com.aaa.zxf.dubbo.model
    mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    
    #dubbo 的配置  dubbo的应用名。  在dubbo的项目 可以直接看出改项目是一个什么样的项目
    #dubbo-admin  生产者/消费者------application name----需要根据当前项目
    #所提供的功能进行命名
    
    dubbo.application.name=user-provider #协议 protocol 配置该项目远程调用的时候所用的协议--dubbo TCP 和 upd..
    dubbo.protocol.name=dubbo #配置dubbo 所必需使用的端口号 # 注意!!! provider 和 consumer 所配置的端口号保持一致 号 随意订制。
    dubbo.protocol.port=20881 #zookeeper的通讯地址 dubbo框架集成zookeeper #provider 需要向zookeeper注册服务,要让provider知道 zookeeper是哪一个! #【注意!!!】 dubbo 和 provider 以及 consumer的zookeeper的配置中 所有的zookeeper集群 leader 和 follower都可以配 # 因为最终 无论是leader 还是follower 都可以配 (除非leader 宕机) # zookeeper的端口号就是 2181 需要保持一致!!

    dubbo.registry.address=zookeeper://192.168.132.133:2181 # provider 需要让zookeeper知道 那一个类需要 注册到zookeeper中 #dubbo 包的扫描 改包以及所有的子类 都会注册到zookeeper中
    dubbo.scan.base-packages=com.aaa.zxf.dubbo.service.impl # dubbo 根据application 中所配置的dubbo.scan.base-packages 属性来判定 该项目是 provider 还是 consumer #开启我的 zookeeper

    1.2 consumer 下的config application.properties的配置。。。 调用provider,负责和用户交互。 HTML 。。。 配置文件中,  少一个对包的扫描!!!

    server.port=8084
    server.context-path=/zxf
    
    #dubbo 的配置
    #consumer 中 dubbo的配置和provider中只差了一行 不需要配置扫描包
    dubbo.application.name=user-consumer
    
    #dubbo的协议名称
    dubbo.protocol.name=dubbo
    
    #dubbo 的协议端口号  provider  和  consumer 需要保持一致!!!
    dubbo.protocol.port=20881
    
    #注册中心的地址  leader 和 follower的ip   都可以!!!
    dubbo.registry.address=zookeeper://192.168.132.133:2181
    
    
    # thymeleaf  开启不严谨的检查方式 需要导入jar包
    spring.thymeleaf.mode=LEGACYHTML5
    
    # springboot 使用 thymeleaf 关闭缓存
    spring.thymeleaf.cache=false
     3.无论是在dubbo还是在provider以及consumer的zookeeper配置中
            所有的zookeeper集群无论是leader还是follower都可以配
            eg:
                zookeeper01是leader
                    dubbo-admin--把zookeeper的配置改为-->zookeeper01
                zookeeper02是leader
                    dubbo-admin--把zookeeper的配置改为-->zookeeper01
                因为最终无论配置是leader还是follower都会把请求转交给leader(除非leader宕机)
        //        所有的zookeeper配置的端口号都应该是2181
                因为dubbo中端口号就是2181
                
        4.dubbo如何判定项目为服务生产者还是服务消费者?
            是根据application.properties中所配置的dubbo.scan.base-packages属性来进行判定该项目是provider还是consumer
    
        5.无论是provider还是consumer,service包必须要保持一致
            provider-->IUserService:com.aaa.lee.dubbo.service
            consumer-->IUserService:com.aaa.lee.dubbo.service
            并且两个接口的名字也必须要保持一致!!!!
        //    接口中方法也必须要保持一致(返回值名称,返回值类型,方法名,方法参数)
            
        6.consumer项目中的controller需要调用service的时候,不能再使用@Autowired注解进行注入service
            因为整个consumer项目中只有service的接口并没有实现类
        //    需要使用dubbo所提供的@Reference
            
        7.provider和consumer的application.properties配置文件中dubbo.application.name不能一样!!!!
            provider:
                dubbo.application.name=user-provider
            consumer:
                dubbo.application.name=user-consumer
                
        8.无论是provider还是consumer项目都必须要把zookeeper的地址配置一致!!!
            不要求必须配置leader--->follower会自动把请求转交给leader
            
        9.所有的实体类必须要实现序列化接口
            因为实现了序列化接口的实体类都可以把实体类以流的形式进行发送
                provider会把User实体类转换为二进制流----->发送给consumer---->consumer所接收到的并不是一个User对象,而是一个二进制流
            ---->consumer必须要把整个二进制流转换为User对象才可以使用!
                也就是说无论是consumer还是provider都必须要实现序列化接口


           

  • 相关阅读:
    ndk的注意事项
    git
    centos 7 linux x64
    linuxGame:文明5汉化
    pycharm something
    linux soft
    jsfl脚本设置导出AS链接名遇到的奇怪问题
    jsfl调整笔刷的笔触和颜色
    [转]FINDSTR正则表达式小结
    [转]关于SVN的操作批处理示例
  • 原文地址:https://www.cnblogs.com/ZXF6/p/11479274.html
Copyright © 2020-2023  润新知