分布式 第一章 Dubbo


1 RPC基础知识

软件架构

  • 单一应用架构 (所有功能部署到一个服务器)
  • 分布式服务框架 (RPC)

分布式系统是若干独立计算机(服务器)的集合,是建立在网络之上的服务器端一种结构。
分布式系统中的计算机可以使用不同的操作系统,可以运行不同应用程序提供服务,将服务分散部署到多个计算机服务器上。

RPC
RPC 【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,是一种技术思想,而不是规范。它允许程序调用另一个地址空间(网络的另一台机器上)的过程或函数,而不用开发人员显式编码这个调用的细节。调用本地方法和调用远程方法一样。

rpc 通讯是基于** tcp 或 udp 协议**,序列化方式(xml/json/二进制)

2 dubbo框架

官网

2.1 dubbo概述

Apache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:

  • 面向接口的远程方法调用
  • 智能容错和负载均衡
  • 服务自动注册和发现

基本架构:
在这里插入图片描述

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

dubbo支持的协议
官方推荐dubbo协议(默认端口20880),还支持http、webservice、redis

<dubbo:protocol name="dubbo" port="20880" />

2.2 直连式dubbo

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

1)创建服务提供者
配置pom.xml(com.alibaba.dubbo)
创建订单实体类
创建订单服务接口、接口实现类
创建dubbo配置文件
在这里插入图片描述
安装本地 jar 到 maven 仓库

2)创建消费者
编辑pom.xml(引入服务提供者依赖)
创建购买商品接口及实现类
创建dobbo配置文件
在这里插入图片描述
执行消费者

2.3 dubbo服务化最佳实践

分包:建议将服务接口、服务模型、服务异常等均放在公共包中
粒度:服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤
版本:每个接口都应定义版本号,为后续不兼容升级提供可能

 <dubbo:service interface="com.xxx.XxxService" version="1.0" />

2.4 常用标签

公共标签

配置应用信息
<dubbo:application name=”服务的名称”/>

配置注册中心
<dubbo:registry address=”ip:port” protocol=”协议”/>

服务提供者

配置暴露的服务
<dubbo:service interface=”服务接口名” ref=”服务实现对象 bean”>

服务消费者

配置服务消费者引用远程服务
<dubbo:reference id=”服务引用 bean  id” interface=”服务接口名”/>

3 Zookeeper 注册中心

通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。Dubbo 提供的注册中心有如下几种类型可供选:

  • Multicast 注册中心:组播方式
  • Redis 注册中心:使用 Redis 作为注册中心
  • Simple 注册中心:就是一个 dubbo 服务。作为注册中心。提供查找服务的功能。
  • Zookeeper 注册中心:使用 Zookeeper 作为注册中心

推荐使用 Zookeeper 注册中心。

3.1 Zookeeper概述

Zookeeper 是一个高性能的,分布式的,开放源码的分布式应用程序协调服务。它是一个树形结构。ZooKeeper 树中的每个节点被称为Znode,每个节点可以拥有子节点,表示一个唯一服务资源。Zookeeper 运行需要 java 环境。

orderservice
在这里插入图片描述
userservice
在这里插入图片描述
shop-web
在这里插入图片描述

4 dubbo的配置

配置原则:在服务提供者配置访问参数。因为服务提供者更了解服务的各种参数。

关闭检查:dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check=true。通过 check="false"关闭检查

关闭某个服务的启动时检查
<dubbo:reference interface="com.foo.BarService" check="false" />

关闭注册中心启动时检查
<dubbo:registry check="false" />

重试次数:消费者访问提供者,如果访问失败,则切换重试访问其它服务器,但重试会带来更长延迟。

<dubbo:service retries="2" />

<dubbo:reference retries="2" />

超时时间:由于网络或服务端不可靠,会导致调用出现一种不确定的中间状态(超时)。为了避免超时
导致客户端资源(线程)挂起耗尽,必须设置超时时间。

<dubbo:reference interface="com.foo.BarService" timeout="2000" />
<dubbo:server interface="com.foo.BarService" timeout="2000" />

版本号:区分不同的接口实现使用 version。

5 监控中心

dubbo 的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入 dubbo-admin。

通过 dubbo-admin 可以对消费者和提供者进行管理。可以在 dubbo 应用部署做动态的调整,服务的管理。

下载监控中心

运行 dubbo-admin 应用
1) 先启动注册中心
2) 执行提供者项目
3) java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 启动 dubbo 管理后台
4) 在浏览器地址栏输入 http://localhost:7001 访问监控中心-控制台。


传送门

下一章:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值