微服务-dubbo快速实践1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yhhyhhyhhyhh/article/details/82319812

微服务-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配置文件

扫描二维码关注公众号,回复: 4142749 查看本文章

和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时,拦截器验证通过,访问正常。

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yhhyhhyhhyhh/article/details/82319812