日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

maven+springmvc+dubbo+zookeeper

發布時間:2025/3/21 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven+springmvc+dubbo+zookeeper 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么要用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原先基于數據庫的注冊中心,沒采用Zookeeper,Zookeeper一個分布式的服務框架,是樹型的目錄服務的數據存儲,能做到集群管理數據?,這里能很好的作為Dubbo服務的注冊中心,Dubbo能與Zookeeper做到集群部署,當提供者出現斷電等異常停機時,Zookeeper注冊中心能自動刪除提供者信息,當提供者重啟時,能自動恢復注冊數據,以及訂閱請求。我們先在linux上安裝Zookeeper,我們安裝最簡單的單點 Windons 安裝Zookeeper 1,Zookeeper 官網下載windons 版本,(不會下載百度) 單機安裝非常簡單,只要獲取到 Zookeeper 的壓縮包并解壓到某個目錄如 打開目錄機構為: Zookeeper 的啟動腳本在 bin 目錄下,Windows 下的啟動腳本是 zkServer.cmd。 在你執行啟動腳本之前,還有幾個基本的配置項需要配置一下,Zookeeper 的配置文件在 conf 目錄下,這個目錄下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是將 zoo_sample.cfg 改名為 zoo.cfg,因為 Zookeeper 在啟動時會找這個文件作為默認配置文件。下面詳細介紹一下,這個配置文件中各個配置項的意義。 打開以后
1 2 3 4 5 6 7 8 9 10 11 12 # 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

  

  • tickTime:這個時間是作為 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。
  • dataDir:顧名思義就是 Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日志文件也保存在這個目錄里。
  • clientPort:這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
二.dubbo-admin。 dubbo管控臺的安裝 下載地址 http://dubbo.io/Download-zh.htm 下載 dubbo-admin-2.5.3.war ? 解壓之后: 修改 META-INF/dubbo.properties文件
1 2 3 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中,

?

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

(備注:使用jdk1.8 tomcat啟動可能會出錯 ?有關 URI。。。。 的錯誤。我最后換成1.7了)

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

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

?

當然現在還沒有 消費者 和 提供者? 現在我們來開發 ? 消費者 ?和 提供者 配置 好 zookeeper之后 搭建 maven+springmvc+dubbo環境 新建3個maven項目 1,test-dubbo-provider ,java項目,作為提供者,serviceImpl 和dao 層 2,test-public-interface ,java項目,存放公共的接口 ,servicei ? ? ? ?是service的接口 ?(備注:1要依賴2, ?3也要依賴2) 3,test-web-consumer,web項目,存放 Controller 和 頁面? 首先我們來開發 服務的提供者也就是?test-dubbo-provider ,目錄結構為 ApplicationContent-dubbo.xml ? ? ? ?dubbo服務的配置文件(名字隨意) ? ? (待會再介紹) ApplicationContent.xml ? ? ? spring的配置文件 這兩個配置文件 必須要放到 MATE-INF/spring/下面 (原因后面再說) UserServiceImpl.java ?借口的實現類
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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"; ????????? ????} }
有了 實現類 還需要接口 ?也就是項目test-public-interface? 這個項目很簡單 只需要 接口 就行了
1 2 3 4 5 6 package com.cl.user.servicei; public interface UserService { ????public String sayHello(); }

當然 項目 1 要 依賴 項目 2 ?

所以在1 的 pom.xml 中 有

?

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

那么 1 中的 UserServiceImpl 就可以實現 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的配置 不多說。 1 <!-- 啟動組件掃描,排除@Controller組件,該組件由SpringMVC配置文件掃描 --> 2 <context:component-scan base-package="com.cl.user.serviceImpl"/>

ApplicationContent-dubbo.xml ? dubbo服務的配置

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

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

?

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

1 package com.test;2 3 import org.apache.log4j.PropertyConfigurator;4 5 public class start {6 static{ 7 PropertyConfigurator.configure("src/main/resources/log4j.properties"); 8 } 9 public static void main(String[] args) { 10 11 com.alibaba.dubbo.container.Main.main(args); 12 } 13 }

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

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

我們來看一下源碼

看完源碼 這下明白為什么了吧!!!!!!!!!!!!!!!!! 啟動服務后 ?我們在 dubbo-admin中就能看到我們剛才開發的的 ?“提供者” 192.168.56.1 是本地局域網 地址 這是 “提供者” ?此時還沒有“消費者” ? 接下來我們就要開發 “消費者” test-web-consumer ?? UserController.java @Controller public class UserController {@Resource(name="userService")private UserService userService;@RequestMapping("/hello/test/world")public void sayHello(){System.out.println(userService.sayHello()+"**************************");} }

ApplicationContext-mvc.xml 都是springmvc的配置 如下不解釋了

<mvc:annotation-driven/><mvc:default-servlet-handler/><context:component-scan base-package="com" /><!-- 對靜態資源文件的訪問 restful--> <mvc:resources mapping="/js/**" location="/js/" /><mvc:resources mapping="/lib/**" location="/lib/" /><mvc:resources mapping="/plugins/**" location="/plugins/" /><mvc:resources mapping="/uploadFiles/**" location="/uploadFiles/" /> <mvc:resources mapping="/WEB-INF/html/**" location="/WEB-INF/html/" /> <!-- 配置SpringMVC的視圖解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/html"/><property name="suffix" value=".jsp"/></bean><!-- 上傳攔截,如最大上傳值及最小上傳值 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" > <property name="maxUploadSize"> <value>104857600</value> </property> <property name="maxInMemorySize"> <value>4096</value> </property> <property name="defaultEncoding"> <value>utf-8</value> </property> </bean>

ApplicationContext-dubbo.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 消費方應用名,用于計算依賴關系,不是匹配條件,不要與提供方一樣 --> <dubbo:application name="hehe_consumer" /> <!-- 使用zookeeper注冊中心暴露服務地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 組播注冊 --><!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> --><!-- 生成遠程服務代理,可以像使用本地bean一樣使用userService --> <dubbo:reference id="userService" interface="com.cl.user.servicei.UserService" /> </beans>

?開發完消費者后 ,啟動消費者,可以在管控臺看到

?

完了!! ? ? ?Dubbo更多詳細的東西還去官網的用戶手冊尋找吧!! ?http://dubbo.io/User+Guide-zh.htm???http://dubbo.io/? ? 用戶手冊說的挺詳細的!這里僅供參考! 最后 ,在開發的時候為了方便,我們可以使用組播注冊! <!-- 組播注冊 --><!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> --> 源碼: https://github.com/KellyLChen/Dubbo.git

總結

以上是生活随笔為你收集整理的maven+springmvc+dubbo+zookeeper的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。