黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全(2)

简介: 黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全(2)

黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全(1):https://developer.aliyun.com/article/1548644


服务注册

  • 这里的discoveryClient是一个顶级接口,所有的服务注册中心都实现了这个接口
  • instances.get这里是选择负载均衡算法

依赖导入报错问题 [ERROR] ‘dependencies.dependency.groupId’ for com.heima’:hm-service:jar with value ‘com.heima’’ does not match a valid id pattern. @ line 33, column 22

  • 解决方案很简单,这是没有在本地找到项目依赖,将要关联的弄到本地就可以了

  • 运行 成功解决
mvn clean install
• 1

OpenFeign

  • 原本想要在两个服务中调取请求需要做上面这么多事

  • 现在只需要这几行代码

OpenFeign引入四步走

第一步:在pom文件中新增这些东西

<!--openFeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--负载均衡器-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

第二步:添加开关

第三步:写客户端与实际代码

第四步:使用

OpenFeign优化

  • 原本没有连接池 现在使用链接池,毫无疑问,使用链接池对性能的优化是巨大的

day03-微服务01 - 飞书云文档 (feishu.cn)

OpenFeign使用优化

优化方式一:

优化方式二:

  • 需要在启动类的@Endble注解上加上扫描地址

OpenFeign日志

第一步:写一个返回日志级别方法

第二步:使用这个日志级别

  • 上面标志表示 成功了

作业:trade客户端拆分思路

一:分析

  • 原本cart-service需要item-service的购物车中数据,所以创建了item的openfeign客户端,而trade需要商品id(item),清理购物车库存(cart)这两个的数据,所以需要这两个的客户端

二:定位代码

  • 经过如上图以后的分析,就能明确到底要做什么

三:开始创建client

1 商品id获取
@FeignClient("item-service")
public interface ItemClient {
    @GetMapping("/items")
    List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}

类部分

@FeignClient("item-service"):定义一个 Feign 客户端,服务名称为 item-service,这个名称应该与服务注册中心(如 Nacos)中的服务名称一致。

public interface ItemClient:声明一个接口,表示这个接口将包含远程服务的 API 方法。

方法部分

@GetMapping("/items"):定义一个 GET 请求,映射到 item-service 服务的 /items 端点。

List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);

  • 方法名称 queryItemByIds 表示查询多个商品 ID 的信息。
  • 参数 @RequestParam("ids") Collection<Long> ids:使用 @RequestParam 注解表示这是一个查询参数,参数名称为 ids,类型是 Collection<Long>
  • 返回类型 List<ItemDTO>:方法返回一个 ItemDTO 对象的列表。
  • 这里可以看出,需求是一样的,因此直接用

2 购物车清空

一:阅读原本购物车代码

  • 发现有一个批量删除的代码,那我们就用这个了
  • 本方法没有返回值,所以得出的client代码如下
package com.hmall.api.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Collection;
@FeignClient("cart-service")
public interface CartClient {
    @GetMapping("/carts")
    void deleteCartItemByIds(@RequestParam("ids") Collection<Long> ids);
}
cartClient.deleteCartItemByIds(itemIds);
3 扣减缓存

  • 发现扣减缓存代码

四:非拆分配置

  • 分别是扫描和,和依赖使用
  • 其他都一样了
目录
相关文章
|
1天前
|
负载均衡 Java API
使用Spring Cloud构建Java微服务架构
使用Spring Cloud构建Java微服务架构
|
3天前
|
消息中间件 负载均衡 持续交付
探索后端开发:微服务架构的演进与实践
【6月更文挑战第25天】本文深入探讨了微服务架构的概念、发展以及在现代后端开发中的应用。我们将通过一个虚构案例,展示如何将传统的单体应用重构为基于微服务的架构,并讨论在此过程中遇到的挑战和解决方案。文章旨在为读者提供从理论到实践的全面指导,帮助理解微服务架构的优势及其在企业级系统中的应用。
|
1天前
|
JSON Java Spring
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
|
2天前
|
设计模式 监控 测试技术
后端开发中的微服务架构:优势、挑战与实践策略
在现代软件开发领域,微服务架构已成为一种重要的设计范式,特别是在后端系统中。本文旨在深入探讨微服务架构的核心优势、面临的主要挑战以及实施该架构的策略。通过引用最新的研究成果和行业案例,文章将提供对微服务架构实际应用的深刻见解,并指导开发者如何有效地采用和优化微服务架构以提升系统性能和可维护性。
|
3天前
|
Java Nacos 微服务
Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
|
27天前
|
人工智能 Java Spring
使用 Spring Cloud Alibaba AI 构建 RAG 应用
本文介绍了RAG(Retrieval Augmented Generation)技术,它结合了检索和生成模型以提供更准确的AI响应。示例中,数据集(包含啤酒信息)被加载到Redis矢量数据库,Spring Cloud Alibaba AI Starter用于构建一个Spring项目,演示如何在接收到用户查询时检索相关文档并生成回答。代码示例展示了数据加载到Redis以及RAG应用的工作流程,用户可以通过Web API接口进行交互。
52337 63
|
9天前
|
监控 Java 应用服务中间件
替代 Hystrix,Spring Cloud Alibaba Sentinel 快速入门
替代 Hystrix,Spring Cloud Alibaba Sentinel 快速入门
|
25天前
|
消息中间件 Java 持续交付
Spring Cloud Alibaba 项目搭建步骤和注意事项
Spring Cloud Alibaba 项目搭建步骤和注意事项
197 0
Spring Cloud Alibaba 项目搭建步骤和注意事项
|
23天前
|
存储 SpringCloudAlibaba 关系型数据库
springcloud alibaba(5)
springcloud alibaba
97 0
|
23天前
|
SpringCloudAlibaba Nacos
springcloud alibaba(4)
springcloud alibaba
125 0