【SaaS - Export项目】27 - Dubbo框架细节问题,Dubbo管理控制台的配置使用(可以查看provider和consumers等信息并进行增删操作)
文章目录
- 1, Dubbo的一些小知识点
- 1.1 Dubbo细节(1) - 提高开发效率
- 1.2 Dubbo细节(2)配置说明(一般用注解,不用xml)
- 1.3 Dubbo细节(3)协议配置
- 1.4 Dubbo细节(4)启动时检查
- 1.5 Dubbo细节(5)负载均衡
- Dubbo管理控制台(dubbo-admin-2.6.0-war安装部署)
- 2.1 Dubbo管理控制台环境搭建步骤
- 2.2 Dubbo管理控制台使用步骤
1, Dubbo的一些小知识点
1.1 Dubbo细节(1) - 提高开发效率
启动提供方服务的两种方式:
1) 部署到tomcat启动,适合正式项目
2) 通过main函数启动,适合开发阶段(提高开发效率,减少调试时间),就是在最后一行写一个阻塞方法。(不在控制台输入字符并回车就一直是启动状态)
/** * Dubbo优化细节一 * 使用main函数启动,用于开发阶段(提高开发效率,减少调试时间) * */
public class StartUp {
public static void main(String[] args) throws IOException {
//1. 读取dubbo配置
ClassPathXmlApplicationContext cxt= new ClassPathXmlApplicationContext("dubbo-provider.xml");
//2. 开启服务
cxt.start();
//3. 让程序阻塞,提供方一直提供服务
System.in.read();
}
}
运行(一直等待) 【注意:需要关闭之前开启的】
输入字符回车就执行结束
1.2 Dubbo细节(2)配置说明(一般用注解,不用xml)
注解配置(【推荐使用】)
默认在第一个工程(provider提供者)的Service是使用dubbo的@Service
第二个工程(consumer消费者)的注入是使用dubbo的@Referencexml配置(就是将注解注入改为使用xml的bean注入)
dubbo-provider.xml
<bean id="helloWordService" class="com.xgf.service.impl.HelloServiceImpl"/>
<dubbo:service >interface="com.xgf.service.IHelloWordService" ref="helloWordService"/>
dubbo-consumer.xml
<!-- 使用xml注入 -->
<!--让当前去获取provider的实现类对象 必须保护相同的id-->
<dubbo:reference interface="com.xgf.service.IHelloWordService" id="helloWordService"/>
1.3 Dubbo细节(3)协议配置
协议一般在服务提供者(provider)一方配置,可以指定使用的协议名称和端口号(dubbo协议案例)
<dubbo:protocol name=“dubbo” port=“20881”/>
推荐使用的是dubbo协议。
其中Dubbo支持的协议有:dubbo、rmi、hessian、http、webservice、rest、redis等。
<!-- 多协议配置 -->
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:protocol name="rmi" port="1099" />
<!-- 使用dubbo协议暴露服务 -->
<dubbo:service interface="com.xgf.service.HelloService" ref="helloService" protocol="dubbo" />
<!-- 使用rmi协议暴露服务 -->
<dubbo:service interface="com.xgf.service.DemoService" ref="demoService" protocol="rmi" />
1.4 Dubbo细节(4)启动时检查
- 启动检查
<dubbo:consumer check=“false”/>
配置在服务消费者(consumer)一方(提供方没有),如果不配置默认check值为true。- 作用
Dubbo 缺省会在启动时检查依赖的服务是否用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题。可以通过将check值改为false来关闭检查。- 使用场景
建议在开发阶段将check值设置为false,在生产环境下改为true。(一般开发也没有太多的问题了)
1.5 Dubbo细节(5)负载均衡
- 负载均衡(Load Balance)
其实就是将请求分摊到多个操作单元(多个节点)上进行执行,从而共同完成工作任务。(分担的时候使用算法),就是controller调用分配给比较空闲的机器(而不是满载的机器)- 负载均衡的常用算法
在集群负载均衡时,Dubbo 提供了多种均衡策略(包括随机、轮询、最少活跃调用数、一致性Hash)【默认不配置缺省为random随机调用(就是可能出现一些机器空闲一些机器满载)】- 几个配置的值
random, roundrobin, leastactive- 配置负载均衡策略
既可以在服务提供者(provider)一方配置,也可以在服务消费者一方配置(consumer配置在消费方)。
前提条件:需要开启注解
配置在提供方(provider)
//开启Dubbo负载均衡,配置在提供方,默认值random,三个配置值(random, roundrobin, leastactive)
@Service(interfaceClass = IHelloWordService.class,loadbalance = "random")
public class HelloServiceImpl implements IHelloWordService {
配置在消费方(consumer)
//check = true,loadbalance = "random" 配置负载均衡,配置在消费方(默认值random)
public class MyController {
@Reference(check = true,loadbalance = "random")
IHelloWordService iHelloWordService;//去provider取对象
2. Dubbo管理控制台(dubbo-admin-2.6.0-war安装部署)
dubbo提供了一个将web工程打包成的war,然后就可以部署到tomcat服务器上面,然后可以查看provider和consumers等信息并进行增删操作。
(开发时,如果需要知道Zookeeper注册中心都注册了哪些服务,有哪些消费者来消费这些服务。我们可以通过部署一个管理中心来实现。其实管理中心就是一个web应用,部署到tomcat即可。
百度网盘链接:dubbo-admin-2.6.0.war
提取码:8888
2.1 Dubbo管理控制台环境搭建步骤
- 将dubbo-admin-2.6.0.war文件复制到tomcat的webapps目录下
- 启动tomcat,这个war文件就会自动解压成文件夹
通过tomcat的bin目录下的startup.bat启动tomcat服务器
【注意】解压之后将dubbo-admin-2.6.0.war
删除,防止下次启动继续解压
- 修改WEB-INF下的
dubbo.properties
文件(找到zookeeper的ip和端口)
【注意】将dubbo.registry.address
对应的值修改为对应当前使用的Zookeeper的ip地址和端口号
webapps/dubbo-admin-2.6.0/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
2.2 Dubbo管理控制台使用步骤
- 启动tomcat服务器
- 开启zookeeper服务器
- 访问http://localhost:8080/dubbo-admin-2.6.0/,输入用户名和密码
(用户名和密码就是前面配置的dubbo.properties
里面的,默认有两个
用户名:root,密码:root
用户名:guest,密码:guest
登录成功:
可以对provider/consumer做增删改查
查看dubbo上的provider提供方
测试开启运行dubbo的提供方
【注意】http://localhost:8080/dubbo-admin-2.6.0/
如果tomcat服务器的端口没有修改就使用8080来访问,如果修改了就按你自己修改的端口访问
【】将provider、consumers和dubbo.properties
的dubbo.registry.address=zookeeper://127.0.0.1:2181
的ip地址都改为部署的本地ip地址。
还没有评论,来说两句吧...