dubbo入门

dubbo 作为一项分布式服务调度框架,可以将系统的服务组件化,将服务单独抽取出来。提高系统的性能,当然,这个也仅限于分布式的服务当中。dubbo的架构图如下:
dubbo入门

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的赣县网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

dubbo的特性:
1 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3 基于注册中心目录服务,使服务消费方能动态的查×××提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

dubbo 可以做什么:
1 透明化的远程方法调用(就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。)
2 软负载均衡及容错机制(可在内网替代F5等硬件负载均衡器,降低成本,减少单点。)
3 服务自动注册与发现(不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。)

dubbo 应用场景
1.RPC分布式服务
当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等。
比如:为了适用不断变化的市场需求,以及多个垂直应用之间数据交互方便,我们把公共的业务抽取出来作为独立的模块,为其他的应用提供服务,系统逐渐依赖于抽象和rpc远程服务调用。
2.配置管理
当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
3.服务依赖
当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
4.服务扩容
接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?等等……

dubbo官方推荐利用zookeeper来当做服务注册中心,至于zookeeper的特性及应用场景在另外一篇文章中也有提到,这次利用zookeeper的windows版本进行dubbo的入门学习。zookeeper的windows版本安装比较简单,主要可以分为三步。
1、下载zookeeper安装包进行解压。
2、到解压目录的conf下面复制zoo_sample.cfg为zoo.cfg。修改zoo.cfg包括端口、数据路径(dataDir)、数据日志路径(dataLogDir)
3、运行bin下面的zkServer.cmd即可。

dubbo-helloworld 工程
缩写的dubbo-helloworld工程结构如下图:
dubbo入门

    在api工程里面定义接口
package org.hzg.dubbo.api.service;
/**
 * Created by hzg on 2019/3/13
 */
public interface DubboHelloworldApi {
    //接口
    public void helloWorldInterface();
}

在service工程里面实现接口

package org.hzg.dubbo.service.service.impl;
import org.hzg.dubbo.api.service.DubboHelloworldApi;
import org.springframework.stereotype.Service;
/**
 * Created by hzg on 2019/3/15
 */
@Service("helloWorldImpl")
public class DubboHelloWorldApiImpl implements DubboHelloworldApi {
    @Override
    public void helloWorldInterface() {
        System.out.println("调用成功。。。。。。。。。。。。。。。。。。。。。。。。。。。。");
    }
}

在service工程里面进行zookeeper相关配置

    
    
    
    
    
    
    
    

在web工程里面进行zookeeper配置


    

    
    

    
    

web工程里面的controller

package org.hzg.dubbo.web.controller;
import org.hzg.dubbo.web.service.HelloWorldService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * Created by hzg on 2019/3/15
 */
@Controller
public class HelloWorldController {
    @Autowired
    private HelloWorldService helloWorldService;
    @RequestMapping("/index")
    public String index() {
        return "index";
    }
    @RequestMapping("/hello")
    @ResponseBody
    public String sayHello() {
        return "hello";
    }
    @RequestMapping("/helloDubbo")
    @ResponseBody
    public String sayHelloDubbo() {
        helloWorldService.dubboHelloWorld();
        return "this is the first step";
    }
}

web工程里面的service

package org.hzg.dubbo.web.service;

import org.hzg.dubbo.api.service.DubboHelloworldApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Created by hzg on 2019/3/15
 */
@Service
public class HelloWorldService {
    @Autowired
    private DubboHelloworldApi dubboHelloworldApi;   //这里就是api里面定义的接口
    public void dubboHelloWorld() {
        dubboHelloworldApi.helloWorldInterface();
    }
}

以上都是一些主要的配置,至于pom文件,tomcat,spring等配置,这里不再赘述,接下来,看效果:
1、启动zookeeper
dubbo入门

2、启动service服务(可以看到启动成功和一些注册成功的服务信息)
dubbo入门

3、启动消费者,即web工程
dubbo入门

访问:127.0.0.1:8080/helloDubbo
dubbo入门

可以看到服务提供方的日志打印
dubbo入门


文章名称:dubbo入门
本文链接:http://pwwzsj.com/article/jjhoee.html