微服务调用 Feign 与负载均衡|学习笔记(一)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习微服务调用 Feign 与负载均衡

开发者学堂课程【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 调用者配置注解

image.png对于之前的项目,有些东西也可以利用起来,可以使用之前与注册中心交互的一些配置,完成调用要知道有一个发送请求的技术 Feign,如果技术比较熟练,可以拆后端 API 的地址,演示比较简单,可以用 get提交订单数据,也可以用浏览器进行测试。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
负载均衡 程序员 微服务
【微服务】2、一篇文章详解 Ribbon 负载均衡
【微服务】2、一篇文章详解 Ribbon 负载均衡
37 0
|
4月前
|
负载均衡 算法 Java
SpringCloud - Feign与Ribbon请求负载均衡实践
SpringCloud - Feign与Ribbon请求负载均衡实践
46 0
|
5月前
|
负载均衡 Java 应用服务中间件
微服务技术系列教程(21) - SpringCloud- 负载均衡器Ribbon
微服务技术系列教程(21) - SpringCloud- 负载均衡器Ribbon
47 0
|
9月前
|
XML 负载均衡 Java
SpringCloud极简入门-客户端负载均衡-Feign
在前一章节,我们使用Ribbon作为客户端负载均衡完成了订单服务和用户服务的通信,其实我们可以发现,当我们通过RestTemplate调用其它服务时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下,并且显得好傻。而Feign的服务调用方式对于程序员来说更为友好,它基于Ribbon进行了封装,把一些负责的url和参数处理细节屏蔽起来,我们只需要简单编写Fiegn的客户端接口就可以像调用本地service去调用远程微服务。
180 0
|
11月前
|
负载均衡 Java Nacos
Springcloud服务调用Feign组件以及负载均衡
Springcloud服务调用Feign组件以及负载均衡
|
负载均衡 网络协议 Java
SpringCloud微服务框架03 - Ribbon负载均衡
SpringCloud微服务框架03 - Ribbon负载均衡
116 0
|
负载均衡 网络协议 算法
SpringCloud服务间通信方式(RestTemplate)及负载均衡(Ribbon)
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
291 0
SpringCloud服务间通信方式(RestTemplate)及负载均衡(Ribbon)
|
负载均衡 网络协议 算法
Ribbon和Feign客户端负载均衡及服务调用
什么时负载均衡?(Loadbalancing)负载均衡,是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。过去所说的负载均衡常指服务端的负载均衡,在客户端和服务器端之间增加负载均衡器来实现。那么,客户端负载均衡是什么?
135 0
Ribbon和Feign客户端负载均衡及服务调用
|
缓存 负载均衡 监控
微服务调用 Feign 与负载均衡|学习笔记(三)
快速学习微服务调用 Feign 与负载均衡
109 0
微服务调用 Feign 与负载均衡|学习笔记(三)
|
负载均衡 算法 Java
微服务调用 Feign 与负载均衡|学习笔记(二)
快速学习微服务调用 Feign 与负载均衡
81 0
微服务调用 Feign 与负载均衡|学习笔记(二)