微服务-dubbo快速实践1:dubbo机制测试
完整代码下载链接:
https://github.com/2010yhh/springboot-dubbo.git
环境
idea2018,jdk1.8,springboot2.0.3.RELEASE,
dubbo1.0.0,工程基于spring-boot-starter-dubbo构建
1.springboot集成dubbo及配置
springboot集成dubbo配置:
1.application.properties 或者yaml文件配置,
但是这种配置方式只能配置全局的配置,接口级别的需要利用注解或者xml文件进行配置
2.注解方式;
@Service 服务提供者常用配置,@Reference 服务消费者常用配置,服务端的配置是;其中消费端的接口配置优先级>服务端的接口配置
3.xml配置文件
和2注解方式类似。
本文的demo配置是在application.properties 配置常规项,利用@Service,@Reference配置接口级别的,
dubbo服务端application.properties示例:
# web服务端口号 server.port=8090 # dubbo服务端应用名称 spring.dubbo.application.name=dubbo-service # dubbo协议 spring.dubbo.protocol.name=dubbo # 注册中心地址 spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 # duboo端口号 spring.dubbo.protocol.port=20880 # dubbo的接口实现包位置 spring.dubbo.scan=com.ctg.test.service.impl #负载均衡策略:random,roundrobin,leastactive spring.dubbo.loadbalance=roundrobin #以下几项在服务接口的实现类中配置 #重试次数 #超时时间(ms)(服务端的超时配置是消费端的缺省配置) #集群容错策略:failove,failfast,failsafe,failback,forking,broadcast
dubbo消费端application.properties示例:
# web服务端口号 server.port=8092 # dubbo服务端应用名称 spring.dubbo.application.name=dubbo-client # dubbo协议 spring.dubbo.protocol.name=dubbo # 注册中心地址 spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 # duboo端口号 spring.dubbo.protocol.port=20882 #服务接口所在的位置,可以适当放大扫描包 spring.dubbo.scan=com.ctg.test
接口级别的配置
服务端:
@Service(version = "1.0.0",timeout =10000,retries = 1,cluster = "broadcast")
消费端:
@Reference(version = "1.0.0",mock = "true")
以下测试都是用zk做注册中心。
1)demo工程目录:
2)依次启动zk,服务端,消费端,访问测试接口
3)http://localhost:8092/test3?name=zyq
##
2.负载均衡
负载均衡测试:部署多个服务端(这里可以修改application.properties中的server.port和spring.dubbo.protocol.port;然后直接启动ProviderApplication2次),消费端请求。
以Test3Service测试,配置如下的负载均衡策略
#负载均衡策略:random,roundrobin,leastactive spring.dubbo.loadbalance=roundrobin
测试结果:可看出请求被分发到不同的服务端
3.容错机制
以Test3Service测试,
1)配置如下的集群容错机制,
@Reference(version = "1.0.0",timeout =20000,retries = 1,cluster = "failover") private Test3Service test3Service;
2)在服务端Test3Service方法中:加入延时,模拟调用超时,然后启动ProviderApplication工程(此时设置server.port=8091)
3)访问http://localhost:8092/test3?name=zyq
4)cluster = “failover” 结果:
cluster = “failofast” 结果:
cluster = “failsafe” 结果:
cluster = “forking” 结果:
cluster = “broadcast” 结果:
4.服务降级mock
dubbo支持简单和复杂模式的mock降级服务。
复杂降级:mock类需要实现接口,命名为:接口名+Mock
以Test1Service和Test2Service测试,加入延时,模拟调用超时的情况。返回结果:
5.api网关
通常对于服务端,不直接对外暴露,通常是通过一个机器和端口代理所有的服务模块,并对外表请求进行拦截验证和权限管理。这里以一个简单的拦截器模拟网关服务,单独的工程dubbo-gateway测试。
结果:简单测试当token=123456时,拦截器验证通过,访问正常。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/18345.html