热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

分布式开发-Zooker+dubbo入门-Demo

知了堂姐
2024-07-08 17:22:16
0

1.什么是SOA架构

SOA 是Service-Oriented Architecture的首字母简称,它是一个面向服务的架构模式(俗称:分布式;面服务的分布式)

为什么互联网项目会采用SOA架构呢?随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行。

2.Dubbo框架

Dubbo是一个分布式框架,由阿里巴巴团队开发的开源项目,在电商系统(高可用,高并发,高扩展)广泛的用用

Dubbo也是RPC远程服务调用一套解决方案,以及SOA服务治理方案

3.Dubbo框架原理

节点角色说明:

· Provider: 暴露服务的服务提供方。

· Consumer: 调用远程服务的服务消费方。

· Registry: 服务注册与发现的注册中心。

· Monitor: 统计服务的调用次调和调用时间的监控中心。

· Container: 服务运行容器。

调用关系说明:

· 0. 服务容器负责启动,加载,运行服务提供者。

· 1. 服务提供者在启动时,向注册中心注册自己提供的服务。

· 2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

· 3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推

送变更数据给消费者。

· 4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,

如果调用失败,再选另一台调用。

· 5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计

数据到监控中心。

4.zookeeper + dubbo 的入门demo

思路:

(1)根据dubbo的原理图,案例中涉及到两个服务:服务提供者;服务消费者

(2)技术栈:spring+dubbo+zookeeper

(3)服务提供者:service层提供

(4)服务消费者:controller层提供

(5)但是两个程序不在同一个web服务器上,我们会设置两个服务端口8081;8082

(6)zookeeper就是我们服务的注册中心

服务提供者编码

(1)创建maven工程,在pom.xml中引入依赖,同时打tomcat7-maven-plugin的插件

dubbo框架的版本 2.5.3,不支持最新的spring5.x的版本,目前的版本是spring4.x的版本

加入log4j的依赖包【重要】

log4j.rootLogger=INFO,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

 





    4.0.0

    com.zlt
    dubbocustomer
    1.0-SNAPSHOT
    war

    dubbocustomer Maven Webapp
    
    http://www.example.com

    
        UTF-8
        1.7
        1.7
    

    
        
            junit
            junit
            4.11
            test
        

        
            org.springframework
            spring-webmvc
            4.0.3.RELEASE
        

 



            com.alibaba
            dubbo
            2.5.3
            
                
                    org.springframework
                    spring
                
            
        

        
            org.apache.zookeeper
            zookeeper
            3.4.6
        

        
            com.github.sgroschupf
            zkclient
            0.1
        

        
            log4j
            log4j
            1.2.16
        

    

    
        dubbocustomer
        
            
                
                    maven-clean-plugin
                    3.1.0
                
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.8.0
                
                
                    maven-surefire-plugin
                    2.22.1
                
                
                    maven-war-plugin
                    3.2.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
                
                    org.apache.tomcat.maven
                    tomcat7-maven-plugin
                    2.2
                    
                        8082
                        /
                        UTF-8
                        tomcat7
                    
                
            
        
    

 


(2)在工程的web.xml文件添加加载spring.xml配置文件的代码




  Archetype Created Web Application

  
    contextConfigLocation
    classpath:spring/spring.xml
  

  
    org.springframework.web.context.ContextLoaderListener
  

(3)编写spring.xml文件,加入dubbo.xsd的配置




    
    
    


(4)创建UserService

package com.zlt.service;

public interface UserService {
    public String getName();
}

(5)创建UserServiceImpl,添加@Service注解,但是@Service注解来自dubbo包

package com.zlt.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.zlt.service.UserService;

@Service
public class UserServiceImpl implements UserService {

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

}

(6)通过maven来运行项目工程

命令:tomcat7:run,此命令是一个maven命令。如果第一次加入tomcat7-maven-plugin,需要在运行此命令的时候进行插件的下载

(7)tomcat7-maven-plugin插件命令【扩展】

tomcat7:run,启动嵌入tomcat,并运行当前项目

tomcat7:deploy,部署一个web war包

tomcat7:reload,重新加载web war包

tomcat7:start,启动tomcat

tomcat7:stop,停止tomcat

tomcat7:undeploy,停止一个web war包

服务消费方编码

(1)继续创建maven-webapp工程,pom.xml代码和前面的一样

(2)创建spring-mvc.xml配置文件

 

(3)在web.xml文件,加载spring-mvc.xml配置文件,并设置好SpringMVC的核心控制器




    Archetype Created Web Application

    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
        
            forceEncoding
            true
        
    

    
        characterEncodingFilter
        /*
    
    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring/spring-mvc.xml
        
    
    
        springmvc
        /
    

(3)拷贝业务接口到dubbocustomer项目工程里面

(4)创建IndexController,同时依赖UserService接口。注意:这里通过阿里的@Reference注解完成依赖关系

package com.zlt.controller;

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

@Controller
public class IndexController {

    @Reference
    private UserService userService; // 依赖注入UserService

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

}

(5)修改spring-mvc.xml配置文件,加入阿里的dubbo的配置




    

    
    
    


(6)测试,http://localhost:8082/index,通过8082的端口中index接口去访问8081端口中的service。

大家都在看

什么是虚拟化技术及工作原理

2024-07-08 浏览次数:0

前端培训班出来能找到工作吗?好的培训班无须担心就...

2024-07-08 浏览次数:0

成都web前端好找工作吗?成都前端就业情况分析

2024-07-08 浏览次数:0

深入浅出讲解HTTPS工作原理

2024-07-08 浏览次数:0

学Java要学数据结构吗?数据结构的重要性总结

2024-07-08 浏览次数:0

应届生最想去的国企单位名单,我都整理出来了!

2024-07-08 浏览次数:0
最新资讯
http://www.example.com UTF-8 1.7 1.7 junit junit 4.11 test org.springframework spring-webmvc 4.0.3.RELEASE

 



            com.alibaba
            dubbo
            2.5.3
            
                
                    org.springframework
                    spring
                
            
        

        
            org.apache.zookeeper
            zookeeper
            3.4.6
        

        
            com.github.sgroschupf
            zkclient
            0.1
        

        
            log4j
            log4j
            1.2.16
        

    

    
        dubbocustomer
        
            
                
                    maven-clean-plugin
                    3.1.0
                
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.8.0
                
                
                    maven-surefire-plugin
                    2.22.1
                
                
                    maven-war-plugin
                    3.2.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
                
                    org.apache.tomcat.maven
                    tomcat7-maven-plugin
                    2.2
                    
                        8082
                        /
                        UTF-8
                        tomcat7
                    
                
            
        
    

 


(2)在工程的web.xml文件添加加载spring.xml配置文件的代码




  Archetype Created Web Application

  
    contextConfigLocation
    classpath:spring/spring.xml
  

  
    org.springframework.web.context.ContextLoaderListener
  

(3)编写spring.xml文件,加入dubbo.xsd的配置




    
    
    


(4)创建UserService

package com.zlt.service;

public interface UserService {
    public String getName();
}

(5)创建UserServiceImpl,添加@Service注解,但是@Service注解来自dubbo包

package com.zlt.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.zlt.service.UserService;

@Service
public class UserServiceImpl implements UserService {

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

}

(6)通过maven来运行项目工程

命令:tomcat7:run,此命令是一个maven命令。如果第一次加入tomcat7-maven-plugin,需要在运行此命令的时候进行插件的下载

(7)tomcat7-maven-plugin插件命令【扩展】

tomcat7:run,启动嵌入tomcat,并运行当前项目

tomcat7:deploy,部署一个web war包

tomcat7:reload,重新加载web war包

tomcat7:start,启动tomcat

tomcat7:stop,停止tomcat

tomcat7:undeploy,停止一个web war包

服务消费方编码

(1)继续创建maven-webapp工程,pom.xml代码和前面的一样

(2)创建spring-mvc.xml配置文件

 

(3)在web.xml文件,加载spring-mvc.xml配置文件,并设置好SpringMVC的核心控制器




    Archetype Created Web Application

    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
        
            forceEncoding
            true
        
    

    
        characterEncodingFilter
        /*
    
    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring/spring-mvc.xml
        
    
    
        springmvc
        /
    

(3)拷贝业务接口到dubbocustomer项目工程里面

(4)创建IndexController,同时依赖UserService接口。注意:这里通过阿里的@Reference注解完成依赖关系

package com.zlt.controller;

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

@Controller
public class IndexController {

    @Reference
    private UserService userService; // 依赖注入UserService

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

}

(5)修改spring-mvc.xml配置文件,加入阿里的dubbo的配置




    

    
    
    


(6)测试,http://localhost:8082/index,通过8082的端口中index接口去访问8081端口中的service。

上一篇:在绝望中寻找希望

下一篇:2019就业成果,是时候向大家汇报了

相关内容

热门资讯

就业课程介绍(Java+前端+... Java+大数据,前端全栈,信息安全
关于我们 请输入文章描述
0基础转行信安,他如何做到月薪... 转行并非简单的换份工作,而是我们在职场进行自我认同、重塑身份的一个过程。今天知了小姐姐为大家介绍一位...
【前端每日一题】什么是BFC?... 秋招马上就要开始了,小伙伴们最近在准备面试的东西没呢,知了姐今天将蛋糕哥整理的前端面试题共享出来,同...
cisp考试费用多少?cisp... 随着网络技术的快速发展,网络安全问题变得越来越重要。那么,CISP考试费用多少?CISP报名条件是什...
pythone 文件和数据格式... 关于 Python 对文件的处理,以下选项中描述错误的是
img标签的onerror事件... 1.img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗? src 指定一个远程...
知了堂官网V3第一版内测邀请 经过几个月的加班加点,我们终于迎来了知了堂官网3.1.0版本 现正招募内测中
网络安全运维岗面试题及答案详解... 在当今数字化时代,网络安全运维工程师的角色变得愈发重要。为了保障网络安全,各个企业都需要拥有一支经验...
川农第一次线下拓展精彩瞬间 5月15日,知了堂的哥哥姐姐们携手企业拓展教练浩浩荡荡奔赴川农。
-->