Dubbo架构

节点角色说明

节点

角色说明

Provider

暴露服务的服务提供方

Consumer

调用远程服务的服务消费方

Registry

服务注册与发现的注册中心

Monitor

统计服务的调用次数和调用时间的监控中心

Container

服务运行容器

调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时没分钟发送一次统计数据到监控中心。

服务提供

1. 新建maven项目,跳过骨架选择,项目名为dubbo-provider。

2. 加入相关依赖:

3. 新建服务提供接口,用于向外部暴露服务使用,其中User实体类代码省略,注意实体类要实现序列化接口:

4. 编写服务实现类,对上述接口进行实现:

5. 编写配置文件,在src/main/resources目录下新建provider.xml文件,其中zookeeper作为注册中心,本机上需要启动zookeeper服务,直接下载zookeeper安装包,解压后运行bin目录中的zkServer.cmd即可:

6. 编写启动类,启动服务提供者:

7. 启动,注意,启动前需要首先启动zookeeper服务。

服务消费

1. 新建maven项目,跳过骨架选择,项目名为dubbo-consumer。

2. 加入相关依赖,和服务提供者相同。

3. 编写服务接口,和服务提供者相同,将服务提供者中的UserService接口复制到本项目即可。

4. 编写配置文件,在src/main/resources目录下新建consumer.xml文件:

5. 编写启动类,启动服务消费者:

6. 运行启动类,观察运行结果:

7. 可以发现,服务提供者和服务消费者中有很多冗余代码,例如接口的定义和实体类,可通过maven的父工程将这些冗余代码提取出来,然后提供者和消费者都继承这个父工程就可以了。

Dubbo管理平台

去到dubbo官网下载dubbo-admin文件,解压后放到tomcat中,启动tomcat即可访问,其中,需要更改一个配置文件dubbo.properties中的zookeeper地址:

然后浏览器方法localhost:8080/dubbo-admin即可,默认的用户名为root,密码为上述配置文件中配置的密码。

负载均衡

1. 启动之前准备好的服务提供者,启动端口为20880,为了更好的观察,启动之前修改服务提供者的实现类:

2. 启动提供者之后,将配置文件中的端口号改为20881,并将实现类中也改为20881,再次启动服务提供者,登录到管理平台查看:

3. 点击服务治理->负载均衡,添加负载均衡策略:

4. 添加后的效果为:

5. 再次启动服务消费者,观察控制台打印情况,多次启动消费者,观察效果

dubbo不完全指南的更多相关文章

  1. Dubbo初探

    Dubbo是什么? 1.阿里巴巴开源项目.2.Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. ps: SOA(面相服务的体系结构) RPC( ...

  2. Dubbo实践笔记

    注意的地方 默认情况下,cluster=failover.retries=2,意为失败重试两次,不包含原生调用.如需配置不重试,需设置retries=-1,或者使用failfast(快速失败)模式 如 ...

  3. Dubbo源码分析之ExtensionLoader加载过程解析

    ExtensionLoader加载机制阅读: Dubbo的类加载机制是模仿jdk的spi加载机制:  Jdk的SPI扩展加载机制:约定是当服务的提供者每增加一个接口的实现类时,需要在jar包的META ...

  4. 2019年阿里java面试题

    一.JVM与性能优化 描述一下 JVM 加载 Class 文件的原理机制? 什么是类加载器? 类加载器有哪些? 什么是tomcat类加载机制? 类加载器双亲委派模型机制? Java 内存分配? Jav ...

  5. dubbo用户指南

    用户指南 入门 背景 需求 架构 用法 快速启动 服务提供者 服务消费者 依赖 必需依赖 缺省依赖 可选依赖 成熟度 功能成熟度 策略成熟度 配置 Xml配置 属性配置 注解配置 API配置 示例 启 ...

  6. dubbo用户指南-总结

    dubbo用户指南-总结 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用 ...

  7. dubbo开发者指南

    开发者指南 参与 流程 任务 版本管理 源码构建 框架设计 整体设计 模块分包 依赖关系 调用链 暴露服务时序 引用服务时序 领域模型 基本原则 扩展点加载 扩展点配置 扩展点自动包装 扩展点自动装配 ...

  8. dubbo配置指南

    dubbo配置指南 SLA配置在此完成!Service Layer Agreement ApplicationConfig 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者. Regist ...

  9. 分布式服务框架 dubbo/dubbox 入门示例

    dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...

随机推荐

  1. java.lang.IllegalArgumentException异常 返回值类型的问题

    java.lang.IllegalArgumentException: Cannot create TypedQuery for query with more than one return usi ...

  2. bzoj5252 [2018多省省队联测]林克卡特树

    斜率优化树形dp?? 我们先将问题转化成在树上选K+1条互不相交路径,使其权值和最大. 然后我们考虑60分的dp,直接维护每个点子树内选了几条路径,然后该点和0/1/2条路径相连 然后我们会发现最后的 ...

  3. BZOJ_2946_[Poi2000]公共串_后缀数组+二分答案

    BZOJ_2946_[Poi2000]公共串_后缀数组+二分答案 Description          给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务: l        读入单 ...

  4. 手游热更新方案--Unity3D下的CsToLua技术

    WeTest 导读 CsToLua工具将客户端 C#源码自动转换为Lua,实现热更新,本文以麻将项目为例介绍客户端技术细节. 麻将项目架构 其中ChinaMahjong-CSLua为C#工程,实现麻将 ...

  5. IE浏览器下ajax和缓存的那些事儿

    项目经理最近返回了一些问题: (客户浏览器为IE11,本地360,谷歌没发现任何问题) 1.加载页面时下拉框中没有数据,关闭之后再打开出现数据: 2.数据保存之后页面没有刷新: 我也是接手别人的项目, ...

  6. Ubuntu 17.10 UTC

    UTC即Universal Time Coordinated,协调世界时(世界统一时间)GMT 即Greenwich Mean Time,格林尼治平时Windows 与 Mac/Linux 看待系统硬 ...

  7. Windows上安装配置SSH教程(3)——在Windows系统上安装与配置WinSCP

    知识点汇总:http://www.cnblogs.com/feipeng8848/p/8559803.html -------------------- 首先确认客户端已经安装了OpenSSH.安装方 ...

  8. java.lang.ClassNotFoundException: com.mysql.jdbc.Drive

    Linux下使用eclipse开发web项目,运行的时候出现 Java.lang.ClassNotFoundException: com.MySQL.jdbc.Driver,解决办法如下: 1.导入M ...

  9. Ceph万兆内网与系统万兆迁移

    本文将总结一次为Ceph集群加装万兆内网(cluster network),后因需要对比实验来研究分布式存储集群在计算,网络,存储过程中各部分耗时比例,而将Ceph整体系统又整体搬移至万兆网的过程.但 ...

  10. im2col:将卷积运算转为矩阵相乘

    目录 im2col实现 优缺点分析 参考 博客:blog.shinelee.me | 博客园 | CSDN im2col实现 如何将卷积运算转为矩阵相乘?直接看下面这张图,以下图片来自论文High P ...