W3CAPI 在线教程 | 菜鸟教程_LOGO
文档目录
文档目录
我的书签
 

Spring Cloud教程

SpringCloud菜鸟入门教程

开发一个分布式架构的WEB应用系统可能具有很大的挑战性。它的复杂性已从应用程序层转移到网络层(由单一的应用模块发展为多个由网络连接起来的应用模块),并要求网络上各个应用模块之间进行更多的交互。将分布式的应用模块代码之间的交互实现“本地化”要处理12个技术难点,例如外部配置,无状态,日志记录以及连接到后备服务。Spring Cloud项目包含了使应用程序在云中运行所需的各种服务中间组件。

jesen
1
2020-04-15 18:16:50

使用Spring Cloud LoadBalancer进行客户端负载均衡

打开Spring Cloud官方的文档可以看到,官方在示例中给了我们一个这样的例子,让我们按照步骤创建一个使用Spring Cloud LoadBalancer的微服务应用程序,这个例子的功能说到底就是对HTTP请求做了进一步的封装,在客户端和服务端的请求中间又添加了一个处理器,这个处理器的功能就是对请求进一次的处理和分配,最终需要分配到一个服务端中进行处理。首先我们按照如下步骤先来创建这个项目:
一、环境准备
JDK1.8及以上版本、Gradle4及以上版本、IntelliJ IDEA集成开发工具
二、源码克隆或下载
压缩包地址:https://codeload.github.com/spring-guides/gs-spring-cloud-loadbalancer/zip/master;使用Git对其进行克隆:git clone https://github.com/spring-guides/gs-spring-cloud-loadbalancer.git,我使用的是git clone,IntelliJ IDEA可以直接对项目进行git clone,操作顺序如下图所示:

注意最后git clone完毕后IntelliJ IDEA会提示是否创建项目,这时候不要选择是,直接选择否即可,如下图:



三、项目构建
使用IntelliJ IDEA导入项目,并等待构建完成;这里需要说明的是,如果你是晚上构建这个项目可能不会成功,因为gradle要到国外的仓库下载相关的jar包,国内晚上对于外网的访问丢包比较严重,所以会很慢最后可能导致项目构建失败(如下图),我第一次构建的时候就是晚上,构建了十几次都没有成功,最后到第二天早上才顺利构建完成
四、源码分析
构建完项目后,项目就可以直接运行了,我先不考虑运行,先来看看它的源代码。根据源码可以知道,这个项目中包含了两个模块的功能,分别为:“say-hello”和“user”,首先来看“say-hello”模块的功能:
1、打开功能实现代码,路径为:say-hello/src/main/java/hello/SayHelloApplication.java通过查看源码可以了解到此模块的功能为:通过访问URL:“/greeting”,将从三个问候语中随机返回任意一个问候语
2、打开配置文件,路径为:say-hello/src/main/resources/application.yml此文件为项目模块的配置文件,查看文件内容可以很容易看懂它的含义,分别设置了项目的名称:say-hello 和项目运行的默认端口号 8090
看完了“say-hello”模块的功能后,如果你是一个有开发经验的人,相信很容易就能理解它的功能和实现,即使有些注解我们可能不太了解具体的含义和用处,但是也能大致了解它的用法了。回过头来我们再看第二个模块“user”的功能:
1、打开功能实现代码:user/src/main/java/hello/UserApplication.java根据源码大致可以看出来它的功能为:提供访问URL:“/hi”和“/hello”,可以看到它们的代码实现其实是调用到了“say-hello”模块,但是其中使用到了loadBalancedWebClientBuilder类,说到底就是对请求的处理又多了一层的处理,然后再请求到“say-hello”模块做最终的处理。
2、打开配置文件可以看到和“say-hello”模块的配置文件大致一样

五、项目运行

了解了一些源代码后,我们运行一下程序看一下它的结果状态是否和我们分析的一致,首先单独运行“say-hello”:
  1. 在IntelliJ IDEA中打开SayHelloApplication.java 然后右键单击,在弹出的上下文菜单中点击运行
  2. 打开浏览器访问输入URL:http://localhost:8090/greeting
  3. 多次刷新观察浏览器中输出的文本内容
在不关闭“say-hello”的同时再运行“user”:
  1. 在IntelliJ IDEA中打开UserApplication.java 然后右键单击,在弹出的上下文菜单中点击运行
  2. 打开浏览器访问输入URL:http://localhost:8888/hi
  3. 多次刷新观察浏览器中输出的文本内容
通过运行观察“say-hello”运行后每次对它的访问都可以输出内容,但是“user”再多次的访问中,只有三分之一的时候会显示正常的内容,其他时候都会返回一堆英文字符,如下图所示,这是因为“user”项目模块中使用到了负载均衡(Spring Cloud LoadBalancer)的配置,我们需要再对源码进行分析才能让它每次请求都能运行正常
 
相关提问
敬请期待