亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

maven+springmvc+dubbo+zookeeper

Original 2016-11-03 16:45:58 515
abstrakt:為什么要用dubbo? 還是讓官方來解釋吧:http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/ 一般 nginx+tomcat         | ----> Controller1--------->service1請求----->nginx  |    

為什么要用dubbo?

 

還是讓官方來解釋吧:

http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/

 

一般 nginx+tomcat

         | ----> Controller1--------->service1

請求----->nginx  |

         |----->Controller2--------->service2

請求進了Controller 就只有一條路可以走了

 

使用dubbo后

              | ------->service1

請求------>Controller---->   |

              |---------->service2

簡單的說 也就是 一個Contoller 我可以部署多個 service   。

 

一般的mvc項目 包含 Controller、Servicei、ServiceImpl、dao三層

使用doubbo我們可以把項目拆分:

Controller 作為 “消費著” 一個項目

ServiceImpl +dao 作為 “提供者” 一個項目

Servicei “接口” 可以作為一個項目

我們可以部署多個“提供著”。。。。。。。。。。。。。。。。。。。 

Zookeeper作為Dubbo服務的注冊中心,Dubbo原先基于數(shù)據(jù)庫的注冊中心,沒采用Zookeeper,Zookeeper一個分布式的服務框架,是樹型的目錄服務的數(shù)據(jù)存儲,能做到集群管理數(shù)據(jù) ,這里能很好的作為Dubbo服務的注冊中心,Dubbo能與Zookeeper做到集群部署,當提供者出現(xiàn)斷電等異常停機時,Zookeeper注冊中心能自動刪除提供者信息,當提供者重啟時,能自動恢復注冊數(shù)據(jù),以及訂閱請求。我們先在linux上安裝Zookeeper,我們安裝最簡單的單點

Windons 安裝Zookeeper 

1,Zookeeper 官網(wǎng)下載windons 版本,(不會下載百度)

單機安裝非常簡單,只要獲取到 Zookeeper 的壓縮包并解壓到某個目錄如

wKioL1gayqiA24f3AAGc29LICkg728.png

Zookeeper 的啟動腳本在 bin 目錄下,Windows 下的啟動腳本是 zkServer.cmd。

 

在你執(zhí)行啟動腳本之前,還有幾個基本的配置項需要配置一下,Zookeeper 的配置文件在 conf 目錄下,這個目錄下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是將 zoo_sample.cfg 改名為 zoo.cfg,因為 Zookeeper 在啟動時會找這個文件作為默認配置文件。下面詳細介紹一下,這個配置文件中各個配置項的意義。

wKioL1gayqiA24f3AAGc29LICkg728.png

打開以后

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181

ickTime:這個時間是作為 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發(fā)送一個心跳。

dataDir:顧名思義就是 Zookeeper 保存數(shù)據(jù)的目錄,默認情況下,Zookeeper 將寫數(shù)據(jù)的日志文件也保存在這個目錄里。

clientPort:這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監(jiān)聽這個端口,接受客戶端的訪問請求。

二.dubbo-admin。 dubbo管控臺的安裝

下載地址 http://dubbo.io/Download-zh.htm

wKioL1gayqiA24f3AAGc29LICkg728.png

下載 dubbo-admin-2.5.3.war  

解壓之后:

wKioL1gayqiA24f3AAGc29LICkg728.png

修改 META-INF/dubbo.properties文件

dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

address:zookeeper 的ip地址 后面是端口號  ,和zookeeper中配置的端口號一樣

修改完成后需要一個tomcat   打開tomcat     \webapps\ROOT 目錄 ,此目錄放置的是tomcat的首頁,刪除所有的文件,將解壓后修改好的所有的dubbo-admin 里的文件復制到 \webapps\ROOT中,

 

此時我們已經(jīng)配置好了?,F(xiàn)在可以啟動tomcat了 (主意:在啟動tomcat之前要先啟動zookeeper ,啟動zookeeper前面有介紹)。 啟動tomcat之后 在瀏覽器輸入 http://localhost:8080  (我的是8083) 進入dubbo管控臺的主頁

wKioL1gayqiA24f3AAGc29LICkg728.png

用戶名和密碼就是dubbo.properties 中配置的 默認的是 用戶名 :root, 密碼:root 

輸入用戶名和密碼之后 進入首頁  

wKioL1gayqiA24f3AAGc29LICkg728.png

當然現(xiàn)在還沒有 消費者 和 提供者 

現(xiàn)在我們來開發(fā)   消費者  和 提供者

配置 好 zookeeper之后 搭建 maven+springmvc+dubbo環(huán)境

新建3個maven項目

wKioL1gayqiA24f3AAGc29LICkg728.png

1,test-dubbo-provider ,java項目,作為提供者,serviceImpl 和dao 層

2,test-public-interface ,java項目,存放公共的接口 ,servicei        是service的接口  (備注:1要依賴2,  3也要依賴2)

3,test-web-consumer,web項目,存放 Controller 和 頁面 

 

首先我們來開發(fā) 服務的提供者也就是 test-dubbo-provider ,目錄結(jié)構(gòu)為

wKioL1gayqiA24f3AAGc29LICkg728.png

ApplicationContent-dubbo.xml        dubbo服務的配置文件(名字隨意)     (待會再介紹)

ApplicationContent.xml       spring的配置文件

這兩個配置文件 必須要放到 MATE-INF/spring/下面 (原因后面再說)

 

UserServiceImpl.java  借口的實現(xiàn)類

package com.cl.user.serviceImpl;
 
import org.springframework.stereotype.Service;
 
import com.cl.user.servicei.UserService;
 
@Service("userService")
public class UserServiceImpl implements UserService{
 
    @Override
    public String sayHello() {
         
        System.out.println("hello world----------------------------");
         
        return "hello world";
         
    }
}

有了 實現(xiàn)類 還需要接口  也就是項目test-public-interface

wKioL1gayqiA24f3AAGc29LICkg728.png

這個項目很簡單 只需要 接口 就行了

package com.cl.user.servicei;
 
public interface UserService {
    public String sayHello();
 
}

當然 項目 1 要 依賴 項目 2  

所以在1 的 pom.xml 中 有

<dependency>
            <groupId>test-web</groupId>
            <artifactId>test-pubilc-interface</artifactId>       加入項目2依賴
            <version>0.0.1-SNAPSHOT</version>
            <scope>test</scope>
</dependency>

那么 1 中的 UserServiceImpl 就可以實現(xiàn) UserService接口

 當然我們用到 dubbo 就要有dubbo的核心jar包  所以在1 的 pom.xml 中 有

1 <dependency>
2     <groupId>com.alibaba</groupId> 
3     <artifactId>dubbo</artifactId>
4     <version>2.5.3</version>
5 </dependency>

還要有 zookeeper的  所以在1 的 pom.xml 中 有

1 <dependency>
2         <groupId>org.apache.zookeeper</groupId>
3         <artifactId>zookeeper</artifactId>
4         <version>3.3.3</version>
5 </dependency>

下面介紹一下項目1 中 的 ApplicationContent-dubbo.xml   和  ApplicationContent.xml 

 

ApplicationContent.xml  主要是spring的配置 不多說。

<!-- 啟動組件掃描,排除@Controller組件,該組件由SpringMVC配置文件掃描 -->
     <context:component-scan base-package="com.cl.user.serviceImpl"/>

ApplicationContent-dubbo.xml   dubbo服務的配置

<!-- 提供方應用信息,用于計算依賴關(guān)系 -->
    <dubbo:application name="hehe_provider" />
    <!-- 使用zookeeper注冊中心暴露服務地址   端口是zookeeper 中配置的2181-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
    <!-- 用dubbo協(xié)議在20880端口暴露服務 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 具體的實現(xiàn)bean -->
    <bean id="userService" class="com.cl.user.serviceImpl.UserServiceImpl" />
    <!-- 聲明需要暴露的服務接口 -->
    <dubbo:service interface="com.cl.user.servicei.UserService" ref="userService" />

主意:有可能你的配置文件中不識別 <dubbo:>  去網(wǎng)上找解決的辦法

 

到這里我們的  “提供者” 即 服務   已經(jīng)開發(fā)完了,那么如何啟動服務呢?  在項目1中有個start.java 

wKioL1gayqiA24f3AAGc29LICkg728.png

package com.test;

import org.apache.log4j.PropertyConfigurator;

public class start {
     static{  
            PropertyConfigurator.configure("src/main/resources/log4j.properties");  
        }  
    public static void main(String[] args) {
        
        com.alibaba.dubbo.container.Main.main(args);
    }
}

主意里面有main方法,可以直接運行啟動了。別急?。?! 之前還有個問題就是為什   ApplicationContent-dubbo.xml   和  ApplicationContent.xml    這兩個配置文件 必須要放到 /MATE-INF/spring/下面

因為  com.alibaba.dubbo.container.Main.main(args)  默認就會去加載 /MATE-INF/spring/ 下的配置文件

我們來看一下源碼

wKioL1gayqiA24f3AAGc29LICkg728.png

看完源碼 這下明白為什么了吧?。。。。。。。。。。。。。。。?!

 

啟動服務后  我們在 dubbo-admin中就能看到我們剛才開發(fā)的的  “提供者”

wKioL1gayqiA24f3AAGc29LICkg728.png

192.168.56.1 是本地局域網(wǎng) 地址

 

這是 “提供者”  此時還沒有“消費者”   接下來我們就要開發(fā) “消費者”


Versionshinweise

Beliebte Eintr?ge