news 2026/7/28 18:34:13

dubbo实战01-入门案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
dubbo实战01-入门案例

学习一门新技术的时候,我们不仅要学会怎样运用这门技术,同时还必须明白这项技术是为了解决什么样的问题而产生的,真正做到知其然并知其所以然。

  • dubbo 是什么
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架, 使得应用可通过高性能的 RPC 实现服务的输出和输入功能, 可以和Spring框架无缝集成。
  • dubbo的作用
Dubbo是一款高性能、轻量级的开源Java RPC框架, 它提供了三大核心能力:面向接口的远程方法调用, 智能容错和负载均衡,以及服务自动注册和发现。
  • 准备工作
1、选择dubbo的注册中心:目前主流的几种注册中心主要有zookeeper、redis、Multicast、Simple (本案列中选择zookeeper充当注册中心,版本为3.4.13) 2、dubbo的版本为2.6.2 3、jdk版本为jdk8 4、maven版本为3.5.4 5、idea为开发工具
  • 工程的架构
dubbo-project |dubbo-provider |src |main |java |com.kkcl.gmall |service |impl UserServiceImpl.java |MainApplication.java |resources |provider.xml |dubbo-consumer |src |main |java |com.kkcl.gmall |service |impl OrderServiceImpl.java |MainApplication.java |resources |consumer.xml |gmall-interface |src |main |java |com.kkcl.gmall |bean |UserAddress.java |service |UserService.java |OrderService.java
  • 工程的搭建
本示例工程主要分为以下几个module:dubob-project为父工程; gmall-interface、dubbo-provider、dubbo-consumer为子module, gmall-interface主要的主要是集成接口与实体类供dubbo-provider和dubbo-consumer调用,dubbo-provider充当生产者的角色,为消费者提供服务,dubbo-consumer充当消费者的角色, 主要消费生产者提供的服务。
  • 实战案列
UserAddress.java 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-否 constructor... getter and setter.... } UserService.java public interface UserService { public List<UserAddress> getUserAddressList(String userId); } UserServiceImpl.java public class UserServiceImpl implements UserService { @Override public List<UserAddress> getUserAddressList(String userId) { UserAddress address1 = new UserAddress(1, "北京市", "1", "李老师", "010-56253898", "Y"); UserAddress address2 = new UserAddress(2, "西安市)", "1", "王老师", "010-56253809", "N"); return Arrays.asList(address1,address2); } } Order.service public interface OrderService { public List<UserAddress> initOrder(String userId); } OrderServiceImpl.java @Service public class OrderServiceImpl implements OrderService { @Autowired UserService userService; @Override public List<UserAddress> initOrder(String userId) { // TODO Auto-generated method stub System.out.println("用户id:"+userId); //1、查询用户的收货地址 List<UserAddress> addressList = userService.getUserAddressList(userId); for (UserAddress userAddress : addressList) { System.out.println(userAddress.getUserAddress()); } return addressList; } } provider.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://code.alibabatech.com/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:application name="dubbo-provider"/> <!--指定注册中心的位置(以下两种方式选择其中的一种即可) --> <!--<dubbo:registry address="zookeeper://127.0.0.1:2181"/>--> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/> <!---指定通信的规则(通信协议,通信端口)--> <dubbo:protocol name="dubbo" port="20880"/> <!--暴露的服务--> <dubbo:service interface="com.kkcl.gmall.service.UserService" ref="userServiceImpl"/> <!--服务实现--> <bean id="userServiceImpl" class="com.kkcl.gmall.service.impl.UserServiceImpl"/> </beans> consumer.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://code.alibabatech.com/schema/dubbo" 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://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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.kkcl.gmall.service.impl"/> <!--应用的名称--> <dubbo:application name="dubbo-consumer"/> <!--注册中心--> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!--声明需要调用的远程服务的名称:生成远程服务代理--> <dubbo:reference interface="com.kkcl.gmall.service.UserService" id="userService"/> </beans> MainApplication.java public class MainApplication { public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("provider.xml或者consumer.xml"); ioc.start(); System.in.read(); } }
  • 项目部署
1、到zookeeper官网下载zookeeper,这里下载的版本为3.4.13,下载完成后到zookeeper的conf目录下将zoo_simple.cfg复制重命名为zoo.cfg并配置对应的data存储的目录 dataDir=../data 2、分别启动dubbo-provider中的MainApplication.java 3、进入到dubbo的admin后台服务管理页面查看服务的启用情况
  • 源码地址
https://github.com/kkcl/kkcl-learning-example/tree/master/dubbo-project
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 18:33:47

物联网设备安全芯片SE050与PIC18F2585集成指南

1. 为什么物联网设备需要专用安全芯片&#xff1f;在物联网设备开发中&#xff0c;安全性常常是最容易被忽视却又至关重要的环节。传统MCU&#xff08;如PIC18F2585&#xff09;虽然能完成基础控制任务&#xff0c;但在面对现代网络安全威胁时往往力不从心。去年某智能家居厂商…

作者头像 李华
网站建设 2026/7/28 18:33:47

Shell脚本入门(一)基础语法

目录 1、Shell解析器 2、变量 3、运算符 4、条件判断 5、流程控制 6、read函数 1、Shell解析器 默认在CentOS使用的是bash 2、变量 2.1 系统变量 $USER、$SHELL、$HOME、$PWD 2.2 自定义变量 ①定义变量&#xff1a; 变量值 注意&#xff1a;等号两边不能有空格。 ②…

作者头像 李华
网站建设 2026/7/28 18:32:55

学编程卡在哪?做产品模特效果图时我才发现,问题根本不是工具

学编程卡在哪&#xff1f;做产品模特效果图时我才发现&#xff0c;问题根本不是工具 在决定用哪个工具之前&#xff0c;我其实已经纠结了将近两周。 Codex 还是现成的图像工作流&#xff1f;要不要直接用 VicroCode 搭一个小应用&#xff1f;还是先从网上找个教程跟着做&#…

作者头像 李华
网站建设 2026/7/28 18:30:48

基于Arduino与WS2812B的智能无线开关灯环设计与实现

1. 项目概述&#xff1a;从实用到炫酷的无线开关进化上次我们聊了自发电无线开关的基础实现&#xff0c;核心是解决布线麻烦和电池更换的痛点。这次&#xff0c;我们玩点不一样的——给这个“默默无闻”的开关加上一个会呼吸、会变色的炫彩灯环。这不仅仅是加个灯那么简单&…

作者头像 李华