Dubbo支持協議
Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多種協議,但是Dubbo官網是推薦我們使用Dubbo協議的。
Spring Cloud 項目feign客戶端 繼承依賴方式實現重構項目
jar: 打成jar包
pom:依賴被被人繼承的 公共依賴 字符模塊
war:達成一個web項目 里面包含jar包、WEB-INF
toov5-dubbo-parent pom
toov5-public-api-service pom 提供會員接口 jar類型 pom項目沒有Java代碼的哦
toov5-api-member-service
toov5-api-member-service-impl 會員接口實現類(這個不是公開的) (點擊parent創建的,需要引入 實現的interface )
toov5-dubbo-order-web jar(springboot) 訂單項目 調用會員項目 ps:訂單調用會員時候 引入公共接口 底層調用dubbo協議 幫助實現 *(dubbo原理 拿到類的class的地址信息,反射。)
parent引入共同依賴:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>toov5-dubbo-parent </groupId>
<artifactId>dubbo-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<curator-framework.version>4.0.1</curator-framework.version>
<zookeeper.version>3.4.13</zookeeper.version>
<dubbo.starter.version>0.2.0</dubbo.starter.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.starter.version}</version>
</dependency>
<!-- <dependency 在上面已經實現好了>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator-framework.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<modules>
<module>toov5-api-member-service-impl</module>
<module>toov5-public-api-service</module>
</modules>
</project>
點擊parent 創建 maven pom :toov5-public-api-service (公共接口maven model) 點擊 toov5-public-api-service 創建 toov5-api-member-service jar (寫接口 interface)
點擊parent 創建 maven jar : toov5-api-member-service-impl 並且 引入: toov5-api-member-service 的依賴 dependency
接口:
package com.toov.api.member.service; public interface MemberService { public String getUser(); }
實現類:
package com.toov.api.member.service.impl; import com.alibaba.dubbo.config.annotation.Service; import com.toov.api.member.service.MemberService; @Service public class MemberServiceImpl implements MemberService { public String getUser() { System.out.println("訂單服務調用會員服務"); return "訂單服務調用會員服務成功"; } }
啟動類:
package com.toov.api.member.service.impl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; @EnableDubbo @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
yml:
server:
port: 8080
dubbo:
application:
name: member
#表示采用的dubbo協議
protocol:
name: dubbo
#發布的端口號
port: 20880
registry:
address: zookeeper://192.168.91.5:2181
PS:如果需要寫版本號的 springboot沒有幫你整合 如果不需要寫版本號 已經幫忙整合了
Dubbo發布時候 采用注解方式! 使用 @Service注解 進行發布服務
記得采用 Dubbo 而不是 spring 的注解!
區別: spring 提供的 是注入到Spring容器中 dubbo是注冊到注冊中心去!
掃的實現類 注冊到dubbo 注冊中心中去
啟動效果:

點擊parent 創建 toov5-dubbo-order-web jar 然后引入接口依賴!
package toov5.order.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference; import com.toov.api.member.service.MemberService; @RestController public class OrderController { @Reference //dubbo提供的 而不是@Autowired private MemberService memberService; @RequestMapping("/orde") public String orderToMember() { return memberService.getUser(); } }
啟動類:
package toov5.order.controller; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; @EnableDubbo @SpringBootApplication public class AppOrder { public static void main(String[] args) { SpringApplication.run(AppOrder.class, args); } }
yml
server:
port: 8082 #tomcat端口號
###dubbo 注冊服務名稱
dubbo:
application:
name: order
registry:
address: zookeeper://192.168.91.5:2181
consumer: #調用服務的超時時間
timeout: 5000
運行並且訪問:

大家可以多啟動幾個 發布服務端口 然后 玩玩 就集群效果 我就不做展示了
