• Dubbo的负载均衡


    springboot+dubbo+zookeeper时,

    如果有两个服务提供者,想要实现负载均衡时:

    provider1的application.properties配置:

     1 server.port=8081
     2 server.context-path=/
     3 
     4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
     5 spring.datasource.url=jdbc:mysql://localhost:3306/teach?useSSL=false
     6 spring.datasource.username=root
     7 spring.datasource.password=root
     8 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
     9 
    10 mybatis.type-aliases-package=com.aaa.lee.dubbo.model
    11 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    12 
    13 # dubbo的配置
    14 # 配置dubbo的应用名(在dubbo的admin项目,可以非常直观的看出来该项目是一个什么项目)
    15 # dubbo-admin--->生产者/消费者-->application name-->需要根据当前项目所提供的功能进行命名
    16 dubbo.application.name=user-provider
    17 # protocol:协议
    18 # 配置该项目远程调用的时候所使用的协议-->dubbo(tcp,udp....)
    19 # 在之前所有的项目使用的协议都是http
    20 dubbo.protocol.name=dubbo
    21 # 配置dubbo所必须使用的通讯端口号(21881,21880,20881,20880....)
    22 # 在dubbo的官网中所提供的项目demo,就使用的是以上端口号
    23 dubbo.protocol.port=20881
    24 # zookeeper的通讯地址
    25 # dubbo配置zookeeper是因为dubbo框架集成zookeeper
    26 # provider最终需要向zookeeper注册服务,也就是说必须要让provider项目知道zookeeper是哪一个!
    27 dubbo.registry.address=zookeeper://192.168.23.160:2181
    28 # provider项目必须要让zookeeper知道具体是哪一个类/哪一些类需要注册进zookeeper中
    29 # 也就是说必须要让zookeeper知道所注册进注册中心的实现类是谁
    30 # dubbo中也提供了包的扫描
    31 # dubbo.扫描.基础包(该包以及所有的子包中的所有类都会注册进zookeeper)
    32 dubbo.scan.base-packages=com.aaa.lee.dubbo.service.impl

    provider2的application.properties配置:

     1 server.port=8083
     2 server.context-path=/
     3 
     4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
     5 spring.datasource.url=jdbc:mysql://localhost:3306/teach?useSSL=false
     6 spring.datasource.username=root
     7 spring.datasource.password=root
     8 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
     9 
    10 mybatis.type-aliases-package=com.aaa.lee.dubbo.model
    11 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    12 
    13 # dubbo的配置
    14 # 配置dubbo的应用名(在dubbo的admin项目,可以非常直观的看出来该项目是一个什么项目)
    15 # dubbo-admin--->生产者/消费者-->application name-->需要根据当前项目所提供的功能进行命名
    16 dubbo.application.name=user-provider
    17 # protocol:协议
    18 # 配置该项目远程调用的时候所使用的协议-->dubbo(tcp,udp....)
    19 # 在之前所有的项目使用的协议都是http
    20 dubbo.protocol.name=dubbo
    21 # 配置dubbo所必须使用的通讯端口号(21881,21880,20881,20880....)
    22 # 在dubbo的官网中所提供的项目demo,就使用的是以上端口号
    23 dubbo.protocol.port=20882
    24 # zookeeper的通讯地址
    25 # dubbo配置zookeeper是因为dubbo框架集成zookeeper
    26 # provider最终需要向zookeeper注册服务,也就是说必须要让provider项目知道zookeeper是哪一个!
    27 dubbo.registry.address=zookeeper://192.168.23.160:2181
    28 # provider项目必须要让zookeeper知道具体是哪一个类/哪一些类需要注册进zookeeper中
    29 # 也就是说必须要让zookeeper知道所注册进注册中心的实现类是谁
    30 # dubbo中也提供了包的扫描
    31 # dubbo.扫描.基础包(该包以及所有的子包中的所有类都会注册进zookeeper)
    32 dubbo.scan.base-packages=com.aaa.lee.dubbo.service.impl

    1、当使用dubbo的负载均衡时,两个provider的dubbo的端口号绝对不能一样;

    2、把所有属于同一类型的dubbo-provider项目标识给zookeeper,使用的是dubbo.application.name来进行标识,

    也就是说所有同一类型的provider的application.name必须要保持一致,如果provider的name不保持一致,那么不会形成负载均衡。

    乾坤未定,你我皆是黑马
  • 相关阅读:
    HDU1325 Is It A Tree? (并查集判断有向图是否是树)
    DRF 视图家族及路由层补充
    DRF 外键字段深度查询优化、ListSerializer辅助完成群改
    DRF的orm多表关系补充及serializer子序列化
    DRF序列化
    DRF的封装:APIView类及五大模块
    DRF简介/接口概念
    vue-axios插件、django-cors插件、及vue如何使用第三方前端样式库:element/jQuery/bootstrap
    Vue项目的创建、路由、及生命周期钩子
    Vue框架-组件的概念及使用
  • 原文地址:https://www.cnblogs.com/liuqijia/p/11493879.html
Copyright © 2020-2023  润新知