在优锐课的学习分享中,我们可以看到关于如何在阿里巴巴的Spring Cloud实现中使用这个流行的RPC框架。

1、Spring Cloud Alibaba

Spring Cloud Alibaba是Alibaba Cloud的Spring Cloud版本。 它由几个阿里巴巴的开源项目Nacos,Sentinel和RocketMQ以及几个阿里云原生商业产品组成,以增强用户在阿里云上的体验。 Spring Cloud Alibaba的新版本还将提供Dubbo作为RPC选择。

Dubbo是一个经过严格实践的RPC框架。 在另一篇文章中,我演示了如何将其与注释一起使用。 该示例使用的是Spring Boot。 Dubbo与Spring Boot紧密集成。 将Dubbo放在Spring Cloud Alibaba上似乎很自然。

在本文中,我们将使用一个简单的echo示例来说明在Spring Cloud Alibaba上使用Dubbo的步骤。

定义Dubbo接口

首先定义一个接口:

public 

该接口将向远程客户端公开。 这里的提示是将此接口打包到第二或第三方工件(jar)中,以便该jar可用于spring-cloud-dubbo-sample-api。

2、实施Dubbo服务

在Maven中创建一个项目

让我们用artifactIdId spring-cloud-dubbo-server-sample创建一个Maven项目。 然后,将依赖项添加到pom.xml中。。

<dependencies><!-- Sample API --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dubbo-sample-api</artifactId><version>${project.version}</version></dependency><!-- Spring Boot dependencies --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-actuator</artifactId></dependency><!-- Dubbo Spring Cloud Starter --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><!-- Spring Cloud Nacos Service Discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>

在上面的pom.xml中:

· spring-cloud-dubbo-sample-api:这是工件ID

· spring-boot-actuator:这是Spring Boot生产就绪的工件

· spring-cloud-starter-dubbo:这是Dubbo Spring Cloud Starter工件

· spring-cloud-starter-alibaba-nacos-discovery:这是Nacos Spring Cloud服务注册表工件

在继续之前,我们需要在定义中添加一个版本:

<dependencyManagement><dependencies><!-- Spring Cloud Alibaba dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>0.9.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

3、服务代码实施

这是实现的Java代码:

@org.apache.dubbo.config.annotation.Service
class EchoServiceImpl implements EchoService {@Overridepublic String echo(String message) {return "[echo] Hello, " + message;}
}

@ org.apache.dubbo.config.annotation.Service注释将其声明为Dubbo服务。

4、配置Dubbo服务

建议的公开服务的方法是使用@DubboComponentScanannotation。

该配置涉及两个部分:Dubbo和Spring Cloud。

dubbo:scan:base-packages: org.springframework.cloud.alibaba.dubbo.bootstrapprotocol:name: dubbo# -1 means self-definedport: -1registry:address: spring-cloud://localhost
spring:application:name: spring-cloud-alibaba-dubbo-servermain:allow-bean-definition-overriding: truecloud:nacos:# Nacosdiscovery:server-addr: 127.0.0.1:8848

5、Spring Boot应用程序类

这与其他Spring Boot应用程序类相同:

@EnableDiscoveryClient
@EnableAutoConfiguration
public class DubboSpringCloudServerBootstrap {public static void main(String[] args) {SpringApplication.run(DubboSpringCloudServerBootstrap.class);}
}

这里唯一值得一提的是,我们应该在此之前启动Nacos服务,以便Nacos可以发现该服务。

6、实施Dubbo客户

创建spring-cloud-dubbo-client-sample Maven项目

与服务端配置类似,我们需要指定依赖项:

<dependencyManagement><dependencies><!-- Spring Cloud Alibaba dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>0.9.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
<dependencies><!-- Sample API --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dubbo-sample-api</artifactId><version>${project.version}</version></dependency><!-- Spring Boot dependencies --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-actuator</artifactId></dependency><!-- Dubbo Spring Cloud Starter --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><!-- Spring Cloud Nacos Service Discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>

与服务端的主要区别在于客户端将是一个使用spring-boot-starter-web的Web Servlet应用程序。

7、配置客户端

与服务端类似,配置分为两个部分:Dubbo和Spring。

dubbo:registry:address: spring-cloud://localhostcloud:subscribed-services: spring-cloud-alibaba-dubbo-server
spring:application:# Dubboname: spring-cloud-alibaba-dubbo-clientmain:# Spring Boot 2.1allow-bean-definition-overriding: truecloud:nacos:# Nacosdiscovery:server-addr: 127.0.0.1:8848

在这里,我们通过将dubbo.cloud.subscribed-services绑定到spring-cloud-dubbo-server-sample来指定要使用的服务。

· dubbo.cloud.subscribed-services:要订阅多个服务,请使用“,”作为分隔符。

由于它是一个Web应用程序,因此默认端口为8080。 可以通过修改server.port属性来更改。

8、Spring Boot应用程序类和实现Java代码

分为两个步骤:

@EnableDiscoveryClient
@EnableAutoConfiguration
@RestController
public class DubboSpringCloudClientBootstrap {@Referenceprivate EchoService echoService;@GetMapping("/echo")public String echo(String message) {return echoService.echo(message);}public static void main(String[] args) {SpringApplication.run(DubboSpringCloudClientBootstrap.class);}
}

由于这是一个Web客户端,因此我们可以使用curl进行尝试。 如果我们跑

 curl http://127.0.0.1:8080/echo?message=yourmessage

或者我们可以运行Java客户端来获得相同的结果。

We should see the result [echo] Hello, yourmessage

9、结论

Spring Cloud阿里巴巴现在有两个发行版,其中包括Dubbo。 它们是与Spring Cloud Finchley兼容的0.2.2版本和与Spring Cloud Greenwich兼容的0.9.0版本。 无论你是尝试适应Spring Cloud阿里巴巴的Dubbo用户,还是相反,经验都应该是无缝的。

> 喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
> 不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代

还有就是这我总结出了一些架构视频资料和互联网公司java程序员面试涉及到的绝大部分面试题和答案做成了文档和架构视频资料还有完整高清的java进阶架构学习思维导图分享给大家(包括Dubbo、Redis、Netty、redis、mysql、zookeeper、Spring cloud、分布式、高并发等架构技术资料),也节省大家在网上搜索资料的时间来学习。

dubbo web工程示例_带有Dubbo的Spring Cloud Alibaba相关推荐

  1. dubbo web工程示例_分布式开发-Zooker+dubbo入门-Demo

    作者:知了堂-刘阳 1.什么是SOA架构 SOA 是Service-Oriented Architecture的首字母简称,它是一个面向服务的架构模式(俗称:分布式:面服务的分布式) 为什么互联网项目 ...

  2. dubbo web工程示例_dubbo实战之二:与SpringBoot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类和汇总,及配套源码,涉及Java.Docker.Kubernetes.DevO ...

  3. Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合

    https://www.cnblogs.com/babycomeon/p/11546737.html Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合 ...

  4. Dubbo的疑难解答:Spring Cloud Alibaba系列之分布式服务组件

    1.分布式理论 1.1.分布式基本定义 <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统" 分布式系统(dis ...

  5. 7.Spring Cloud Alibaba教程:整合Dubbo实现RPC调用

    概述 Apache Dubbo 是一款高性能的.基于Java的开源RPC框架,它提供了以下特性: 基于接口的远程方法调用 智能负载均衡 服务自动注册和发现 高可扩展性 运行期流量调度 可视化的服务治理 ...

  6. Spring Cloud 与 Dubbo 的完美融合之手「Spring Cloud Alibaba」

    很早以前,在刚开始搞 Spring Cloud 基础教程的时候,写过这样一篇文章:<微服务架构的基础框架选择:Spring Cloud 还是 Dubbo ?>,可能不少读者也都看过.之后也 ...

  7. Spring Cloud Alibaba基础教程:与Dubbo的完美融合

    很早以前,在刚开始搞Spring Cloud基础教程的时候,写过这样一篇文章:<微服务架构的基础框架选择:Spring Cloud还是Dubbo?>,可能不少读者也都看过.之后也就一直有关 ...

  8. springboot dubbo引入包_Spring Cloud与Dubbo的完美融合之手「Spring Cloud Alibaba」

    很早以前,在刚开始搞Spring Cloud基础教程的时候,写过这样一篇文章:<微服务架构的基础框架选择:Spring Cloud还是Dubbo?>,可能不少读者也都看过.之后也就一直有关 ...

  9. Spring Cloud Alibaba配置实例nacos+sentinel+dubbo实行服务注册、配置中心、熔断限流

    通过Spring Cloud Alibaba相关组件nacos+sentinel+dubbo实行服务注册.配置中心.熔断限流等功能 1.本机安装nacos和sentinel-dashboard服务端 ...

最新文章

  1. HashMap 的长度为什么是 2 的幂次方?
  2. 要上进总会有时间的,要放松也总会有理由的——记录2年出版2本书带给我的改变,同时分享写书和写博客的技巧...
  3. C#获取类名为Internet_Explorer_Server控件的内容
  4. 这款插件让你在VSCode上也能答题背单词
  5. 微信小程序之 3d轮播(swiper来实现)
  6. 河北农业大学计算机科学分数线,河北农业大学现代科技学院计算机科学与技术专业2016年在河北理科高考录取最低分数线...
  7. 关于bootstrap--排版(标题、强调、背景、插入符等)
  8. 计算机房的标准和规定,数据中心机房建设,需要依据哪些国家标准和行业标准或规范?...
  9. pcm5102a解码芯片音质评测_音乐更重要,iQOO Pro配备独立解码芯片,Hi-Fi音质更懂你...
  10. RuntimeWarning: invalid value encountered in arccos
  11. iptables工作原理及iptables命令行使用介绍
  12. php解析失败,php – 解析错误:语法错误,意外(T_VARIABLE)
  13. 陶哲轩实分析(上)8.1及习题-Analysis I 8.1
  14. 自定义NDK交叉编译链(toolchain)
  15. 51单片机 | 外部中断实验
  16. 全部资源,都在这里了
  17. MySQL之正则表达式
  18. Yii框架中setFlash和getFlash函数的用法
  19. csr sha2生成 linux,Openssl生成csr的解决方案
  20. 千万别再用pyinstaller打包idle了!

热门文章

  1. 01_Eclipse的使用方法
  2. 商品品牌信息的增删改查操作步骤_javaweb09-Servlet增删改查
  3. android左右旋转动画效果图,Android新姿势:3D翻转效果原理
  4. linux安装字体时找不到mkfontscale、mkfontdir
  5. HALCON Progress
  6. Python爬虫 搜索并下载图片
  7. Ionic APP 热更新
  8. 实用--HTML的命名规范
  9. Site Definition和Web Template的区别
  10. 增强 wp_list_authors 显示文章最多的作者