jsp購(gòu)物網(wǎng)站開(kāi)發(fā)教程專(zhuān)業(yè)網(wǎng)站seo推廣
入門(mén)案例之前我們先介紹一下:zookeeper。
Zookeeper是Apacahe Hadoop的子項(xiàng)目,可以為分布式應(yīng)用程序協(xié)調(diào)服務(wù),適合作為Dubbo服務(wù)的注冊(cè)中心,負(fù)責(zé)服務(wù)地址的注冊(cè)與查找,相當(dāng)于目錄服務(wù),服務(wù)提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互。
就不用安裝了,我會(huì)上傳一個(gè)安裝包。
總結(jié):
????????1、什么是zookeeper?
?? ??? ?????????zookeeper:負(fù)責(zé)管理ip和port,是服務(wù)提供者和服務(wù)消費(fèi)者的注冊(cè)中心
?? ???? 2、zookeeper的安裝和啟動(dòng)
?? ??? ?????????安裝:
?? ??? ?????????? ?解壓即安裝
?? ??????????? ?啟動(dòng):
?? ??????????? ??? ?雙擊bin/zkServer.cmd
開(kāi)始入門(mén)案例:(項(xiàng)目結(jié)構(gòu))
父工程的pom.xml
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version></parent>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Dubbo Spring Boot Starter --><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.1.0</version></dependency><!-- 由于使?了zookeeper作為注冊(cè)中?,則需要加?zookeeper的客戶(hù)端jar包: --><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency></dependencies>
1、dobbo_interface模塊
這個(gè)模塊中我們就只寫(xiě)一個(gè)接口模擬一下就可以.
在com.by.service中寫(xiě)一個(gè)HelloService接口
/** Copyright (c) 2020, 2024, All rights reserved.**/
package com.by.service;/*** <p>Project: dubbo_parent - HelloService</p>* <p>Powered by scl On 2024-01-17 13:56:01</p>* <p>描述:<p>** @author 孫臣龍 [1846080280@qq.com]* @version 1.0* @since 17*/
public interface HelloService {String hello();
}
2、dobbo_provider模塊
在這個(gè)模塊中我們需要做:實(shí)現(xiàn)上個(gè)模塊的接口,創(chuàng)建spring boot的啟動(dòng)類(lèi),創(chuàng)建配置類(lèi)
pom.xml:
<dependencies><dependency><groupId>com.by</groupId><artifactId>dubbo_interface</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
HelloServiceImpl:(注意這個(gè)@Service注解是dubbo下的)
/** Copyright (c) 2020, 2024, All rights reserved.**/
package com.by.service;import com.alibaba.dubbo.config.annotation.Service;/*** <p>Project: dubbo_parent - HelloServiceImpl</p>* <p>Powered by scl On 2024-01-17 13:57:42</p>* <p>描述:<p>** @author 孫臣龍 [1846080280@qq.com]* @version 1.0* @since 17*/
@Service
public class HelloServiceImpl implements HelloService{@Overridepublic String hello() {return "你好啊!!!";}
}
啟動(dòng)類(lèi):DubboProviderApp:
/** Copyright (c) 2020, 2024, All rights reserved.**/
package com.by;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** <p>Project: dubbo_parent - DubboProviderApp</p>* <p>Powered by scl On 2024-01-17 13:59:35</p>* <p>描述:<p>** @author 孫臣龍 [1846080280@qq.com]* @version 1.0* @since 17*/
@SpringBootApplication
@EnableDubbo //讓dubbo去掃描dubbo的注解
public class DubboProviderApp {public static void main(String[] args) {SpringApplication.run(DubboProviderApp.class,args);}
}
application.properties:
#zookeeper\u7684\u5730\u5740
dubbo.registry.address=zookeeper://127.0.0.1:2181
#\u901A\u8BAF\u534F\u8BAE\uFF1Armi\u3001http\u3001dubbo
dubbo.protocol.name=dubbo
#\u5F53\u524D\u670D\u52A1\u7684\u540D\u79F0
dubbo.application.name=dubbo-provider
3、dobbo_consumer模塊
在這個(gè)模塊中我們需要測(cè)試一下我們的功能。實(shí)現(xiàn)上個(gè)模塊的接口,創(chuàng)建spring boot的啟動(dòng)類(lèi),創(chuàng)建配置類(lèi)。
pom.xml:
<dependencies><dependency><groupId>com.by</groupId><artifactId>dubbo_interface</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
HelloController:(注意:@Reference也是dubbo下的)
/** Copyright (c) 2020, 2024, All rights reserved.**/
package com.by.controller;import com.alibaba.dubbo.config.annotation.Reference;
import com.by.service.HelloService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/*** <p>Project: dubbo_parent - HelloController</p>* <p>Powered by scl On 2024-01-17 15:02:44</p>* <p>描述:<p>** @author 孫臣龍 [1846080280@qq.com]* @version 1.0* @since 17*/
@Controller
public class HelloController {@Referenceprivate HelloService helloService;@RequestMapping("/hello")@ResponseBodypublic String hello(){return helloService.hello();}
}
啟動(dòng)類(lèi):DubboConsumerApplication:
/** Copyright (c) 2020, 2024, All rights reserved.**/
package com.by;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** <p>Project: dubbo_parent - DubboConsumerApplication</p>* <p>Powered by scl On 2024-01-17 15:00:04</p>* <p>描述:<p>** @author 孫臣龍 [1846080280@qq.com]* @version 1.0* @since 17*/
@SpringBootApplication
@EnableDubbo
public class DubboConsumerApplication {public static void main(String[] args) {SpringApplication.run(DubboConsumerApplication.class,args);}
}
配置文件:application.porperties
#zookeeper\u7684\u5730\u5740
dubbo.registry.address=zookeeper://127.0.0.1:2181
#\u901A\u8BAF\u534F\u8BAE\uFF1Armi\u3001http\u3001dubbo
dubbo.protocol.name=dubbo
#\u5F53\u524D\u670D\u52A1\u7684\u540D\u79F0
dubbo.application.name=dubbo-consumer
server.port=80
注意:
?? ??? ?1、zookeeper必須啟動(dòng)
?? ??? ?2、 @Reference 和 @Service必須到dubbo的包
?? ??? ?3、必須先啟動(dòng)provider再起consumer
??????? 4、模塊provider和consumer的端口號(hào)要區(qū)分開(kāi)
結(jié)果展示: