首页 欧冠联赛正文

w88优德中文手机版_w88手机版_w88优德手机中文版

admin 欧冠联赛 2019-11-06 282 0

假如我的文章对您有协助,请重视支撑下作者的大众号:极客挖掘机,谢谢:)

1. 概述

或许说起来Dubbo,很多人都不生疏,这毕竟是一款从2012年就开端开源的Java RPC结构,中心由于各式各样的原因中止更新4年半的时刻,中心只发过一个小版别修了一个小bug,乃至咱们都认为这个项目现已死掉了,居然又在2017年9月份康复了更新,不可谓不奇特。

网络上很多人都拿Dubbo和Spring Cloud做比照,或许在咱们的心目中,这两个结构是能够画上等号的吧,后来在网络上有一个十分盛行的表格,比较详细的比照了 Spring Cloud 和 Dubbo ,表格如下:

以上列举了一些中心部件,当然这儿需求声明一点,Dubbo关于上表中总结为“无”的组件不代表不能完成,而仅仅Dubbo结构本身不供给,需求别的整合以完成对应的功用,这样看起来的确Dubbo更像是Spring Cloud的一个子集。

Dubbo 在国内拥有着巨大的用户群,咱们期望在运用 Dubbo 的一起享用 Spring Cloud 的生态,呈现各式各样的整合计划,可是由于服务中心的不同,各种整合计划并不是那么天然,直到 Spring Cloud Alibaba 这个项目呈现,由官方供给了 Nacos 服务注册中心后,才将这个问题完美的处理。而且供给了 Dubbo 和 Spring Cloud 整合的计划,命名为: Dubbo Spring Cloud 。

1.2 Dubbo Spring Cloud 概述

Dubbo Spring Cloud 构建在原生的 Spring Cloud 之上,其服务办理方面的才能可认为是 Spring Cloud Plus, 不只彻底掩盖 Spring Cloud 原生特性,而且供给更为安稳和成熟的完成,特性比对如下表所示:

以上比照表格摘自Dubbo Spring Cloud官方文档。

而且Dubbo Spring Cloud 依据 Dubbo Spring Boot 2.7.1 和 Spring Cloud 2.x 开发,不管开发人员是 Dubbo 用户仍是 Spring Cloud 用户, 都能轻松地驾御,并以挨近“零”本钱的价值使运用向上搬迁。Dubbo Spring Cloud 致力于简化云原生开发本钱,以达到进步研制效能以及进步运用功用等意图。

1.3 Dubbo Spring Cloud 首要特性

  • 面向接口署理的高功用RPC调用:供给高功用的依据署理的长途调用才能,服务以接口为粒度,屏蔽了长途调用底层细节。
  • 智能负载均衡:内置多种负载均衡战略,智能感知下流节点健康状况,明显削减调用推迟,进步体系吞吐量。
  • 服务主动注册与发现:支撑多种注册中心服务,服务实例上下线实时感知。
  • 高度可扩展才能:遵从微内核+插件的规划准则,一切中心才能如Protocol、Transport、Serialization被规划为扩展点,相等对待内置完成和第三方完成。
  • 运行期流量调度:内置条件、脚本等路由战略,经过装备不同的路由规矩,轻松完成灰度发布,同机房优先等功用。
  • 可视化的服务办理与运维:供给丰厚服务办理、运维东西:随时查询服务元数据、服务健康状况及调用计算,实时下发路由战略、调整装备参数。

1.4 Spring Cloud 为什么需求RPC

在Spring Cloud构建的微服务体系中,大多数的开发者运用都是官方供给的Feign组件来进行内部服务通讯,这种声明式的HTTP客户端运用起来十分的简练、便利、高雅,可是有一点,在运用Feign消费服务的时分,相比较Dubbo这种RPC结构而言,功用堪忧。

虽然在微服务架构中,会讲依照事务区分的微服务独立布置,而且运行在各自的进程中。微服务之间的通讯愈加倾向于运用HTTP这种简答的通讯机制,大多数状况都会运用REST API。这种通讯方法十分的简练高效,而且和开发渠道、言语无关,可是通常状况下,HTTP并不会敞开KeepAlive功用,即当时衔接为短衔接,短衔接的缺陷是每次恳求都需求树立TCP衔接,这使得其功率变的适当低下。

对外部供给REST API服务是一件十分好的工作,可是假如内部调用也是运用HTTP调用方法,就会显得显得功用低下,Spring Cloud默许运用的Feign组件进行内部服务调用便是运用的HTTP协议进行调用,这时,咱们假如内部服务运用RPC调用,对外运用REST API,将会是一个十分不错的挑选,恰巧,Dubbo Spring Cloud给了咱们这种挑选的完成方法。

2. 实战

本小结将会以一个简略的入门事例,介绍一下在运用Nacos作为服务中心,运用Dubbo来完成服务供给方和服务消费方的事例。

Nacos的装置、布置装备和运用现已在前面的章节介绍过了,这儿不再赘述,假如还有不清楚的读者,请参阅前面的Nacos系列文章:

《Spring Cloud Alibaba | Nacos服务中心初探》

《Spring Cloud Alibaba | Nacos服务注册与发现》

《Spring Cloud Alibaba | Nacos集群布置》

《Spring Cloud Alibaba | Nacos装备办理》

2.1 创立父工程 dubbo-spring-cloud-demo

父工程依靠pom.xml如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/pom.xml





org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import


com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import





org.springframework.boot
spring-boot-starter-actuator


org.springframework.boot
spring-boot-starter-web



com.alibaba.cloud
spring-cloud-starter-dubbo



com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery


org.projectlombok
lombok
true


org.springframework.boot
spring-boot-starter-test
test


留意:

  1. 有必要包括spring-boot-starter-actuator包,否则发动会报错。
  2. spring-cloud-starter-dubbo包需求留意groupId,依据详细运用的spring cloud alibaba版别依靠来确认。
  • 假如运用孵化版别,运用的groupId为:org.springframework.cloud
  • 假如运用结业版别,运用的groupId为:com.alibaba.cloud
  1. 以上引证未指定版别,需显现的声明

2.2 创立子工程 dubbo_api

API模块,寄存Dubbo服务接口和模型界说,非必要,这儿创立仅为更好的代码重用以及接口、模型标准操控办理。

界说笼统接口HelloService.java:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_api/src/main/java/com/springcloud/dubbo_api/service/HelloService.java


public interface HelloService {
String hello(String name);
}

2.3 创立子工程 dubbo_provider ,Dubbo服务供给方

工程依靠pom.xml如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_provider/pom.xml




com.springcloud.book
ch13_1_dubbo_api
${project.version}

此处引进公共API模块。

完成Dubbo接口,HelloServiceI.java如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_provider/src/main/java/com/springcloud/dubbo_provider/service/HelloServiceI.java


@Service
public class HelloServiceI implements HelloService {
@Override
public String hello(String name) {
return "Hello " + name;
}
}

留意:这儿的@Service注解并不是来自Spring的org.springframework.stereotype.Service,而是Dubbo的org.apache.dubbo.config.annotation.Service,千万不要引证过错。这儿的@Service注解仅声明该Java服务(本地)完成为Dubbo服务。

装备文件 application.yml 需求将Java服务(本地)装备为 Dubbo 服务(长途)如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_provider/src/main/resources/application.yml


server:
port: 8000
dubbo:
scan:
base-packages: com.springcloud.book.ch13_1_dubbo_provider.service
protocol:
name: dubbo
port: -1
registry:
address: spring-cloud://192.168.44.129
spring:
application:
name: dubbo-spring-cloud-provider
cloud:
nacos:
discovery:
server-addr: 192.168.44.129:8848
main:
allow-bean-definition-overriding: true

留意:在露出Dubbo服务方面,引荐运用外部化装备的方法,即指定Java服务完成类的扫描基准包。

Dubbo Spring Cloud 承继了 Dubbo Spring Boot 的外部化装备特性,也能够经过标示 @DubboComponentScan 来完成基准包扫描。

  • dubbo.scan.base-packages:指定 Dubbo 服务完成类的扫描基准包
  • dubbo.protocol:Dubbo服务露出的协议装备,其中子特点name为协议称号,port为协议端口(-1 表明自增端口,从 20880 开端)
  • dubbo.registry:Dubbo 服务注册中心装备,其中子特点address 的值 "spring-cloud://192.168.44.129",阐明挂载到 Spring Cloud 注册中心
  • spring.application.name:Spring 运用称号,用于 Spring Cloud 服务注册和发现。该值在 Dubbo Spring Cloud 加持下被视作dubbo.application.name,因而,无需再显现地装备dubbo.application.name。
  • spring.main.allow-bean-definition-overriding:在 Spring Boot 2.1 以及更高的版别添加该设定,由于 Spring Boot 默许调整了 Bean 界说掩盖行为。
  • spring.cloud.nacos.discovery:Nacos 服务发现与注册装备,其中子特点 server-addr 指定 Nacos 服务器主机和端口。

创立运用主类Ch131DubboProviderApplication.java:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_provider/src/main/java/com/springcloud/dubbo_provider/DubboProviderApplication.java


@SpringBootApplication
@EnableDiscoveryClient
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}

2.4 创立子工程 dubbo_consumer ,服务调用方:

工程依靠pom.xml如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_consumer/pom.xml




com.springcloud.book
ch13_1_dubbo_api
${project.version}

工程装备application.yml如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_consumer/src/main/resources/application.yml


server:
port: 8080
dubbo:
protocol:
name: dubbo
port: -1
registry:
address: spring-cloud://192.168.44.129
cloud:
subscribed-services: dubbo-spring-cloud-provider
spring:
application:
name: dubbo-spring-cloud-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.44.129:8848
main:
allow-bean-definition-overriding: true
  • dubbo.cloud.subscribed-services:表明要订阅服务的服务名,能够装备'*',代表订阅一切服务,不引荐运用。若需订阅多运用,运用 "," 切割。

测验接口HelloController.java如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_consumer/src/main/java/com/springcloud/dubbo_consumer/controller/HelloController.java


@RestController
public class HelloController {
@Reference
private HelloService helloService;
@GetMapping("/hello")
public String hello() {
return helloService.hello("Dubbo!");
}
}

留意:这儿的@Reference注解是org.apache.dubbo.config.annotation.Reference。

发动主类Ch131DubboConsumerApplication.java如下:

代码清单:Alibaba/dubbo-spring-cloud-demo/dubbo_consumer/src/main/java/com/springcloud/dubbo_consumer/DubboConsumerApplication.java


@SpringBootApplication
@EnableDiscoveryClient
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}

2.5 测验

发动子工程 dubbo_provider 和子工程 dubbo_consumer ,发动完成后,咱们能够拜访Nacos操控台的服务列表上看到两个服务,如图:

咱们翻开浏览器拜访:http://localhost:8080/hello ,能够看到页面正常显现Hello Dubbo!,测验成功,如图:

3. 示例代码

示例代码-Github:https://github.com/meteor1993/SpringCloudLearning/tree/master/Alibaba/dubbo-spring-cloud-demo

示例代码-Gitee:https://gitee.com/inwsy/SpringCloudLearning/tree/master/Alibaba/dubbo-spring-cloud-demo

4. 参阅

Dubbo Spring Cloud 官方文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/Dubbo-Spring-Cloud

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

最近发表

    w优德88com_优德w88手机下载_w88优德app

    http://www.taiwanesevoice.net/

    |

    Powered By

    使用手机软件扫描微信二维码

    关注我们可获取更多热点资讯

    w88出品