Dubbo框架介绍
Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:
1.面向接口的远程方法调用,
2.智能容错和负载均衡
3.服务自动注册和发现。
Dubbo框架工作原理

组件说明:
1.消费者 负责接收用户的请求信息的. 页面
2.提供者 主要负责实现业务接口.
3.注册中心 注册中心基于心跳检测机制.可以非常灵活的检查服务是否可用.及服务自动的注册和发现功能.
4.监控 监控整合dubbo框架内部的状态信息.
注册中心工作原理(重点)

步骤:
1.当服务提供者启动时,将自己的IP地址/端口号/服务数据一起注册到注册中心中.
2.当注册中心接收提供者的数据信息之后,会维护服务列表数据.
3.当消费者启动时,会连接注册中心.
4.获取服务列表数据.之后在本地保存记录.
5.当用户需要业务操作时,消费者会根据服务列表数据,之后找到正确的IP:PORT直接利用RPC机制进行远程访问.
6.注册中心都有心跳检测机制.当发现服务器宕机/或者新增服务时.则会在第一时间更新自己的服务列表数据,并且全网广播通知所有的消费者.
安装注册中心-zookeeper
ZK下载

ZK介绍
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。(概述图片来源:[1] )
总结: ZooKeeper是分布式 应用程序服务的调度器.
(安装到src目录)

集群时配置多个配置文件

每个配置的接口和路径改成对应的路径,路径文件夹需要自己创建

添加文件夹时,每个文件夹添加myid文件并编辑写明id(第一个里面就写1,第二个写2.......不可重复)


启动时依次启动

Dubbo入门案例
在父级项目中引入dubbo的jar包文件
<!--引入dubbojar包文件 --><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency>
编辑中立的接口项目interface
接口项目创建过程
定义service接口
定义服务提供者
提供者代码结构

配置userServiceImpl

编辑YML配置文件
#关于Dubbo配置dubbo:scan:basePackages: com.jt #指定dubbo的包路径application: #应用名称name: provider-user #一个接口对应一个服务名称registry:address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183protocol: #指定协议name: dubbo #使用dubbo协议(tcp-ip) web-controller直接调用sso-Serviceport: 20880 #每一个服务都有自己特定的端口 不能重复.
dubbo通讯原理

定义服务消费者
消费者代码结构

编辑消费者Controller
@RestControllerpublic class UserController {//利用dubbo的方式为接口创建代理对象 利用rpc调用@Reference //(loadbalance="leastactive")//@Autowired //只能注入spring家的对象private UserService userService;/*** Dubbo框架调用特点:远程RPC调用就像调用自己本地服务一样简单* @return*/@RequestMapping("/findAll")public List<User> findAll(){//远程调用时传递的对象数据必须序列化.return userService.findAll(); //rpc调用}@RequestMapping("/saveUser/{name}/{age}/{sex}")public String saveUser(User user) {userService.saveUser(user);return "用户入库成功!!!";}}
编辑消费者YML配置
server:port: 9001dubbo:scan:basePackages: com.jtapplication:name: consumer-user #定义消费者名称registry: #注册中心地址address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
Dubbo 负载均衡策略
dubbo负载均衡说明
说明:Dubbo框架对外提供了负载均衡的机制.该机制称之为客户端负载均衡. 消费者在发起请求之前.就已经清除的知道将来访问的服务器是谁.
负载均衡接口说明

hash一致性算法
说明:消费者访问绑定了指定的提供者
//要求所有的字母全部小写@Reference(loadbalance="consistenthash")private UserService userService;
最小访问量
说明: 挑选当前服务器访问压力最小的服务器进行访问
//要求所有的字母全部小写@Reference(loadbalance="leastactive")private UserService userService;
随机算法
说明:该算法是默认的配置.
//要求所有的字母全部小写@Reference(loadbalance="random")private UserService userService;
轮询算法
说明:根据配置依次轮询访问.
//要求所有的字母全部小写@Reference(loadbalance="roundrobin")private UserService userService;




