基於Dubbox的微服實戰學習3——使用Dubbox+SpringBoot實現微服架構

基於Dubbox的微服實戰學習3——使用Dubbox+SpringBoot實現微服架構
0.問題
1.依賴環境介紹
2.運行原理介紹
3.環境搭建補充
4.基礎服務模塊介紹
5.提供者服務實現
6.消費者服務實現

7.搶購網設計介紹



0.問題

問題1.壓縮包中的jar包,在部分公網環境下,無法使用maven以來直接獲取

壓縮包中的jar包,在部分公網環境下,無法使用maven以來直接獲取。如出現此種情況,使用者可以將相關jar包,使用nexus直接上傳至私服。還有一種解決方法。

jar包位置是:E:\spring-boot-starter-dubbo-1.0.0.jar

E:\>mvn install:install-file -Dfile=.\spring-boot-starter-dubbo-1.0.0.jar -Dgrou
pId=com.alibaba.hl -DartifactId=spring-boot-starter-dubbo -Dversion=1.0.0 -Dpack
ageing=jar
E:\
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom
---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.952 s
[INFO] Finished at: 2018-06-08T15:22:33+08:00
[INFO] Final Memory: 8M/113M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4
:install-file (default-cli) on project standalone-pom: The artifact information
is incomplete or not valid:
[ERROR]   [0]  'packaging' is missing.
[ERROR]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception
E:\>mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=
.\spring-boot-starter-dubbo-1.0.0.jar -DgroupId=com.alibaba.hl -DartifactId=spri
ng-boot-starter-dubbo -Dversion=1.0.0 -Dpackageing=jar
E:\
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install-file (default-cli) @ standalone-po
m ---
[INFO] Installing E:\spring-boot-starter-dubbo-1.0.0.jar to E:\local\repo\com\al
ibaba\hl\spring-boot-starter-dubbo\1.0.0\spring-boot-starter-dubbo-1.0.0.jar
[INFO] Installing C:\Users\ADMINI~1\AppData\Local\Temp\mvninstall328720955820700
6406.pom to E:\local\repo\com\alibaba\hl\spring-boot-starter-dubbo\1.0.0\spring-
boot-starter-dubbo-1.0.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.602 s
[INFO] Finished at: 2018-06-08T15:26:15+08:00
[INFO] Final Memory: 7M/114M
[INFO] ------------------------------------------------------------------------

E:\>

第一條命令不能執行,執行第二條命令。

錯誤解決方法http://maven.apache.org/plugins/maven-install-plugin/examples/custom-pom-installation.html


2.“java.lang.IllegalStateException: Zookeeper is not connected yet!”

運行shop-user-provider報錯“java.lang.IllegalStateException: Zookeeper is not connected yet!

環境描述:

我把一個臺式機當服務器。臺式機是連接的有線。ip地址是192.168.32.135。
臺式機上安裝了虛擬機,是網橋模式,ip地址是192.168.32.134。虛擬機就是安裝的大數據的dockerfile-master.
我用筆記本可以連接192.168.32.134。瀏覽器輸入mq.local.com,da.local.com,都可以訪問。數據庫訪問134,也可以。redis也可以方法134。

但是我運行shop-user-provider報錯“java.lang.IllegalStateException: Zookeeper is not connected yet!”

項目shop-user-provider的application.properties

spring.datasource.url=jdbc:mysql://192.168.32.134:3306/qg_user_db?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
spring.dubbo.appname=spring-boot-starter-dubbo-user-provider
#spring.dubbo.registry=zookeeper://192.168.32.134:2181
spring.dubbo.registry=zookeeper://192.168.32.134:2181
spring.dubbo.protocol=dubbo
spring.dubbo.port=20802
server.port=8092

#Redis數據庫索引(默認爲0)
spring.redis.database=0
#Redis服務器地址
spring.redis.host=192.168.32.134
#Redis服務器連接端口
spring.redis.port=6379
#Redis服務器連接密碼(默認爲空)
spring.redis.user=root
spring.redis.password=123456
#連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=8
#連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
#連接池中的最大空閒連接
spring.redis.pool.max-idle=8
#連接池中的最小空閒連接
spring.redis.pool.min-idle=0
#連接超時時間(毫秒)
spring.redis.timeout=3000

項目shop-user-consumer的applicaiton.properties

spring.datasource.url=jdbc:mysql://192.168.32.134:3306/qg_user_db?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#dubbo
spring.dubbo.appname=spring-boot-starter-dubbo-user-consumer
spring.dubbo.registry=zookeeper://192.168.32.134:2181
#spring.dubbo.registry=zookeeper://192.168.10.5:2181
spring.dubbo.protocol=dubbo
spring.dubbo.port=20807
server.port=8082


#Redis數據庫索引(默認爲0)
spring.redis.database=0
#Redis服務器地址
spring.redis.host=192.168.32.134
#Redis服務器連接端口
spring.redis.port=6379
#Redis服務器連接密碼(默認爲空)
spring.redis.user=root
spring.redis.password=123456
#連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=8
#連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1
#連接池中的最大空閒連接
spring.redis.pool.max-idle=8
#連接池中的最小空閒連接
spring.redis.pool.min-idle=0
#連接超時時間(毫秒)
spring.redis.timeout=3000

原因:zookeeper的地址沒有映射出去。端口2181確定有沒有映射出去。

在shipyard可視化工具裏面


解決方法:

run.sh zookeeper可以重新運行一遍。

root@ubuntu:/home/docker/tools/dokerfiles-master/env10.1# ./run.sh zookeeper
env10_5_Zookeeper01
env10_5_Zookeeper01
acdd5ed7e25a7a799c1c863acd880b060d9623b57761733ced60d733d37c784c

3.服務註冊不到dubbo中。

問題描述:解決了問題2,項目運行不報錯了。但是在瀏覽器輸入da.local.com。發現服務沒有剛纔運行的幾個項目。

原因:確定dubbo 裏有指定zookeeper地址嗎

解決方法:

dubbo的dubbo.properties原來是

[root@966f2b7ce1b0 WEB-INF]# cat dubbo.properties
dubbo.registry.address=zookeeper://192.168.10.5:2181
#dubbo.registry.username=root
#dubbo.registry.password=root
dubbo.registry.protocol=zookeeper
dubbo.admin.root.password=root

改一下dubbo.register.address=zookeeper:192.168.32.134:2181

改地址應該填寫:zookeeper容器所在宿主機的IP還有你映射出來的端口

改完後,需要重啓tomcat


1.依賴環境介紹

Dubbo
http://dubbo.io/
Dubbox
https://github.com/dangdangdotcom/dubbox


Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的RPC實現服務的輸出和輸入功能,可以和Spring框架無縫集成,
Dubbox是噹噹網對Dubbo的升級和改良
依賴環境:
JDK,WEB容器(Tomcat),Zookeeper環境,Maven環境。


2.運行原理介紹

Provider:暴露服務的服務提供方
Consumer:調用遠程服務的服務消費方
Registry:提供註冊與調用服務的註冊中心
Monitor:統計服務的調用次數和調用時間的監控中心
Container:服務運行容器



3.環境搭建補充

Zookeeper
 安裝,啓動
 注意:把conf/zoo_sample.cfg改成zoo.cfg
Dubbox
 安裝
 編譯 mvn install -Dmaven.test.skip=true
 修改dubbo.properties配置文件,指向zookeeper地址
 啓動


4.基礎服務模塊介紹

Dubbox實現提供者服務
Dubbox實現消費者服務
cn.bdqn.vo.TokenVO :用戶憑據


5.提供者服務實現



zookeeper://192.168.10.5:2181
da.local.com: http://192.168.10.203:8080
mq.local.com: http://192.168.10.6:8161




spring.datasource.url=jdbc:mysql://192.168.32.251:3306/qg_user_db?useUnicode=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-location=classpath:mapper/*Mapper.xml


spring.dubbo.appname=spring-boot-starter-dubbo-user-consumer


#zookeeper的地址
spring.dubbo.registry=zookeeper://192.168.9.150:2181
spring.dubbo.protocol=dubbo
spring.dubbo.port=20807
server.port=8082


spring.redis.database=0
#redis服務器地址
spring.redis.host=192.168.9.150
spring.redis.port=6379
spring.redis.user=root
spring.redis.password=123456
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章