跟我学Spring Cloud(Finchley版)-02-构建分布式应用

发布时间:2020-06-08 17:40:14 作者:lilizhou2008
来源:网络 阅读:316

上一节( 跟我学Spring Cloud(Finchley版)-01-开篇 )说过,Spring Cloud是一个快速构建分布式应用的工具集。本节,我们就来编写一个简单的分布式应用,并探讨这个分布式应用有哪些问题。

服务消费者 & 提供者

本书使用服务提供者与服务消费者来描述微服务之间的调用关系。下表解释了服务提供者与服务消费者。

表-服务提供者与服务消费者

名词 定义
服务提供者 服务的被调用方(即:为其他服务提供服务的服务)
服务消费者 服务的调用方(即:依赖其他服务的服务)

以电影售票系统为例。如图,用户向电影微服务发起了一个购票的请求。在进行购票的业务操作前,电影微服务需要调用用户微服务的接口,查询当前用户的余额是多少、是不是符合购票标准等。在这种场景下,用户微服务就是一个服务提供者,电影微服务则是一个服务消费者。

跟我学Spring Cloud(Finchley版)-02-构建分布式应用

围绕该场景,先来编写一个用户微服务,然后编写一个电影微服务。

TIPS

服务消费者和服务提供者描述的只是微服务之间的调用关系,一般成对出现。例如本文,用户微服务是是电影微服务的服务提供者,电影微服务是用户微服务的服务消费者。很多初学者和笔者交流时,会描述提供者如何如何……仿佛消费者和提供者是微服务的固有属性,这是不对的——例如A调用B,B调用C,那么B相对A就是提供者,B相对C就消费者。

Spring Boot/Spring Cloud应用开发套路

Spring Boot/Spring Cloud时代后,应用开发基本遵循三板斧

至于你的业务代码,该怎么写还怎么写。

TIPS

对于懒人,可使用Spring Initilizr(IDEA、Spring Tool Suite等IDE上均有集成,也可在http://start.spring.io 使用网页版)创建应用,它会给你生成项目的依赖以及项目的骨架。后续,笔者会以番外的形式更新相关教程。

编写服务提供者【用户微服务】

测试

访问http://localhost:8000/users/1 ,可获得结果:

{"id":1,"username":"account1","name":"张三","age":20,"balance":100.00}

编写服务消费者【电影微服务】

我们已经编写了一个服务提供者(用户微服务),本节来编写一个服务消费者(电影微服务)。该服务非常简单,它使用RestTemplate调用用户微服务的API,从而查询指定id的用户信息。

拓展阅读

本文使用RestTemplate实现了基于HTTP的远程调用,事实上,Spring 5开始,WebFlux提供了Reactive的Web Client:WebClinet使用方式和RestTemplate基本类似,但性能更强,吞吐更好。有兴趣的可前往<https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/web-reactive.html#webflux-client-builder> 了解。在这里,笔者对WebClient做了一些简单的封装,也可关注:<https://github.com/itmuch/thor-test/blob/master/src/main/java/com/itmuch/thor/httpclient/WebClientUtil.java>

测试

访问:http://localhost:8010/movies/users/1 ,结果如下:

{"id":1,"username":"account1","name":"张三","age":20,"balance":100.00}

存在的问题

至此,我们已经实现了这个最简单的分布式应用,应用之间通过HTTP通信。代码非常简单,但这些简单的代码里,存在着若干问题:

如上词汇,你可能看得懂,你也可能看不懂。没有关系,请继续阅读,笔者将会用通俗的语言去描述,在你看完本系列后,你会知道,原来那些所谓的高大上的理论、术语、技术,原来也就是这么回事儿。

配套代码

原文:http://www.itmuch.com/spring-cloud/finchley-2/ 转载请说明出处。

干货分享

跟我学Spring Cloud(Finchley版)-02-构建分布式应用

推荐阅读:
  1. Spring Cloud Alibaba系列教程-02-将应用注册到Nacos上
  2. 跟我学Spring Cloud(Finchley版)-23-Spring Cloud Config高

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring cloud fin

上一篇:phpstudy_php7_nginx环境配置

下一篇:总结case与convert 的区别decimal(6,2) number(6,2) 前面都是总长度

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》