栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

dubbox(分布式服务)框架+注册中心zookeeper+dubbox入门案例

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

dubbox(分布式服务)框架+注册中心zookeeper+dubbox入门案例

一、分布式基础理论 1.什么是分布式系统

《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”
分布式系统(distributed system)是建立在网络之上的软件系统。
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

2.发展演变

1.单一应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。
缺点:1、性能扩展比较难;2、协同开发问题;3、不利于升级维护

2.垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。
缺点:公用模块无法重复利用,开发性的浪费

3.分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

4.流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键。

二、dubbox框架

1.dubbox简介


三、注册中心zookeeper

1.zookeeper介绍

2.在windows下解压zookeeper文件夹,进入bin目录,进入cmd,输入zkServer.cmd即可启动Zookeeper

#zookeeper百度网盘下载地址
链接:https://pan.baidu.com/s/1LwvdS2vh4HO0CSh2796tIA 
提取码:czwi



3.在linux下启动zookeeper

第一步:使用FileZilla上传linux的zookeeper的压缩包到root/download

第二步:解压压缩包

tar -zxvf zookeeper-3.4.6.tar.gz



2.进入 zookeeper-3.4.6 目录,创建 data 文件夹

mkdir data


3.进入 conf 目录 ,把 zoo_sample.cfg 改名为 zoo.cfg

cd conf 
mv zoo_sample.cfg zoo.cfg


打开 zoo.cfg , 修改 data 属性:dataDir=/root/zookeeper-3.4.6/data

vim zoo.cfg
dataDir=/root/zookeeper-3.4.6/data
esc-->shift+q-->:wq保存



启动zookeeper
进入 bin 目录,启动服务输入命令

./zkServer.sh start


输出以下内容表示启动成功

JMX enabled by default
Using config: /root/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

关闭服务输入命令

./zkServer.sh stop


查看服务状态

./zkServer.sh status

如果是启动状态则是以下提示

JMX enabled by default
Using config: /root/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: standalone

四、dubbox入门案例


1.创建父工程



在父工程的pom.xml中添加依赖


  UTF-8
  1.7
  1.7
  4.2.4.RELEASE



  
  
    org.springframework
    spring-context
    ${spring.version}
  
  
    org.springframework
    spring-beans
    ${spring.version}
  
  
    org.springframework
    spring-webmvc
    ${spring.version}
  
  
    org.springframework
    spring-jdbc
    ${spring.version}
  
  
    org.springframework
    spring-aspects
    ${spring.version}
  
  
    org.springframework
    spring-jms
    ${spring.version}
  
  
    org.springframework
    spring-context-support
    ${spring.version}
  
  
  
    com.alibaba
    dubbo
    2.8.4
  
  
    org.apache.zookeeper
    zookeeper
    3.4.6
  
  
    com.github.sgroschupf
    zkclient
    0.1
  
  
    javassist
    javassist
    3.11.0.GA
  
  
    junit
    junit
    4.11
    test
  

2.定义服务提供方


创建服务提供方接口和实现类

package com.oracle.dubbox.service;

public interface UserService {
    public String getName();
}
package com.oracle.dubbox.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.oracle.dubbox.service.UserService;

@Service
public class UserServiceImpl implements UserService {

    @Override
    public String getName() {
        return "hello dubbox...";
    }
}

创建配置文件applicationContext-service.xml




    
    
    

配置web.xml




  
  
    contextConfigLocation
    classpath:applicationContext*.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  

在pom.xml里面配置tomcat7插件


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.1
    
        8081
        tomcat7
    

最后服务提供方的结构如下所示

3.定义服务消费方


将dubbo_provider里面的接口及所在的包拷贝至dubbo_consumer里面来

package com.oracle.dubbox.service;

public interface UserService {
    public String getName();
}

定义controller

package com.oracle.dubbox.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.oracle.dubbox.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/user")
public class UserController {
    @Reference
    UserService userService;

    @RequestMapping("/showName")
    @ResponseBody
    public String showName() {
        return userService.getName();
    }
}

注意:这里使用@Reference注解,不能使用@Autowired。

配置springmvc.xml




    
        
            
                
            
        
    
    
    
    

定义web.xml




  Archetype Created Web Application
  
  
    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      utf-8
    
    
      forceEncoding
      true
    
  
  
    CharacterEncodingFilter
    /*
  

  
    springmvc
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:springmvc.xml
    
  

  
    springmvc
    *.do
  

配置tomcat7插件


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.1
    
        8082
        tomcat7
    

4.启动测试



访问: http://localhost:8082/dubbox-consumer/user/showName.do


注意:

如果dubbo的版本最好为2.8.4,不然会报依赖的异常,如果maven仓库中没有该版本的jar包可以在下方百度网盘中拷贝,然后放置到maven对应的仓库中去

链接:https://pan.baidu.com/s/1ttW0e9EO_zIGON30VvhH3Q 
提取码:08gx



上面项目的zookeeper是架设在Linux操作系统上的,如果要改成windows操作系统的,只需要将ip改成127.0.0.7,然后启动windows版本下的zookeeper

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/912453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号