开发者学堂课程【5天突破 Spring Cloud:微服务调用 Feign 与负载均衡】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/781/detail/13702
微服务调用 Feign 与负载均衡
内容介绍:
一.Spring Cloud 声明式调用客户端 Feign
二.客户端调用 Feign 实战
三.负载均衡
今天两个主题,一个是负载均衡,一个是微服务调用,在 Spring Boot 里面选接口的话,客户端前端程序也可以调用后端接口,后端接口使用的是比较原始的 HTTP 协议,主要是用的比较多的是 HTTP 协议里面有几个动词,对应的是增删改查,一个用查询一个用提交数据,细分的话可能有超过十种动词,现在比较少比较固定。
今天这个主题从客户端这个角色来做,之前说过一个问题,客户端做出来可以开发微服务比如订单服务,支付服务,账号服务都可以作为微服务架构改造升级的基础,从早期的项目可以迅速的升级成微服务架构,对它做一个功能的改造增强,让它可以和微服务的注册中心进行交互,这是一个基本的条件要求。假设注册中心已经搞好了,微服务也有能力开发,作为微服务架构师,要能够解决各种微服务框架的一些问题,技能水平要高出其他普通的架构师。早期架构师怎么生成、生成之后怎么扩,生成更多层,需要解决这些问题。软件开发领域对架构师要求整体能力比较强,不是单一某一个框架或者某一技术,而是要求整体能力比较强。这门课程以 Spring Boot 的一些旧知识作为迭代基础,微服务后期也需要链数据库等。
一.Spring Cloud 声明式调用客户端 Feign
(一)Spring Cloud 调用方 Feign
1.调用方,简化微服务 API 调用
2. Feign 是一种声明式、模板化的 HTTP 客户端
3.简化 HTTP 客户端开发
4.只需要创建一个接口+@注解
5. Feign 注解和 JAX-RS 注解
6. Feign 支持可插拔的编码器和解码器
7. Feign 默认集成了 Ribbon,并和 Eureka 结合
8. Eclipse 或者 IDEA 实战
对接技术已经讲解过了,对接难度也会降低,因为可以把之前那些代码进行升级改造,很快的去对接数据库,对接缓存,和其他的微服务调用整合。早期也贡献了一个比较有意思的叫 Feign,主要解决微服务调用的问题。
如果自己写代码的话相对来说构造需要一些请求发给服务端,实际上是比较复杂的比较难操作的,而这里面为了解决这个问题,简化了客户端的开发,客户端不一定是来自网页的形式,有可能是一个微服务调用另一个微服务,所以出现了 Feign 这样的一个组件来完成任务工作。简单体现在从 Spring Boot 开始整个开发工作越来越傻瓜化,明显的一个标志就是可以通过使用简单的注解去做注册中心,实现客户端的调用,绝大多数通过注解实现。比较复杂的就是有很多参数需要注意。
负载均衡其实是作为客户端组件有一个叫 Ribbon,它已经实现了一些默认的简单的负载均衡策略,这些算法相比较来说没有其他一些专业代理程序功能强大,也会遇到更强大功能场景的弱点,可以拓展了解一下差异。
二.客户端调用 Feign 实战
(一)Feign 调用者实战
.https:// start.spring.io/在线创建
.Eureka Server
.Eureka Client+Feign
.https://github.com/spring-cloud-samples/feign-eureka
.https://github.com/spring-cloud-samples/eureka
.mvn package 打包
要做客户端调用的话,通过 Java 程序调用微服务后台,第一要解决调用问题,发送请求。麻烦的是后端的集群,是动态的变化的,状态在不停变化的情况,目前可能十台,过段时间就一百台了,集群的数量是不确定的。所以对客户端来说,如果这些服务放在客户端代码里面也不现实,需要一个技术来解决注册中心的交互并且解决调用问题。作为客户端要调用后端微服务,前提先找注册中心,需要一个叫 Eureka Client 的组件来和注册中心打交道,这个技术是比较成熟的,后期有些公司也会改造该技术。
对 Eureka Client 代码进行改造,基本就完成了和注册中心交互、调用的一个工作。现在很多公司内部
使用的微服务组件很多都是开源技术或者是开源技术封装的,做了一些改动增强,版本基本上都相似。
(二)Spring Cloud 调用者配置注解
对于之前的项目,有些东西也可以利用起来,可以使用之前与注册中心交互的一些配置,完成调用要知道有一个发送请求的技术 Feign,如果技术比较熟练,可以拆后端 API 的地址,演示比较简单,可以用 get提交订单数据,也可以用浏览器进行测试。