Dubbo服务集群实现负载均衡
作用当某个服务并发量特别大的时候,一个服务延迟太高,我们就需要进行服务集群,例如某个项目一天注册量10万,这个注册功能就必须要进行集群了,否则一个服务无法应付这么大的并发量
企业级项目多个服务集群,每个服务都放不同机器,不仅能实现负载均衡,也能进行容错;就算一个机器挂了,其他机器可以继续服务
多个服务也提供权重设置,来动态设置请求分发量
实现方法dubbo的服务集群很简单,只需要配置文件里改个端口即可,其他代码不需要动
代码实现在之前Provider子模块项目的基础上,直接修改dubbo-demo-provider.xml的端口号即可(端口号只要不被占用即可,不需要和本文章的端口号一样)
12<!--使用dubbo协议在20880端口暴露服务--><dubbo:protocol name="dubbo" port="20880"/>
修改后:
12<!--使用dubbo协议在20881端口暴露服务--><dubbo:protocol name="dubbo" port="2 ...
Dubbo抽取服务提供者和消费者的共同接口
抽取原因抽取前需要在服务提供者以及消费者模块中分别定义一次接口,抽取后只需要定义一次即可,可以提高开发的效率
新建模块新建一个子模块项目存放接口,我命令为Api
创建接口在java文件夹中新建service文件夹,再创建一个接口,该接口和服务提供者以及消费者的接口路径、名称要一样
删除接口然后删除掉服务提供者和消费者的接口,删除后服务提供者以及消费者会报错
引入存放接口模块的依赖引入的依赖路径在Api模块的pom.xml,如下图:
在服务提供者以及消费者pom.xml的dependencies节点中引入依赖
12345<dependency> <groupId>org.example</groupId> <artifactId>Api</artifactId> <version>1.0-SNAPSHOT</version></dependency>
至此,共同接口抽取完成
Maven出现错误:"Parent, please verify your project structure"的解决办法
问题该错误出现在使用parent节点继承其它模块的依赖版本号时
解决方法在parent节点加入<relativePath/>,完整parent节点如下:
123456<parent> <groupId>org.example</groupId> <artifactId>Parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath/></parent>
Maven使用parent统一管理依赖版本
新建子模块新建一个Maven子模块并命名为Parent,不需要勾选Create from archetype,删除src文件夹
添加节点添加一个dependencyManagement节点,在dependencyManagement节点内添加dependencies节点,并在dependencies节点内添加依赖
123456<parent> <groupId>org.example</groupId> <artifactId>Parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath/></parent>
pom.xml如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 ...
IntelliJ IDEA创建Maven多模块项目
前提已经创建好一个Maven项目(在创建这个项目时不需要勾选Create from archetype),可以直接删除它的src文件夹,我们把该项目称为父模块
创建鼠标右击该父模块,选择New >> Module,然后像新建项目那样操作即可
结果
消费Dubbo服务
新建一个子模块项目名称为Consumer
引入依赖12345678910111213141516171819202122232425262728293031323334353637383940<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.0</version></dependency><dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version></dependency><dependency> <groupId>org.apache.curator</groupId> <artifactId ...
发布Dubbo服务
新建项目新建一个Maven项目名称为DubboDemo,在该项目下新建一个子模块项目名称为Provider
创建java和resources文件夹
引入依赖12345678910111213141516171819202122232425262728293031323334353637383940414243444546<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.0</version></ ...
使用Dubbo Admin控制台
下载阿里云盘链接:https://www.aliyundrive.com/s/nZaiPAfGKnq
安装安装一个Tomcat7,平时不使用,专门用来运行Dubbo Admin控制台,安装步骤 :安装 Tomcat | LeDao 的博客 (zoutl.cn)
删除Tomcat7的安装目录webapp/ROOT文件夹中的全部文件(该ROOT文件夹为直接输入端口号时显示的Tomcat主页)
解压下载的dubbo-admin-2.6.0.war,复制解压后的所有文件到webapp/ROOT文件夹中
启动必须先启动Zookeeper,如何启动查看:Windows10 安装 ZooKeeper | LeDao 的博客 (zoutl.cn)
双击Tomcat7的安装目录bin文件夹中的startup.bat运行Tomcat7,在浏览器地址栏输入localhost:8080,输入用户名和密码,默认用户名和密码都是root
如果输入localhost:8080后出现下面图片所示的界面,说明8080端口被占用了,那么直接修改Tomcat7的默认端口,去修改Tomcat7的配置文件server.xml ...
IntelliJ IDEA创建Maven项目
新建
选择Maven项目、JDK版本、Maven Archetype(选maven-archetype-webapp,可以不创建后面再加入)
取名
取名以及选择项目路径
填写配置
选择本机的Maven安装路径、配置文件、仓库路径
CentOS7安装ZooKeeper
下载创建一个文件夹存放ZooKeeper,进入该文件夹后使用swet命令下载apache-zookeeper-3.7.0-bin.tar.gz(我的阿里云CentOS7服务器中使用wge命令)
1wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
解压1tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
配置进入conf文件夹
1cd /root/zookeeper/apache-zookeeper-3.7.0-bin/conf/
复制zoo_sample.cfg到当前目录,并命令为zoo.cfg
1cp zoo_sample.cfg zoo.cfg
运行进入解压后的文件夹apache-zookeeper-3.7.0-bin
启动1./bin/zkServer.sh start
查看状态查看当前状态,看到下图说明启动成功
1./bin/zkServer.sh status
也进入客户端查看运行状态,看到 ...