Dubbo的简单搭建实例

Dubbo

首先Dubbo采用RPC模式进行远程网络通信,是以一个通信中心作为中间管理者的身份来通知各个模块的运行,以该图为例子

注册中心可以采用zookeeper来作为中心,安装zookeeper,使用windows/linux均可,学习中我采用的windows搭建的zookeeper

zookeeper下载路径 :http://archive.apache.org/dist/zookeeper/

安装完成后找到zookeeper的bin目录下启动zookeeper的服务器

如果出现了错误,那么我们需要去到zookeeper的conf目录下复制一份名为zoo_sample.cfg的文件,改名为zoo.cfg,然后查看其中的端口号是否是2181,改完成后启动zKservice.cmd。

这里就不做对监控器的说明,下载监控器可以到dubbo的github上下载源码并对其打成jar包运行。

接着对着官网上的配置一步一步来

首先使用maven创建三个项目

提供公共接口以及公共bean的maven工程

bean文件

public class UserAddress implements Serializable {
	
	private Integer id;
    private String userAddress; //用户地址
    private String userId; //用户id
    private String consignee; //收货人
    private String phoneNum; //电话号码
    private String isDefault; //是否为默认地址    Y-是     N-否
    
    public UserAddress() {
		super();
		// TODO Auto-generated constructor stub
	}
    
	public UserAddress(Integer id, String userAddress, String userId, String consignee, String phoneNum,
			String isDefault) {
		super();
		this.id = id;
		this.userAddress = userAddress;
		this.userId = userId;
		this.consignee = consignee;
		this.phoneNum = phoneNum;
		this.isDefault = isDefault;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUserAddress() {
		return userAddress;
	}
	public void setUserAddress(String userAddress) {
		this.userAddress = userAddress;
	}
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getConsignee() {
		return consignee;
	}
	public void setConsignee(String consignee) {
		this.consignee = consignee;
	}
	public String getPhoneNum() {
		return phoneNum;
	}
	public void setPhoneNum(String phoneNum) {
		this.phoneNum = phoneNum;
	}
	public String getIsDefault() {
		return isDefault;
	}
	public void setIsDefault(String isDefault) {
		this.isDefault = isDefault;
	}
    

接口文件UserService

public interface OrderService {
	
	/**
	 * 初始化订单
	 * @param userId
	 */
	public List<UserAddress> initOrder(String userId);

}

接口文件OrderService

public interface OrderService {
	
	/**
	 * 初始化订单
	 * @param userId
	 */
	public List<UserAddress> initOrder(String userId);

}

提供生产者的maven工程

实现接口的文档

public class UserServiceImpl implements UserService {

	
	public List<UserAddress> getUserAddressList(String userId) {
		System.out.println("UserServiceImpl.....old...");
		// TODO Auto-generated method stub
		UserAddress address1 = new UserAddress(1, "北京市昌平区宏福科技园综合楼3层", "1", "李老师", "010-56253825", "Y");
		UserAddress address2 = new UserAddress(2, "深圳市宝安区西部硅谷大厦B座3层(深圳分校)", "1", "王老师", "010-56253825", "N");
		/*try {
			Thread.sleep(4000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
		return Arrays.asList(address1,address2);
	}

	
}

提供消费者的maven工程

接口文档

@Service
public class OrderServiceImpl implements OrderService {
	//注入配置中的暴露接口
	@Autowired
	UserService userService;
	public List<UserAddress> initOrder(String userId) {
		System.out.println("用户id:"+userId);
		//1、查询用户的收货地址
		List<UserAddress> addressList = userService.getUserAddressList(userId);
		for (UserAddress userAddress : addressList) {
			System.out.println(userAddress.getUserAddress());
		}
		return addressList;
	}

}

 然后把消费者工程项目和生产者工程项目去引用接口工程项目

消费者工程和生产者工程两个pom文件引入的一模一样就行

	  <dependencies>
	  		<dependency>
	  			<groupId>com.atguigu.gmall</groupId>
	  			<artifactId>gmall-interface</artifactId>
	  			<version>0.0.1-SNAPSHOT</version>
	  		</dependency>
	  	<!-- 引入dubbo -->
		<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.6.2</version>
		</dependency>
		<!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端端 -->
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>2.12.0</version>
		</dependency>
	  	</dependencies>

以下是配置xml

 

配置生产者

配置对外暴露服务的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
		<!-- 配置dubbo -->
		<dubbo:application name="user-service-provider"/> <!-- 暴露着的名称 -->
		<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
		<dubbo:protocol name="dubbo" port="20880"/><!-- dubbo端口号 -->
		<!-- dubbo的名称以及实现类 -->
		<bean id="userServiceImpl" class="com.atguigu.gmall.service.impl.UserServiceImpl"/>
		<!-- 对外暴露的接口 -->
		<dubbo:service interface="com.atguigu.gmall.service.UserService" ref="userServiceImpl"/>			
</beans>

紧接着启动dubbo,按照官网上写的方式,变成阻塞

启动成功后,登录admin监控者查看

提供者已经发布成功!

 

配置消费者

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd
		http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 扫描组件 -->
    <context:component-scan base-package="com.atguigu.gmall.service.impl"></context:component-scan>
   	<!-- 服务名称,不重名就行 -->
    <dubbo:application name="demo-consumer"/>
    <!-- 连接zookeeper -->
    <dubbo:registry  address="zookeeper://127.0.0.1:2181"/>
    <!-- 接口引用刚刚对外暴露的远程接口名称  -->
    <dubbo:reference id="userService" 
    interface="com.atguigu.gmall.service.UserService"/>
</beans>

启动主方法

消费者也成功调用

 

查看监控器

以上就是dubbo的简单实例,不是很详细,我也是刚刚接触dubbo。

也可以参考一下这个视频教程https://www.bilibili.com/video/av30612478?from=search&seid=12968075294494126732 进行详细的学习,有更好的我们也可以一起讨论。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值