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

简介: 快速学习微服务调用 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提交订单数据,也可以用浏览器进行测试。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
监控 前端开发 UED
理解 MVVM 中的数据双向绑定
【10月更文挑战第21天】数据双向绑定是 MVVM 架构中的一个核心特性,它为前端开发带来了诸多便利和优势。理解并熟练运用数据双向绑定,有助于我们构建更加高效、交互性更强的应用程序。同时,我们也需要在实际应用中注意性能和复杂性等方面的问题,以确保应用的良好运行和用户体验。还可以结合具体的项目经验和实际案例,进一步深入探讨数据双向绑定在不同场景下的应用和优化策略。
|
10月前
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
存储 Java
在 Java 中如何对两个 ArrayList 进行排序
【8月更文挑战第23天】
220 0
|
Java 数据库连接 Spring
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could
这个错误通常出现在使用Spring Boot进行数据库连接时。错误信息表明Spring Boot未能配置一个DataSource,因为没有指定'url'属性,并且没有发现默认的数据库连接。
6160 0
|
JSON JavaScript 前端开发
springboot中使用knife4j访问接口文档的一系列问题
本文作者是一位自学前端两年半的大一学生,分享了在Spring Boot项目中使用Knife4j遇到的问题及解决方案,包括解决Swagger请求404错误、JS错误等,详细介绍了依赖升级、注解替换及配置修改的方法。
2784 1
|
关系型数据库 MySQL
mysql中单独获取已知日期的年月日其中之一
通过上述内容,您应该能够更好地在MySQL中处理和提取日期和时间信息,以满足各种业务需求。
463 5
|
SQL JSON 关系型数据库
"SQL老司机大揭秘:如何在数据库中玩转数组、映射与JSON,解锁数据处理的无限可能,一场数据与技术的激情碰撞!"
【8月更文挑战第21天】SQL作为数据库语言,其能力不断进化,尤其是在处理复杂数据类型如数组、映射及JSON方面。例如,PostgreSQL自8.2版起支持数组类型,并提供`unnest()`和`array_agg()`等函数用于数组的操作。对于映射类型,虽然SQL标准未直接支持,但通过JSON数据类型间接实现了键值对的存储与查询。如在PostgreSQL中创建含JSONB类型的表,并使用`->>`提取特定字段或`@>`进行复杂条件筛选。掌握这些技巧对于高效管理现代数据至关重要,并预示着SQL在未来数据处理领域将持续扮演核心角色。
383 0
|
Kubernetes Nacos 数据安全/隐私保护
疯了!Nacos 用 Helm 部署开启授权认证频频出错?别急,秘籍在此!
【8月更文挑战第15天】本文指导您通过Helm部署Nacos并开启授权认证,解决途中遇到的问题。首先确认已安装Helm并了解Kubernetes基础。示例`values.yaml`文件启用认证并设置凭据。运行Helm命令完成部署。若认证失败,请复查用户名及密码准确性。面对权限不足错误,可配置权限策略,示例代码展示基于请求头的简单验证逻辑。Nacos启动异常时,利用`kubectl logs`命令分析Pod日志定位问题。遵循本文步骤与示例,助您成功部署并配置Nacos。
510 0
|
安全 IDE Java
java代码开发规范详细解读
java代码开发规范详细解读
1084 0
|
消息中间件 存储 Java
RocketMQ部署文档
RocketMQ部署文档