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
運行並且訪問:
大家可以多啟動幾個 發布服務端口 然后 玩玩 就集群效果 我就不做展示了