1.创建父工程
Idea或Eclipse创建普通Maven工程,GAV定义随意,也可以参考我的
G:com.youzha
A:Dubbo_Soul
V:1.0-SNAPSHOT
父pom完整文件(该文件包括三个子module,在之后创建)
2.创建共用Dubbo_Api
2.1 pom
2.2 创建共用资源
整体目录结构:
|── com.youzha.dubbo
|── dto 封装共用返回Result
|── entity 共用参数,返回Body
|── service 暴露Service,提供给第三方使用
publicinterfaceUserservice
/大*
*ID查找用户
用户ID
@paramid
USER对象
@return
UserfindById(intid);
@Data
@ToString
@Altargsconstructor
SResultDtoTimplementsserializable
publicclassR
privateintcode;
privatestringmsg;
privateTdata;
publicResultDTo(intcode,tigmg)
this.code
-code;
this.msg-msg;
@Data
@ALtArgsConstructor
@NoArgsconstructor
@ToString
publicclassUserimplementsserializabte
privateIntegerid;
privatestringname;
privateLongage;
privateDatebirthDay;
3.创建提供者Dubbo_Provider
3.1 pom
3.2 Service
需要注意的是,这里的@Service引自:import com.alibaba.dubbo.config.annotation.Service;,标注其为一个Dubbo的Service,而下面的@Component才是将其注入成一个Spring Bean。
3.3 Controller
这里的Controller模拟多个服务,除提供Dubbo接口外,自身还提供Http接口。
3.4 启动类Application
3.5 配置文件
4.创建消费者Dubbo_Consumer
4.1 pom
4.2 Service
4.2.1 定义Sevice
这个Service是我们自己业务所需,只是在这个Service中的某些数据我们要调用Provider服务而已,这个和Provider提供的service本身没有直接关系,也不需要保持方法名,入参的完全一致,只是引用。
4.2.2 定义ServiceImpl
说明:
●实现是的我们自身的业务接口
●通过dubbo的@Reference注解,注入Provider的Service【而提供者是通过dubbo的@Service注解暴露,暴露和注入都在zookeeper获取】
4.3 Controller
4.4 启动类Application
4.5 配置文件
5.验证
5.1 运行zookeeper
当然前提是需要安装zk,配置文件也可以看到我这里启动的本地zk(如果你使用的其他地址的zk,替换上图zk的地址即可),如果没有可以参考这个附件:
zookeeper.rar(70.7 MB)
运行前你需要解压打开:zookeeper-3.4.14\conf\zoo.cfg,确保对应的dataDir在你本地存在,如果是Linux系统换成对应的路径即可,下图示例:Windows本地
#Thenumberofmillisecondsofeachtick
tickTime-2000
#Thenumberofticksthattheinitial
#synchronizationphasecantake
initLimit-10
#Thenumberofticksthatcanpassbetween
#sendingarequestandgettinganacknowledgeme
syncLimit-5
#thedirectorywherethesnapshotisstored
#donotuse/tmpforstorage,/tmphereisjus
#examplesakes
dataDiraD:izookeeperldata
#theportatwhichtheclientswillconnect
clientPort-2181
#themaximumnumberofclientconnections
#increasethisifyo
sifyouneedtohandlemoreclients
#maxClientCnxns-60
进入:zookeeper-3.4.14\bin,
如果你和我一样是Windows环境测试,双击:zkServer.cmd,
如果你是Linux环境,启动zkServer.sh,二者效果完全一致,启动后类似下图则表示启动完成:
CAWindowsisystem32\cmdexe
2020-02-@415:1?:4615[yid:
INFO
Lmain:Environmente100]
Seruer
enuifonm
entijava.compilernA
[main:Enuironmente100
INFO
2020-02-0415:17:46151[myi:
Seryerenviron
entaos.name-Windows?
2020420415:17:46151[yid:-INFo[m
Ro[main:Environmente100]
SerueF
enuifonm
entios.arch-and64
202907-0415:17:46153aroe
Seruer
enuironm
entios.uersion-6.1
2020-02-0415:1?:46153[myid:
INFO
Lmain:Environmente100]
Seruerenvironm
entauser-name-Administrator
Lmain:Engironmente100]
INFO
2020-020415:17:46153[myidINi
Seruerenvifonm
ent:user.hone-calUsersadministrator
2029070415:17:46.153a
Seruer
ronm
enu
ent:user.dir-D:zookeeperzookeeper-3.4.14bin
2020-02-415:17:46166[myid:]
J-INFO
LmainZookeeperseruerc836]
ticktime
tto2000
2020070415:17:46.
minSession
imeoutsetto-1
202042-0415:12:46168yi:INFo
ainZookeeperserver28541maxSeso
imeoutsetto-1
[mainSeruerCnxnFactorye1171Using
2020020415:17:46.210[yid:-INFO
org
apachek
INFO[mainaNioserverCnxnFactorye891-binding
2020-020415:17:46.215Lmyid:]-INFC
toporto.o.o.o/0.0.0.02181
5.2 启动提供者
直接启动对应的启动类Application即可。
5.3 启动消费者
直接启动对应的启动类Application即可。
5.4 请求验证
http://ocalhost9092consumegeUseByldkid-
GET
BodyPre-requestSaripr
Authoryzation
Settings
Headers(
Tests
Paroms
QueryParams
KEY
VALUE
Value
Headers(5)
Body
Cookies
TestResults
JSON
Preview
Pretty
Visualize
Raw
code":200
"msg":"获取成功",
Data:f
iq:1,
youzha"
age":1
birthDay:2929-87-84T89:46:23910+0000"
10
postman发送地址请求:http://localhost:9092/consumer/getUserById?id=1
查看消费者日志:
工云:下
ILUMYWWUWWUEIVHCEUSEUVHETMMUEEWURIC
2020878417:45:59.0961N1026144-
mainls.c.s..ntocesshu
wm:mm:mu/,边,
"rulewam":"/consumer/consumer/*"enbledtru
.
bw.oo
2920070417:45:59258IN
LnitializingExecutorService
581N10201M4---1
mainlo.S.S.concurfent.threadPoollaskxecutor
'aPplicstionTaskExecuLor'
202010417:4559.6451N020144
maino.s.ba.eweb.EndpaintlinksHesoler
Expasing2endpoint(s)beneathbasepa
'actuator
Tomcatstartedonport(6):9a97(http)wth
7071078417:45:59706INF070144
main]o.5.h.m.ebedded.tocat.Toacatkebserer
StartedDubhucorsmerAppleatonin7.123
2020070417:45:59708T
INFN20144
MIn]eyuuzha.ob.nutocngerppllrton
SECONDsJMFunningTorB498
4D172.16.30.17]u.a.c.c.c.ouca.ocqs.
IniLialidingSpringDispalcherSerle
2020070417:45:00471INF020144
dispatcherSerVlet
InitializingServletdispatcherserylet
2020070417:46:00472INF020144
Josweb.serylet.DispatcheRSerlet
2026076417:46:00519
TNFN20144
1n.fwh.sewvier.pipatcherserlet
[nio-99q2-exec-6lc.v.dubbo.controronnto
2920-070417:46:23164INF020144
10209417:46398107Lmlumy.mom
海袁欢取用户,已为:cr(小,
name-youzha2g-birtDa
查看提供者日志:
RuDuslbowd:cDatbonvwwiusuApuhulic
工安A流
UHAIUEWHPOLLWNUNMMI
Initiatingclientconnection,
2020070117128
tommtstrin-177.0.8.1
r-arp.tatee.kelienl7kclirnt41cc7119
DUBBOCONAUMETADOLKAUONSOY
202007117:15:28630IN011968
[elientConnector]
HAITiNgFOrKEEPERSTATESYNcConNecTed
QRgIoItec.zkclientZkclient
2026076417:45:78673TF011968
127.0.0.1:21877BuCHekPERCeNCIX
OpcningsockeleonclonLooerver
17.00
3020076417:47:78674TNF011968
[127.0.0.1:2181..-mpacteokcrurclenlCex
Sockelcocetionestablisthedlo127.0.0
1/127.0.01:2181initiatingsession
2026070417:45:28736INF0119681
127.6.0.1:218E..pache.oukcerer.clicntcn
Sessionestablishnentcompleleonserver
127001
2020070417:45:28.738INF011968---
2w0keepersLlechanged(SyncCorirecleo)
ttr[ventThrenjott.torlec.ckclienl.zkclienl
2020U1041/:1512BJ41NI1196-
main]o.s.b.w.embedded.tomcat.
contexlpathor
202041/:4512B99IN011964--
mainley
startedDubbaProviderhpplicationin6.54
]cyouzha.dubbo.bubboproviderpplication
Secords(Mrunningtor7.571)
p1/2.16.8.1/o.c.LLomcatl.fLocaihost.
292081841/:45:299511M01196日
小ispetcherSerylet*
D-1/2.16.30.1/o.s.mb.serlet.Dispatchensere
LnitializingSeryletdispatcherseret
2820870417:45:299511N01196
D172.16.30.177L0..mbservlet.DispatcherSur
2020070417:45:29.967TNF011968
:Coaoletedinitalizationin16ms
[:26w89thread-2]c.y.dubbo.serce.m.u
提侨奇返叫数器:USEr(id-
2020078417:46:23910INF01196
熠1birthDaySatu476:23T02
6.总结
如果你在本章节,运行并未出现上述效果,可能是哪里出错了,我们在接下来的网关接入,一样比对着可以修复,你可以百度自行解决当前问题,也可直接进入下一章节,进行网关接入,一起验证。