1、Dubbo简介

1、dubbo简介

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用,说白了就是个远程服务调用的分布式框架。告别Web Service模式中的wsdl,以服务者与消费者的方式在dubbo 上注册)。

其核心部分包含:

1.远程通讯,提供对多种基于长连接的NiO框架抽象封装,包括多种线程模型,序列化,以及“请求一响应”模式的信息交换方式。

2.集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持。以

及负载均衡,失败容错,地址路由,动态配置等集群支持。

3.自动发现:基于注册中心目录服务,使用服务消费能动态查找服务提供方,使地址透明,使用服务提供方可以平滑增加或减少服务器

2、dubbo基本要素

生产者

消费者

注册中心

监控中心

容器

3、dubbo解决问题

1、API透明化,通过接口调用,屏蔽通讯层

2、软负载均衡

3、容错机制

4、服务注册与发现

4、dubbo协议

默认使用dubbo协议,还有http协议,rmi,hession,webservice等

2、dubbo项目搭建

1、创建接口

2、引入依赖

<dependency>
  <groupId>com.dy</groupId>
  <artifactId>dubbo-provider-interface</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>dubbo</artifactId>
  <version>2.5.6</version>
</dependency>
<!-- 添加zk客户端依赖 -->
<dependency>
  <groupId>com.github.sgroschupf</groupId>
  <artifactId>zkclient</artifactId>
  <version>0.1</version>
</dependency>

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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">

  <!-- 提供方应用信息,用于计算依赖关系 -->
  <dubbo:application name="provider" />
  <!-- 使用zookeeper注册中心暴露服务地址 -->
  <dubbo:registry address="zookeeper://127.0.0.1:2181" />
  <!-- 用dubbo协议在29014端口暴露服务 -->
  <dubbo:protocol name="dubbo" port="29014" />
  <!-- 声明需要暴露的服务接口 -->
  <dubbo:service interface="provider.interface_package.UserService"
    ref="userService" />
  <!-- 具体的实现bean -->
  <bean id="userService" class="provider.service.UserServiceImpl" />
</beans>

4、消费者配置文件

<?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.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
  <dubbo:application name="consumer" />
  <!-- 使用multicast广播注册中心暴露发现服务地址 -->
  <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
  <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
  <dubbo:reference id="userService" interface="provider.interface_package.UserService" />
</beans>

5、接口调用

直接通过Spring的方式获取bean,调用即可

  ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("consumer.xml");
  ctx.start();
  System.out.println("消费者启动");
  UserService bean = (UserService) ctx.getBean("userService");
  String user = bean.getUser(2l);
  System.out.println(user);

3、Admin管理平台

使用tomcat1.8

配置文件dubbo.properties修改集群配置信息

登录地址:127.0.0.1:8080

 

 

4、Dubbo实现负载均衡

通过admin管理平台配置实现即可

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2019-12-01 09:59  dysdhd  阅读(116)  评论(0)    收藏  举报