这里写目录标题

  • 1、基本架构
    • 1.1、 dubbo支持的协议
  • 2 、dubbo 连接方式
    • 2.1、直连方式
      • 2.1.1 、提供者
      • 2.1.2、消费者
    • 2.2、 公共接口
    • 2.3 、使用zookeeper注册中心
      • 2.3.1、概述
      • 2.3.2、提供者配置文件
      • 2.3.3、消费者配置文件
  • 3 监控中心

1、基本架构


务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

1.1、 dubbo支持的协议

支持多种协议:dubbo , hessian , rmi , http, webservice , thrift , memcached , redis。
dubbo 官方推荐使用 dubbo 协议。dubbo 协议默认端口 20880
使用 dubbo 协议,spring 配置文件加入:

<dubbo:protocol name=“dubbo” port=“20880” />

2 、dubbo 连接方式

2.1、直连方式

点对点的直连项目:消费者直接访问服务提供者,没有注册中心。消费者必须指定服务提供者的访问地址(url)。

2.1.1 、提供者

dubbo01-zhilian

1、 maven依赖

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.6.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.6.RELEASE</version>
</dependency><!--    dubbo-->
<dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.5</version>
</dependency>

2、创建实体类
//实体类必须实例化

@Data
public class User implements Serializable {private String userName;private Integer age;private Integer id;}

3、创建接口、接口实现类

public interface UserService {User findUserById(Integer id);
}====================================
public class UserServiceImpl implements UserService {@Overridepublic User findUserById(Integer id) {User user = new User();user.setAge(12);user.setUserName("zhangsan");user.setId(111111);return user;}
}

4、创建dubbo配置文件
dubbo-userService-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://dubbo.apache.org/schema/dubbo"xmlns:dubb0="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">
<!--服务提供者声明名称:必须保证服务名称的唯一性,它的名称是dubbo内部使用的唯一标识--><dubbo:application name="dubbo01-userService-provider"></dubbo:application>
<!--    访问服务协议的名称及端口号,dubbo官方推荐使用的是dubbo协议,端口号默认20880--><!--name:指定协议的名称port:指定协议的端口号(默认是20880)--><dubbo:protocol name="dubbo" port="20880"/><!--把想暴露的服务接口暴露出去:dubbo:serviceinterface:暴露服务接口的全限定类名registry:如果不适用注册中心,则值为N/A--><dubbo:service interface="com.yyh.service.UserService" ref="userService" registry="N/A"/><bean id="userService" class="com.yyh.service.impl.UserServiceImpl"></bean>
</beans>

5、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>

6 、把项目打包成jar包
install

2.1.2、消费者

dubbo02-zhilian
1、导入maven依赖

  <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.6.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.6.RELEASE</version></dependency><!--    dubbo--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.5</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency>
<!--    引入依赖提供者--><dependency><groupId>com.yyh</groupId><artifactId>dubbo01-zhilian</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>

2、创建控制层类


@RestController
public class UserController {@AutowiredUserService userService;@RequestMapping("/user")public String userDetail(Model model, Integer id){User user=userService.findUserById(id);model.addAttribute("user",user);return "userDetail";}
}

3、配置springmvc文件

<?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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--扫描组件,开启注解支持--><context:component-scan base-package="com.yyh.controller"></context:component-scan>
<!--    配置注解驱动--><mvc:annotation-driven/><!--试图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"></property><property name="suffix" value=".jsp"></property></bean>
</beans>

4、配置dubbo
dubbo-comsumer.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"><!--声明服务消费者的名称:保证唯一性--><dubbo:application name="dubbo04-zhilian-consumer"/><!--引用远程服务接口:id:远程服务接口对象名称interface:调用远程接口的全限定类名url:访问服务接口的地址--><dubbo:reference id="userService" interface="com.yyh.service.UserService" url="dubbo://localhost:20880" registry="N/A"/>
</beans>

5、配置web.xml


<web-app>
<!--  配置中央调度器--><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:springMvc.xml,classpath:dubbo-comsumer.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

2.2、 公共接口

1、创建dubbo03-zhilian-interface

//不需要实现类
2、创建提供者
dubbo04-zhilin-previder
引入maven依赖

  <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.6.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.6.RELEASE</version></dependency><!--    dubbo--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.5</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency><!--引入 公共接口--><dependency><groupId>com.yyh</groupId><artifactId>dubbo03-zhilian-interface</artifactId><version>1.0-SNAPSHOT</version><scope>compile</scope></dependency>

3、实现类
在同级包下实现


4、创建消费者
dubbo04-zhilian-consumer
配置文件不变

2.3 、使用zookeeper注册中心

2.3.1、概述

对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。
  而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即需要提供服务,有需要消费服务。 通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。Dubbo 提供的注册中心有如下几种类型可供选:
  Multicast 注册中心:组播方式
  Redis 注册中心:使用 Redis 作为注册中心
  Simple 注册中心:就是一个 dubbo 服务。作为注册中心。提供查找服务的功能。
  Zookeeper 注册中心:使用 Zookeeper 作为注册中心
  推荐使用 Zookeeper 注册中心。

Zookeeper 是一个高性能的, 分布式的 ,开放源码的分布式应用程序协调服务。简称 zk。Zookeeper 是翻译管理是动物管理员。可以理解为 windows 中的资源管理器或者注册表。他是一个树形结构。这种树形结构和标准文件系统相似。ZooKeeper 树中的每个节点被称为Znode。和文件系统的目录树一样,ZooKeeper 树中的每个节点可以拥有子节点。每个节点表示一个唯一服务资源。Zookeeper 运行需要 java 环境。
注册中心的高可用
概念:
  高可用性(High Availability):通常来描述一个系统经过专门的设计,从而减少不能提供服务的时间,而保持其服务的高度可用性。
  Zookeeper 是高可用的,健壮的。Zookeeper 宕机,正在运行中的 dubbo 服务仍然可以正常访问。
健壮性
⚫ 监控中心宕掉不影响使用,只是丢失部分采样数据
⚫ 注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
⚫ 服务提供者无状态,任意一台宕掉后,不影响使用
⚫ 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复
演示操作:

先启动 zookeeper, dubbo 服务提供者,dubbo 服务消费者。
测试正常访问胸
停止 zookeeper
测试消费者仍然可以访问提供者

2.3.2、提供者配置文件

<?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.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 指定当前服务的名字(同样的服务名字相同,不要和别的服务同名) -->
<dubbo:application name="user-service-provider"></dubbo:application><!-- 指定注册中心的位置 --><dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry><!-- 指定通信规则(通信协议和通信端口) --><dubbo:protocol name="dubbo" port="20880"></dubbo:protocol><!-- 暴露服务 --><dubbo:service interface="com.atguigu.gmall.service.UserService" ref="userServiceImpl" version="1.0.0"></dubbo:service><!-- 将服务的实现交给spring容器管理 --><bean id="userServiceImpl" class="com.atguigu.gmall.service.impl.UserServiceImpl"></bean><!-- 暴露服务 --><dubbo:service interface="com.atguigu.gmall.service.UserService" ref="userServiceImpl2" version="2.0.0"></dubbo:service><!-- 将服务的实现交给spring容器管理 --><bean id="userServiceImpl2" class="com.atguigu.gmall.service.impl.UserServiceImpl2"></bean><!-- 指定监控中心,registry意为通过注册中心自动寻找监控中心 --><dubbo:monitor protocol="registry"></dubbo:monitor>
</beans>

2.3.3、消费者配置文件

<?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.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsdhttp://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"><!-- 扫描impl包中的注解 --><context:component-scan base-package="com.atguigu.gmall.service.impl"></context:component-scan><!-- 配置消费者服务名称 --><dubbo:application name="order-service-consumer"></dubbo:application><!-- 配置注册中心地址 --><dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry><!-- 对于接口配置,两个要点1)、精确优先(方法级优先,接口级次之,全局配置再次之)2)、消费者设置优先(如果级别一样,则消费者优先,提供方次之)--><!-- timeout:超时设置,默认时间为1s --><!-- retries:重试次数,不包含第一次调用超时设置遵循幂等设计:幂等(重复调用多次跟调用一次一样,设置重试次数。如查询、删除、修改)非幂等(重复调用会造成不一样的结果,不设置重试次数。如新增)--><!-- 声明需要调用的远程服务的接口,生成远程服务代理 --><dubbo:reference interface="com.atguigu.gmall.service.UserService" id="userService" timeout="1000" retries="3" version="*"><dubbo:method name="getUserAddressList" timeout="5000"></dubbo:method></dubbo:reference><!-- dubbo:consumer为dubbo:interface的通用配置 --><dubbo:consumer check="false" timeout="2000"></dubbo:consumer><!-- 指定监控中心,registry意为通过注册中心自动寻找监控中心 --><dubbo:monitor protocol="registry"></dubbo:monitor>
</beans>

3 监控中心

dubbo 的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入 dubbo-admin。通过 dubbo-admin 可以对消费者和提供者进行管理。可以在 dubbo 应用部署做动态的调整,
服务的管理。
dubbo-admin
  图形化的服务管理页面;安装时需要指定注册中心地址,即可从注册中心中获取到所有的提
供者/消费者进行配置管理

根据动力节点dubbo笔记相关推荐

  1. 动力节点SpringBoot笔记整理

    本文出自:https://stilljin.blog.csdn.net/article/details/89980994 一丶概述 去年年底转后台不久,就接手了公司后台项目,虽然暂无开发需求,IDEA ...

  2. Spring Boot入门篇,动力节点学习笔记整理

    什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Sp ...

  3. JavaWeb—监听器—Eclipse版动力节点学习笔记

    JavaWeb学习笔记 监听器 Listener 哔哩哔哩蛙课网[动力节点]JavaWeb-Eclipse版学习视频网址 解释 归属 备注 ServletRequestListener Request ...

  4. 【Maven】使用指南 - 动力节点视频笔记

    教程视频:动力节点-https://www.bilibili.com/video/av459639103?p=4&spm_id_from=pageDriver 文章目录 Maven 自动化的构 ...

  5. 动力节点Dubbo学习笔记

    第一章 RPC基础知识 1.1 软件架构 1.1.1 单一应用架构   当网站流量很小时,应用规模小时,只需一个应用,将所有功能都部署在一起,以减少部署服务器数量和成本.此时,用于简化增删改查工作量的 ...

  6. 动力节点—2020最新MyBatis教程笔记

    文章目录 1 介绍 2 快速入门 2.1 操作步骤(P9) 2.1.1 首先创建maven 2.1.2 接着会做一些配置 2.2 在编译的target目录下面缺少xml的解决方式(P11) 2.3 日 ...

  7. 动力节点—2020最新Spring教程笔记(上)

    文章目录 1 Spring 概述 2 IOC 控制反转 2.1 基于XML的DI 2.1.1 注入分类 2.1.1.1 set注入 2.1.1.2 构造注入(了解) 2.1.2 自动注入 2.2 基于 ...

  8. 动力节点『lol版』Java学习路线图(六)分布式技术

    六.初生之地的崛起 分布式技术 背景故事: 普雷西典,艾瑞莉娅正挥舞着Dubbo翩翩起舞.自从有了它,刀阵变得更加如臂指使,每每舞动也更添韵律.抢到分布式十几项神技,艾欧尼亚有如神助,苦日子终于要熬出 ...

  9. 2022全新Java学习路线图动力节点(六)分布式

    六.初生之地的崛起 分布式技术 背景故事: 普雷西典,艾瑞莉娅正挥舞着Dubbo翩翩起舞.自从有了它,刀阵变得更加如臂指使,每每舞动也更添韵律.抢到分布式十几项神技,艾欧尼亚有如神助,苦日子终于要熬出 ...

最新文章

  1. 8. Java 中的运算符 【连载 8】
  2. 新生赛(2) problem 2 丁磊养猪
  3. Android清空Fragment缓存,清空Fragment来退栈中某个Fragment
  4. 日常生活小技巧 -- UltraEdit复制16进制数据
  5. java 机器码 虚拟机_Java虚拟机:源码到机器码
  6. Windows x64平台 获取PEB表,并获取kernel32.dll的基址,并获取它的函数
  7. 单机 搭建kafka集群 本地_单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)...
  8. #游戏unity-VR场景漫游#shader之消除纹理重复感
  9. python加密成pyc_pyc文件加密 python写的程序怎样加密
  10. Access2016学习12
  11. Unity学习01-unity物体移动三种方式
  12. 微信小程序开发官方文档解读
  13. 睡眠革命——摘抄总结大纲
  14. 云队友丨盘点,到底盘什么?
  15. 1160. 不容易系列之二
  16. 【paper 2】Learning from Simulated and Unsupervised Images through Adversarial Training
  17. 【Linux】内核驱动篇九--设备模型
  18. 在子域下安装Exchange服务器并批量生成用户为每一位用户建立邮箱
  19. opencv 中x,y,height, width,rows,cols 的关系
  20. 中国“钱”途光明10所大学

热门文章

  1. 小学老师工资多少一个月_小学教师工资待遇现在怎么样?乡村老教师含泪哭诉!...
  2. 新店速递|白玉兰(商务)酒店福州火车站西湖长冠店 正式上线
  3. 【数据结构与算法】->算法-> A* 搜索算法->如何实现游戏中的寻路功能?
  4. 朗润国际期货:元旦各地金融市场休市情况
  5. BeeGo环境新建时候的问题
  6. 牛客网-SQL题库笔记
  7. NodeBB原型污染漏洞可导致账户遭接管
  8. Node.js之包管理npm
  9. 企业部署云服务可以用什么方式?
  10. 计算机动漫与游戏技术工资,计算机动漫与游戏制作专业是学什么的