dubbo配置负载均衡、集群环境
再用dubbo作为项目架构的时候,给consumer消费者用nginx提供了负载均衡策略和集群的实现,
但是想了下,consumer再多,但是提供者还是一个,最后还不都是落到了这一个provider上面?
举个列子:
一个饭店有1个后厨在做饭,
前台有100个点菜的服务员,
100个顾客来点餐,每个服务员都来告诉后厨做饭的,那么后厨...
Dubbo实现负载均衡,一般是对服务的提供者来实现我们的集群管理,也就是负载均衡,然后服务的消费者在请求消费的时候,通过一定的算法进行寻址(权重),可以参考下Nginx
Dubbo提供了四种负载均衡策略
随机 Random LoadBalance 按照权重设置的大小,随机
轮询 RoundRobin LoadBalance 例如:a b c a执行完b执行然后c,然后在到a...
最少活跃调用数(权重)LeastActive LoadBalance
活跃数指调用前后计数差,优先调用高的,相同活跃数的随机。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
一致性Hash ConsistentHash LoadBalance
相同参数总是发送到同一个提供者,如果这个提供者挂掉了,它会根据它的虚拟节点,平摊到其它服务者,不会引起巨大的变动
注意*:缺省为random 随机 (也就是说,不配置负载均衡策略的时候,默认为random)
配置负载均衡级别的方法:
可以给服务配置级别也可精确到每个方法的级别
服务端服务级别配置:
<dubbo:service interface="接口名" loadbalance="roundrobin"/>服务端方法级别配置:
<dubbo:service interface="接口名">
<dubbo:method name="方法名" loadbalance="均衡策略名"/>
</dubbo:service>
客户端服务级别配置:
<dubbo:reference interface="" loadbalance="roundrobin" />客户端方法级别配置:
<dubbo:reference interface="" loadbalance="roundrobin">
<dubbo:method name="方法名" loadbalance="均衡策略明"/>
</dubbo:reference>
我们也可以通过可视化界面管理平台来操作
配置完负载均衡下面,就要来配置我们的dubbo集群了
Dubbo 集群配合
具体的做法是对服务提供者的配置文件进行修改 ,配置文件里面的application name相同,dubbo则会认为是同一集群。
部署多个集群只需要步骤:
application name相同
<dubbo:application name="服务名"/>
协议端口需要修改不同
<dubbo:protocol name="dubbo" port="端口需要修改,不能重复"/>
下面是我配置服务的案例:
需求:配置一个集群环境,两个服务提供者
provider01
<?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"> <!-- 配置应用名
注意:配置集群的情况下需要同一集群的name值相同
-->
<dubbo:application name="dubbo-provider"/> <!-- 配置注册中心:
address:注册中心的ip:port
注意:如果注册中心为ZooKeeper且为集群,那就要讲集群中所有的IP:PORT添加到该属性当中-
protocol:注册中心类型
-->
<dubbo:registry address="169.254.18.25:2181,169.254.18.25:2182,169.254.18.25:2183" protocol="zookeeper"/>
<!-- 配置协议与端口 -->
<dubbo:protocol name="dubbo" port=""/>
<dubbo:protocol name="hessian" port=""/> <!-- 配置注册接口
ref:引用实现类,因为我们在实现类里面加了@Service扫描注解
-->
<dubbo:service protocol="dubbo" interface="cn.arebirth.dubbo.service.UserDubboService" ref="userDubboServiceImpl" loadbalance="roundrobin"/>
<dubbo:service protocol="hessian" interface="cn.arebirth.dubbo.service.CarDubboService" ref="carDubboServiceImpl" loadbalance="roundrobin"/>
</beans>
这个服务配置完后,打包发布到服务器运行,我们会在dubbo-admin的控制台上发现这样的内容

provider02
<?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"> <!-- 配置应用名
注意:配置集群的情况下需要同一集群的name值相同
-->
<dubbo:application name="dubbo-provider"/> <!-- 配置注册中心:
address:注册中心的ip:port
注意:如果注册中心为ZooKeeper且为集群,那就要讲集群中所有的IP:PORT添加到该属性当中-
protocol:注册中心类型
-->
<dubbo:registry address="169.254.18.25:2181,169.254.18.25:2182,169.254.18.25:2183" protocol="zookeeper"/>
<!-- 配置协议与端口 -->
<dubbo:protocol name="dubbo" port=""/>
<dubbo:protocol name="hessian" port=""/> <!-- 配置注册接口
ref:引用实现类,因为我们在实现类里面加了@Service扫描注解
-->
<dubbo:service protocol="dubbo" interface="cn.arebirth.dubbo.service.UserDubboService" ref="userDubboServiceImpl" loadbalance="roundrobin"/>
<dubbo:service protocol="hessian" interface="cn.arebirth.dubbo.service.CarDubboService" ref="carDubboServiceImpl" loadbalance="roundrobin"/>
</beans>
我们在把provider02打包发布到服务器上运行,我们会看到我们的服务均已注册成功完毕,
此时也意味着集群搭建完毕了

仔细观察我们上边的配置文件不难发现,其实就是一个端口不同,其余都是相同的,
ps:
搭建集群环境注意:
同一集群环境中应用名必须一致
端口必须不同
dubbo配置负载均衡、集群环境的更多相关文章
- 简单的 Nginx+Tomcat 配置负载均衡集群
简单 Nginx+Tomcat 配置负载均衡集群 前期准备 解压两个tomcat,修改端口号 server1:8081 server:8082 同时启动 nginx官网下载解压版nginx 创建一个简 ...
- nginx集群:nginx配置负载均衡集群(nginx1.18.0)
一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...
- nginx+php负载均衡集群环境中的session共享方案梳理
在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...
- nginx+tomcat 配置负载均衡集群 (转载)
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
- Nginx+PHP负载均衡集群环境中Session共享方案 - 运维笔记
在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...
- Nginx+Tomcat 配置负载均衡集群
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
- Nginx + Tomcat 配置负载均衡集群简单实例
一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...
- Nginx+tomcat配置负载均衡集群
操作系统版本:Centos 6.4 Nginx版本:nginx-1.3.15.tar.gz wget http://nginx.org/download/nginx-1.5.9.tar.gz JDK版 ...
- LVS-DR实现mysql负载均衡集群
lvs-dr实现mysql负载均衡集群 环境说明: 服务器的操作系统均为centos7,vip和rip在同一网段,使用lvs-dr模型来实现mysql集群服务 所有服务器均已配置好处VIP外的静态IP ...
- LVS-NAT:搭建HTTP及HTTPS负载均衡集群
目录 LVS-NAT:搭建HTTP及HTTPS负载均衡集群 环境说明: 搭建NAT模式的HTTP负载集群 1. 配置好IP地址信息 2. DR上开启IP转发 3.DR上配置lvs-nat的转发机制 4 ...
随机推荐
- Gym 100851 题解
A: Adjustment Office 题意:在一个n*n的矩阵,每个格子的的价值为 (x+y), 现在有操作取一行的值,或者一列的值之后输出这个和, 并且把这些格子上的值归0. 题解:模拟, 分成 ...
- PAT 天梯杯 L2-014 列车调度
火车站的列车调度铁轨的结构如下图所示. Figure 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨道进入,最后从出口 ...
- poj 2352 & Ural 1028 数星星 题解
一道水题,由于x坐标递增y坐标也递增于是前缀和统计即可,用树状数组实现. #include<bits/stdc++.h> using namespace std; const int ma ...
- [整理] jQuery插件开发
1.类级别的插件开发 类级别的插件开发,可似为给jQuery类添加方法,调用方式:$.你的方法(),如:$.ajax() 函数. 1.1.给jQuery类添加方法 $.alertMsg = funct ...
- [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包
本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...
- Java 内省(Introspector)和 BeanUtils
人生若只如初见,何事秋风悲画扇. 概述 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息, ...
- PHP 扩展开发初探
什么是 PHP 扩展 通俗说,PHP 扩展是增强 PHP 语言功能的插件.PHP 提供了编程语言的语法,比如分支.循环.函数.类等,这些是 PHP 本身所提供的.在某些情况下需要在 PHP 语言的基础 ...
- [VB.NET Tips]对于基本数据类型的提示
1.类型字符 有时需要直接量后面加上类型字符以明确指定类型,下面把常用的类型字符列出来 类型 字符 Short S Integer I Long L Decimal D Char c Single F ...
- 【linux】【jenkins】自动化运维二 安装插件
gitlab安装教程参考:https://www.cnblogs.com/jxd283465/p/11525629.html 1.Maven Integration Plugins Jenkins安装 ...
- 【linux】【tomcat】tomcat8.5安装
系统环境:Centos7 1.下载tomcat8.5 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.45/b ...