使用Springboot集成dubbox进行微服务治理
一、spring boot作为spring家族中新成员,一出来就受到大家的欢迎,其基于Spirng 4.0和Servelet 3,实现免xml的方式,并将常用的Spring模块整合分组,不但提高了代码可读性,而且大大降低了代码编写难度。二、dubbo同样dubbo作为SOA治理框架,不但包含了服务提供者和消费者,还提供了管理平台、监控平台等等。在阿里开源后,立即受到了广大开发者的追捧。
一、spring boot
作为spring家族中新成员,一出来就受到大家的欢迎,其基于Spirng 4.0和Servelet 3,实现免xml的方式,并将常用的Spring模块整合分组,不但提高了代码可读性,而且大大降低了代码编写难度。
二、dubbo
同样dubbo作为SOA治理框架,不但包含了服务提供者和消费者,还提供了管理平台、监控平台等等。在阿里开源后,立即受到了广大开发者的追捧。可惜的是由于阿里dubbo团队的解散,已经很久没有更新代码了,当前最新版本是2.5.4-SNAPSHOT。
三、dubbox
很庆幸,由当当网等团队在dubbo基础上升级了dubbox版本,将Spring2.X升级到3.X,并支持基于Kryo和FST的高效序列化实现,支持REST等。
不过问题来了,dubbox还是只支持Spring3,而Spring boot要求Spring 4,因此需要升级dubbox支持4.0版本。
四、dubbox升级版,支持了Spring4.0,github地址:https://github.com/chentian610/dubbox
五、集成Spring boot和dubbox
(1)、原来Spring集成dubbo的时候需要配置如下xml
<dubbo:application name="demo-consumer" owner="programmer" organization="dubbox"/>
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<dubbo:reference id="bidService" interface="com.alibaba.dubbo.demo.bid.BidService"/>
<dubbo:reference id="anotherUserRestService" interface="com.alibaba.dubbo.demo.user.facade.AnotherUserRestService"/>
(2)、改成Spring boot后只需要一个java类即可,这里表示向注册中心zookeeper注册服务。
/**
* Created by chentian610.
*/
@Configuration
@PropertySource("classpath:dubbo.properties")
public class DubboConfig {
@Value("${dubbo.application.name}")
private String dubbo_application_name;
@Value("${dubbo.registry.address}")
private String dubbo_registry_address;
/**
* 由《dubbo:application》转换过来
**/
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setLogger("slf4j");
applicationConfig.setName(dubbo_application_name);
return applicationConfig;
}
/**
* 与<dubbo:annotation/>相当.提供方扫描带有@com.alibaba.dubbo.init.annotation.Reference的注解类
* */
@Bean
public static AnnotationBean annotationBean() {
AnnotationBean annotationBean = new AnnotationBean();
annotationBean.setPackage("com.chentian610");//多个包可使用英文逗号隔开
return annotationBean;
}
/**
* 与<dubbo:registry/>相当
* */
@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress(dubbo_registry_address);
return registryConfig;
}
}
(3)、在pom.xml中添加Spring boot支持
<!-- Spring boot start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- spring boot 默认的日志框架是Logback,所以在引用log4j2之前,需要先排除该包的依赖,再引入log4j2的依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency> <!-- 引入log4j2依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
(4)、指定Spring boot启动类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}
(5)、具体业务类中调用dubbo服务,只需要添加@Reference注解即可
@Reference
private GetuiService getuiService;
六、最后启动各自服务,贴上源码,欢迎大家交流chentian610
更多推荐
所有评论(0)