真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

Spring整合Dubbo框架過程及原理解析

這篇文章主要介紹了Spring整合Dubbo框架過程及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

創(chuàng)新互聯(lián)是少有的網站設計制作、做網站、營銷型企業(yè)網站、成都微信小程序、手機APP,開發(fā)、制作、設計、買友情鏈接、推廣優(yōu)化一站式服務網絡公司,從2013年成立,堅持透明化,價格低,無套路經營理念。讓網頁驚喜每一位訪客多年來深受用戶好評

Dubbo作為一個RPC框架,其最核心的功能就是要實現(xiàn)跨網絡的遠程調用。演示過程創(chuàng)建兩個小工程,一個作為服務的提供者,一個作為服務的消費者。通過Dubbo來實現(xiàn)服務消費者遠程調用服務提供者的方法。

dubbo 的使用需要一個注冊中心,這里以Zookeeper為例來演示

1.Dubbo架構

Dubbo架構圖(Dubbo官方提供)如下:

Spring整合Dubbo框架過程及原理解析

Spring整合Dubbo框架過程及原理解析

節(jié)點角色說明:

節(jié)點角色名稱
Provider暴露服務的服務提供方
Consumer調用遠程服務的服務消費方
Registry服務注冊與發(fā)現(xiàn)的注冊中心
Monitor統(tǒng)計服務的調用次數(shù)和調用時間的監(jiān)控中心
Container服務運行容器

調用關系說明:

服務容器負責啟動,加載,運行服務提供者。

服務提供者在啟動時,向注冊中心注冊自己提供的服務。

服務消費者在啟動時,向注冊中心訂閱自己所需的服務。

注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。

服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。

服務消費者和提供者,在內存中累計調用次數(shù)和調用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。

2.服務提供者開發(fā)

(1) 創(chuàng)建maven工程(打包方式為war)dubbodemo_provider,添加依賴pom.xml代碼如下

<?xml version="1.0" encoding="UTF-8"?>

  
  4.0.0
  war
  
  dubbodemo_provider
 
 
    
      com.alibaba
      dubbo
      2.6.6
    
    
    
      io.netty
      netty-all
      4.1.32.Final
    
    
      org.apache.curator
      curator-framework
      4.0.0
      
        
          org.apache.zookeeper
          zookeeper
        
      
    
    
      org.apache.zookeeper
      zookeeper
      3.4.7
    
    
      com.github.sgroschupf
      zkclient
      0.1
    
    
      javassist
      javassist
      3.12.1.GA
    
    
      com.alibaba
      fastjson
      1.2.47
    
  
 

(2) 配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>


 
 
  contextConfigLocation
  classpath:spring/applicationContext-provider.xml
 
 
  org.springframework.web.context.ContextLoaderListener
 

(3) 創(chuàng)建服務接口

package com.test.dubbo.api;
public interface HelloService {
  public String sayHello(String name);
}

(4) 創(chuàng)建服務實現(xiàn)類

package com.test.service.impl;

import com.test.dubbo.api.HelloService;
//這個service并不是spring提供的,是dubbo的service代替的
import com.alibaba.dubbo.config.annotation.Service;

@Service //把此服務注冊到zookeeper
public class HelloServiceImpl implements HelloService {
  public String sayHello(String name) {
   return "hello " + name;
  }
}

==注意==:服務實現(xiàn)類上使用的Service注解是Dubbo提供的,用于對外發(fā)布服務

(5) 在src/main/resources下創(chuàng)建applicationContext-provider.xml

<?xml version="1.0" encoding="UTF-8"?>

  
  
  
  
  
  
  
  

6)啟動服務 也就是把spring容器啟動即可

可以用tomcat啟動項目

也可以用main方法加載spring配置文件,也就是啟動了spring容器

在com.itheima包下創(chuàng)建一個DemoProvider類來啟動spring容器,代碼如下

package com.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class DemoProvider {

  public static void main(String[] args) throws IOException {
//    加載配置文件,啟動容器
    ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-provider.xml");
    app.start();
    System.in.read(); //等待控制臺回車。如果不回車就一直卡這兒不繼續(xù)
  }
}

3.服務消費者開發(fā)

開發(fā)步驟:

(1) 創(chuàng)建maven工程(打包方式為war)dubbodemo_consumer,pom.xml配置和上面服務提供者相同

(2) 配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>


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

 
  springmvc
  *.do
 

(3) 將服務提供者工程中的HelloService接口復制到當前工程

(4) 編寫Controller

package com.test.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.itheima.dubbo.api.HelloService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/demo")
public class HelloController {
  @Reference//這里使用dubbo提供的,用來代替@Autowired來注入服務
  private HelloService helloService;

  @RequestMapping("/hello")
  @ResponseBody
  public String getName(String name){
   //遠程調用
   String result = helloService.sayHello(name);
   System.out.println(result);
   return result;
  }
}

==注意==:Controller中注入HelloService使用的是Dubbo提供的@Reference注解

(5) 在src/main/resources下創(chuàng)建spring文件夾,再創(chuàng)建springmvc.xml文件

<?xml version="1.0" encoding="UTF-8"?>


    
  

  
  
  
  
  
  

  
  


dubbo的使用小demo已經完成。大家可以嘗試一下

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


名稱欄目:Spring整合Dubbo框架過程及原理解析
瀏覽地址:http://weahome.cn/article/ijhehg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部