博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录一次亲身经历的dubbo项目实战
阅读量:5738 次
发布时间:2019-06-18

本文共 2761 字,大约阅读时间需要 9 分钟。

一、案例说明

存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表。

clipboard.png

二、环境搭建

安装zookeeper,解压(zookeeper-3.4.8.tar.gz)得到如下:

clipboard.png

然后进入conf将zoo_sample.cfg改名成zoo.cfg。并相关如下内容:

clipboard.png

该目录为存放数据的目录。然后启动,在bin目录下:

clipboard.png

clipboard.png

三、工程创建

1、搭建B工程

1.导入依赖

org.springframework
spring-webmvc
4.1.3.RELEASE
org.slf4j
slf4j-log4j12
1.6.4
com.alibaba
dubbo
2.5.3
spring
org.springframework
org.apache.zookeeper
zookeeper
3.3.3
com.github.sgroschupf
zkclient
0.1

2.创建对象

public class User implements Serializable{//序列化自动生成private static final long serialVersionUID = 1749666453251148943L;private Long id;private String username;private String password;private Integer age; //getter and setter}

3.创建服务

public class UserServiceImpl implements UserService {//实现查询,这里做模拟实现,不做具体的数据库查询public List
queryAll() {List
list = new ArrayList
();for (int i = 0; i < 10; i++) {User user = new User();user.setAge(10 + i);user.setId(Long.valueOf(i + 1));user.setPassword("123456");user.setUsername("username_" + i);list.add(user);}return list;}}

4.编写Dubbo的配置文件

位置我放在根目录下dubbo/dubbo-server.xml,内容如下:

5.编写Web.xml

dubbo-b
contextConfigLocation
classpath:dubbo/dubbo-*.xml
org.springframework.web.context.ContextLoaderListener

6.启动tomcat

在控制台中将会看到如下内容:

clipboard.png

可以看到,已经将UserService服务注册到zookeeper注册中心,协议采用的是dubbo。

2、搭建A工程

1.拷贝基本文件

从b系统中拷贝User对象、UserService接口到a系统

clipboard.png

2.编写Dubbo的配置文件

3.编写UserService测试用例

public class UserServiceTest {private UserService userService;@Beforepublic void setUp() throws Exception {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:dubbo/*.xml");this.userService = applicationContext.getBean(UserService.class);}@Testpublic void testQueryAll() {List
users = this.userService.queryAll();for (User user : users) {System.out.println(user);}}}

查看效果如下:

clipboard.png

可以看到,已经查询到10条数据,那么,也就是说A系统通过B系统提供的服务获取到了数据。

在此我向大家推荐一个架构学习交流群。交流学习群号:478030634 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

3、解决代码重复问题

我们可以看到,在上面的案例中User实体和服务接口两个项目都需要使用,代码复用不高。那么我们可以将该部分代码抽取出来打成包,以供所有系统使用。故可以在创建一个工程项目名为dubbo-b-api。然后将相关的代码都放到该项目中,再在其它项目中导入该项目依赖即可。这也是我们在真实项目中应该做的事情,因为调用方未必知道细节。

转载地址:http://cafzx.baihongyu.com/

你可能感兴趣的文章
有利于seo优化的网站地图不能取巧
查看>>
快照产品体验优化
查看>>
ASCII
查看>>
ibatis SqlMap not found
查看>>
Android SD卡创建文件和文件夹失败
查看>>
Ubuntu 14.04 vsftp refusing to run with writable root inside chroot问题解决方法
查看>>
Intellij IDEA远程调试tomcat
查看>>
hadoop的学习论坛
查看>>
Struts2 学习小结
查看>>
烂泥:wordpress迁移到docker
查看>>
.扒渣机的性能及优势 
查看>>
Linux下磁盘保留空间的调整,解决df看到的空间和实际磁盘大小不一致的问题
查看>>
RSA 生成公钥、私钥对
查看>>
测试工具综合
查看>>
asp.net中调用COM组件发布IIS时常见错误 80070005解决方案
查看>>
分享一段ios数据库代码,包括对表的创建、升级、增删查改
查看>>
如何书写高质量的jQuery代码
查看>>
Activity的生命周期整理
查看>>
【记录】JS toUpperCase toLowerCase 大写字母/小写字母转换
查看>>
在 Linux 系统中安装Load Generator ,并在windows 调用
查看>>