dubbo 实现简易分布式服务
dubbo 实现简易分布式服务
服务器需要搭建zookeeper环境
zookeeper端口2181
还需要有java环境
1.需求
某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址;
我们现在 需要创建两个服务模块进行测试
| 模块 | 功能 |
|---|---|
| 订单服务web模块 | 创建订单等 |
| 用户服务service模块 | 查询用户地址等 |
测试预期结果
订单服务web模块在A服务器,用户服务模块在B服务器,A可以远程调用B的功能。
2.工程架构

3.创建项目
3.1 公共接口层 ego-interface
简单maven项目即可

1.修改pom.xml文件
org.projectlombok
lombok
${lombok.vsersion}
2.创建实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserAddress implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String userId;
private String userAddress;
}
3.创建公共接口
UserService
public interface UserService {
/**
* 查询用户的所有地址
* @return
*/
public List queryAllAddress(Integer id);
}
OrderService
public interface OrderService {
/**
* 根据用户id 查找订单
* @param uid 用户id
* @return 订单
*/
public List initOrder(Integer uid);
}
3.2 用户服务模块 ego-user-service-provider (服务提供者)
1.修改pom.xml文件
com.hgzy
03-ego-interface
1.0-SNAPSHOT
com.alibaba
dubbo
2.6.7
com.101tec
zkclient
0.11
org.apache.curator
curator-framework
4.1.0
io.netty
netty-all
4.1.32.Final
2.创建服务实体类
@Service
public class UserServiceImpl implements UserService {
private static List addresses=new ArrayList();
static {
addresses.add(new UserAddress(1,"1","湖南省株洲市荷塘区湖南化工职业技术学院"));
addresses.add(new UserAddress(2,"2","湖南省永州市祁阳县"));
}
@Override
public List queryAllAddress(Integer id) {
return addresses;
}
}
3.applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
4.测试服务
TestProvider
public class TestProvider {
public static void main(String[] args) throws IOException {
ApplicationContext ac=
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
System.out.println("服务提供者启动成功");
System.in.read();
}
}
3.3 订单服务(服务消费者) ego-order-service-consumer
1.修改pom.xml文件
com.hgzy
03-ego-interface
1.0-SNAPSHOT
com.alibaba
dubbo
2.6.7
com.101tec
zkclient
0.11
org.apache.curator
curator-framework
4.1.0
io.netty
netty-all
4.1.32.Final
2.创建服务实体类
@Service
public class OrderServiceImpl implements OrderService {
@Reference
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
@Override
public List initOrder(Integer uid) {
return userService.queryAllAddress(uid);
}
}
3.applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<
测试类
public class TestConsumer {
public static void main(String[] args) throws IOException {
ApplicationContext ac=
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
OrderService orderService = (OrderService) ac.getBean(OrderService.class);
for (UserAddress userAddress : orderService.initOrder(1)) {
System.out.println(userAddress);
}
System.in.read();
}
}