dubbo项目开发实战
dubbo结合spring boot,直接采用注解的方式,没有采用xml配置
使用的是zookeeper作为服务注册中心
spring cloud的服务化是使用的restful的方式,是基于http,但是http请求会有连接的问题存在,因此使用dubbo的rpc的方式是比较好的服务化的实现方式。
服务化的基本要素是一个服务需要能独立完成一个业务内容,否则会导致分布式事务的问题。
1:创建空的maven项目,引入依赖:
<!--dubbo--> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency>
2:使用properties配置
app.service.version=1.0.0\# Base packages to scan Dubbo Component: @com.alibaba.dubbo.config.annotation.Servicedubbo.scan.basePackages=com.seasfood.producer.\# Dubbo Config properties\## ApplicationConfig Beandubbo.application.id=seasfood-dubbo-iddubbo.application.name=seasfood-dubbo-namedubbo.application.qos.port=22222dubbo.application.qos.enable=true\## ProtocolConfig Beandubbo.protocol.id=dubbo-id\#只能是dubbo,这个是协议名dubbo.protocol.name=dubbodubbo.protocol.port=9090dubbo.protocol.status=server\## RegistryConfig Beandubbo.registry.id=zookeeperdubbo.registry.address=zookeeper://zk-cs:2181\# Enables Dubbo All Endpointsmanagement.endpoint.dubbo.enabled=truemanagement.endpoint.dubbo-shutdown.enabled=truemanagement.endpoint.dubbo-configs.enabled=truemanagement.endpoint.dubbo-services.enabled=truemanagement.endpoint.dubbo-references.enabled=truemanagement.endpoint.dubbo-properties.enabled=true\# Dubbo Health\## StatusChecker Name defaults (default : "memory", "load" )management.health.dubbo.status.defaults=memory\## StatusChecker Name extras (default : empty )management.health.dubbo.status.extras=load,threadpool
3:声明一个服务接口,声明一个实现类实现接口,然后在实现类上注解
public interface MyInterface{}@Service( version = "${app.service.version}", application = "${dubbo.application.id}", protocol = "${dubbo.protocol.id}", registry = "${dubbo.registry.id}")public class MyService implements MyIneterface {}
4:如果接口中需要传输DTO类型的,需要给类型实现序列化接口Serializable,否则在rpc调用会报错
5:消费者只需要注入使用即可
@Reference(version = "${app.service.version}", lazy = true, application = "${dubbo.application.id}", registry = "${dubbo.registry.id}" ) private MyInterface myInterface;
6:配置:有很多配置,目前我这用到的,一个是均衡负载配置,一个是服务降级配置,一个是集群容错(重试)负载均衡配置在服务端和客户端都可以配置,配置loadbalance属性即可,缺省为random,可以配置roundrobin
集群容错配置retries属性,
服务降级配置:在@Reference里配置mock属性
br/>负载均衡配置在服务端和客户端都可以配置,配置loadbalance属性即可,缺省为random,可以配置roundrobin
集群容错配置retries属性,
服务降级配置:在@Reference里配置mock属性
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。