目录

  • 一、直连方式
    • 实现方式:
      • (1)创建服务提供者
        • A、在pom.xml中加入依赖和插件
        • B、创建实体类:User.java
        • C、新建服务接口:UserService.java
        • D、新建接口实现类:UserServiceImpl.java
        • E、创建dubbo配置文件:dubbo-userservice-provider.xml
        • F、在web.xml中配置监听器
        • G、将该项目打成jar包到maven仓库
      • (2)创建服务消费者
        • A、在pom.xml文件中加入服务提供者的jar包,其余和上面服务提供者一样
        • B、创建服务消费者控制器类:UserController.java
        • C、创建dubbo配置文件:dubbo-consumer.xml
        • D、创建spring配置文件:application.xml
        • E、在web.xml文件中配置中央调度器和初始化上下文
        • F、创建展示页面:userDetail.jsp

一、直连方式

  • 点对点的直连项目:消费者直接访问服务提供者,没有注册中心。消费者必须指定服务提供者的访问地址(url)
  • 消费者直接通过 url 地址访问固定的服务提供者,这个 url 地址是不变的

实现方式:

(1)创建服务提供者
A、在pom.xml中加入依赖和插件
<!--Spring依赖-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.16.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.16.RELEASE</version>
</dependency><!--dubbo依赖-->
<dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.2</version>
</dependency>
<build><plugins><!--JDK1.8编译插件--><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build>
B、创建实体类:User.java
public class User implements Serializable {private Integer id;private String username;private Integer age;//set,get方法
}
C、新建服务接口:UserService.java
public interface UserService {/*** 根据用户标识获取用户信息* @param id* @return*/User queryUserById(Integer id);
}
D、新建接口实现类:UserServiceImpl.java
public class UserServiceImpl implements UserService {@Overridepublic User queryUserById(Integer id) {User user = new User();user.setId(id);user.setUsername("lisi");user.setAge(23);return user;}
}
E、创建dubbo配置文件:dubbo-userservice-provider.xml
<!--服务提供者声明名称:必须保证服务名称的唯一性,它的名称是dubbo内部使用的唯一标识-->
<dubbo:application name="003-link-userservice-provider"/><!--访问服务协议的名称及端口号,dubbo官方推荐使用的是dubbo协议,端口号默认为20880-->
<!--name:指定协议的名称port:指定协议的端口号(默认为20880)
-->
<dubbo:protocol name="dubbo" port="20880"/><!--暴露服务接口->dubbo:serviceinterface:暴露服务接口的全限定类名ref:接口引用的实现类在spring容器中的标识registry:如果不使用注册中心,则值为:N/A
-->
<dubbo:service interface="com.hcz.dubbo.service.UserService" ref="userServiceImpl" registry="N/A"/><!--将接口的实现类加载到spring容器中-->
<bean id="userServiceImpl" class="com.hcz.dubbo.service.impl.UserServiceImpl"/>
F、在web.xml中配置监听器
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:dubbo-userservice-provider.xml</param-value>
</context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
G、将该项目打成jar包到maven仓库
  • 服务接口中的方法要给消费者使用,消费者项目需要知道接口名称和接口中的方法名称、参数等。这些信息服务提供者才知道,需要把接口的 class 文件打包为 jar
  • 服务接口项目的类文件打包为 jar, 安装到 maven 仓库,仓库中的提供者 jar 可以被消费者使用
  • 使用 idea 的 maven 窗口执行 install
(2)创建服务消费者
A、在pom.xml文件中加入服务提供者的jar包,其余和上面服务提供者一样
<!--依赖服务提供者-->
<dependency><groupId>com.hcz.dubbo</groupId><artifactId>003-link-userservice-provider</artifactId><version>1.0.0</version><scope>compile</scope>
</dependency>
B、创建服务消费者控制器类:UserController.java
@Controller
public class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "/user")public String userDetail(Model model,Integer id) {User user = this.userService.queryUserById(id);model.addAttribute("user",user);return "userDetail";}
}
C、创建dubbo配置文件:dubbo-consumer.xml
<!--声明服务消费者的名称:保证唯一性-->
<dubbo:application name="004-link-consumer"/><!--引用远程服务接口:id:远程服务接口对象名称interface:调用远程接口的全限定类名url:访问服务接口的地址registry:不使用注册中心,值为:N/A
-->
<dubbo:reference id="userService"interface="com.hcz.dubbo.service.UserService"url="dubbo://localhost:20880"registry="N/A"/>
D、创建spring配置文件:application.xml
<!--扫描组件-->
<context:component-scan base-package="com.wkcto.dubbo.web"/><!--配置注解驱动-->
<mvc:annotation-driven/><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"/><property name="suffix" value=".jsp"/>
</bean>
E、在web.xml文件中配置中央调度器和初始化上下文
<servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:application.xml,classpath:dubbo-consumer.xml</param-value></init-param>
</servlet>
<servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>
F、创建展示页面:userDetail.jsp
<body><h1>用户详情</h1><div>用户标识:${user.id}</div><div>用户名称:${user.username}</div>
</body>

dubbo服务化最佳实践请看下一篇博客文章!!!

Dubbo---使用直连方式 dubbo相关推荐

  1. 初识Dubbo(直连方式)

    Dubbo直连方式具体步骤实现 1.创建服务提供者 1.1.创建maven web工程 1.2.整理pom文件,添加spring依赖和dubbo依赖和jdk1.8编译插件 1.3.在src/main目 ...

  2. Dubbo实例~直连的方式

    Dubbo实例~直连的方式 2.4 Dubbo实例~直连的方式 2.4.1 服务的提供者 2.4.2 服务的消费者 2.4.1 服务的提供者.消费者两个服务跑起来 2.4 Dubbo实例~直连的方式 ...

  3. Dubbo——初识RPC、Dubbo框架、使用直连方式实现Dubbo

    文章目录: 1.RPC & 软件架构 1.1 单一应用架构 1.2 分布式微服务架构 1.3 RPC 2.Dubbo概述 2.1基本架构 2.2 dubbo支持的协议 3.直连方式实现dubb ...

  4. Dubbo(RPC原理、Dubbo架构负载均衡配置方式)(3)

    1.什么是负载均衡 先来个官方的解释. 维基百科对负载均衡的定义:负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动的的工作负载分布.负载平衡旨在优化资源使用,最大 ...

  5. dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)

    通过之前的学习了解了dubbo的常规的使用,下面我们看看特殊情况或者说真实环境下使用dubbo的一些配置实例. 一.一个接口有多个实现时可以使用group来区分 1.服务提供者配置 <?xml ...

  6. Dubbo(二):Dubbo 基础配置Xml、注解方式 和 高级特性

    Dubbo的基础配置 Xml方式 注解方式 Dubbo的基础配置使用 启动时检查 超时重连 集群容错 负载均衡配置 结果缓存 服务分组 多版本 只订阅/只注册 异步调用 事件通知 参数回调 本地伪装- ...

  7. dubbo consumer 端口_初识Dubbo

    如果你是做java开发的,或多或少你都应该听说过dubbo,那dubbo是个什么玩意?你在网页中输入dubbo点击搜索,会出来一堆结果,但是带官网标签的只有一个,那就是Apache Dubbo,进入网 ...

  8. 探秘 Dubbo 的度量统计基础设施 - Dubbo Metrics

    对服务进行实时监控,了解服务当前的运行指标和健康状态,是微服务体系中不可或缺的环节.Metrics 作为微服务的重要组件,为服务的监控提供了全面的数据基础.近日,Dubbo Metrics 发布了2. ...

  9. 理解Dubbo的调用流程与Dubbo多协议解析

    Dubbo作为目前国内主流的微服务框架之一 一.Dubbo的调用流程分析 Dubbo本身主要支持两种调用流程,包括直连提供者和基于注册中心的调用 直连提供者一般都是在开发和测试环境下使用 我们将所有的 ...

最新文章

  1. array_reduce() 与 array_map()
  2. Django模板渲染——(二)
  3. java什么是网络接口_java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)...
  4. 《Python Cookbook 3rd》笔记(3.14):计算当前月份的日期范围
  5. 红旗Linux网卡绑定,Linux bonding 之balance-alb 原理介绍及其实现
  6. 95-50-050-java.nio.channels-NIO-NIO之Channel(通道)
  7. 程序代码移植和烧录需要注意什么_网站定制化开发需要注意什么?
  8. LeetCode(38)——报数(JavaScript)
  9. jQuery Ajax请求成功后,为什么一直在error函数里
  10. zendstudio 的使用过程中出现 Editor could not be initialized. 的问题
  11. x722网卡驱动linux,Intel英特尔E810/X722网卡驱动1.4.24版For Linux RDMA(2021年4月8日发布)...
  12. 数据抽取常见的几种模式
  13. Python实现淘宝准点抢单!双十一秒杀神器啊!还不来学?
  14. PTA 求链式线性表的倒数第K项 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。
  15. WPS广告投放的优势!WPS广告投放的展现形式
  16. 【数据结构】堆和二叉堆
  17. unity粒子系统属性介绍
  18. [Office]Win7(x64)旗舰版安装Office 2013专业版的过程中提示在安装过程中出错
  19. 永磁同步电机模型预测控制,自抗扰控制,滑模控制等matlab仿真及ccs代码。
  20. 麻省理工公开课:线性代数》中文笔记来了

热门文章

  1. VRRP协议以及vrrpd工具的使用 - 1
  2. E11:后台管理系统开发-实现删除文章功能
  3. 前端性能优化之浏览器渲染原理和关键渲染路径、复合线程、图层及优化、JS 开销及优化和 HTML 和 CSS 优化
  4. 行政区划sql数据脚本
  5. 三维激光扫描后处理软件_工业机械液压缸套逆向设计三维激光扫描产品设计三维激光扫描仪价格...
  6. 新一代烧写工具—STM32CubeProgrammer!
  7. 微信小程序同时上传视频和图片(支持多选)
  8. [激光原理与应用-32]:典型激光器 -4- 半导体泵浦固体激光器
  9. 2019/3/21细菌繁殖
  10. LaTex 有用的表格集锦