news 2026/7/13 19:19:23

Nacos+OpenFeign-----帮助解决单体项目拆分成微服务项目的关键技术

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nacos+OpenFeign-----帮助解决单体项目拆分成微服务项目的关键技术

目录

为什么需要这么个东西,他解决了什么痛点?

方法一 RestTemplate:

引入概念:注册中心:

方法二 nacos服务:

其他


为什么需要这么个东西,他解决了什么痛点?

我们在初始学习微服务时候,会拆分单体项目。会遇到这么一个问题:“远程调用问题:我这个微服务,要用到另一个微服务的一个service,在单体项目中,直接注入一个service用就可以。但微服务代码数据库都是分开的,在微服务中有没有什么好方法?”

方法一RestTemplate

RestTemplate,由spring提供,可以方便的发送Http请求。

用法:创一个RestTemplate并注入容器,用的时候注入,并调用其exchange方法。(还有很多其他方法,可以查阅了解,不做详细介绍)
缺点:服务的治理问题:url是写死的。如果A想调用B的某个接口,但B有多个服务部署了,不是道调用哪一个。而且如果一个B服务挂掉了,或者新的B服务启动了,A都不知道,没法处理。

引入概念:注册中心:

既然有这个缺点,我们能不能找个中间人?就像找家政一样,我们就让A不要去直接找B,而是找“家政中心”,有啥事你去找“家政中心”,他里面管理了B的各个服务的信息。(也就是注册中心)

当A找上门来,注册中心就去看看那个阿姨有空。安排给你提供服务。(也就是负载均衡)

当B某个服务新增或者挂掉了,能及时反映给“家政中心”。(也就是心跳续约)

方法二 nacos服务:

注册nacos服务:

1: 数据库中创建nacos表,方便存储。

2:docker部署nacos容器。

服务治理:

  • 服务注册:引入nacos discovery依赖,配置Nacos地址。
  • 服务发现:引入nacos discovery依赖,配置Nacos地址。然后调用,传入参数(手写负 载均衡)。

问题:服务发现手写比较麻烦。

OpenFeign:

  • 引入依赖,OpenFeign和SpringCloudLoadBalancer。
  • 通过@EnableFeiClients,开启OpenFeign功能。
  • 编写FeignClient。@FeignClient("item-service"):声明服务名称@GetMapping:声明请求方式@GetMapping("/items"):声明请求路径@RequestParam("ids") Collection<Long> ids:声明请求参数List<ItemDTO>:返回值类型
@FeignClient("item-service") public interface ItemClient { @GetMapping("/items") List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids); }
  • 使用FeignClient。注入对应的client类,然后调用对应的方法。

其他

日志配置:省略。

开启连接池:

  • 引入连接池依赖
  • feign: okhttp: enabled: true # 开启OKHttp功能

client类实现在A中,不合理,代码重复率高,两种抽取思路:

  • 思路1:抽取到微服务之外的公共module

  • 思路2:每个微服务自己抽取一个module

  • 实现:1.引入对应的依赖坐标。2. @EnableFeignClient扫描到对应的包。com.hmall.api.client

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 2:47:00

FaceFusion性能优化与生产部署实践

FaceFusion性能优化与生产部署实践 在AI换脸技术逐渐从实验室走向影视制作、内容创作乃至实时直播的今天&#xff0c;FaceFusion 凭借其高精度的人脸对齐、自然的图像融合效果和模块化架构&#xff0c;已成为开源社区中备受青睐的专业级工具。然而&#xff0c;随着输入分辨率提…

作者头像 李华
网站建设 2026/7/13 20:44:04

不同形貌银包铜粉体(组合),是如何显著提升导电油墨的电性能的?

“真正决定油墨导电性的&#xff0c;不只是银含量&#xff0c;而是粉体之间的‘搭接方式’。”在电子行业里&#xff0c;导电油墨早已不是“单纯的高导电材料”&#xff0c;而是一个微观结构工程的问题&#xff1a; 如何让粉体在树脂体系中构建 连续、稳定、低阻抗、耐环境的导…

作者头像 李华
网站建设 2026/7/13 5:41:46

UVa 12788 Smooth Factor

题目描述 给定一个整数数组 a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​ &#xff0c;定义其 平滑因子 为&#xff1a;最长的连续子数组 ap,…,aqa_p, \ldots, a_qap​,…,aq​ 的长度&#xff0c;其中至多存在一个位置 iii &#xff08; p<i≤qp < i \leq qp<…

作者头像 李华
网站建设 2026/7/12 23:20:30

如何在 UOS 等国产系统下备份 WPS 序列号

目前就 UOS 下的国产 office 软件来看&#xff0c;WPS 的兼容性最好&#xff0c;尽管与 Msoffice 有差距&#xff0c;一般的办公足够了&#xff0c;WPS 的序列号一旦输入&#xff0c;就显示***的&#xff0c;无法直接复制&#xff0c;那么如何备份呢&#xff1f;一、在哪里输入…

作者头像 李华
网站建设 2026/7/13 15:40:15

LobeChat能否用于编写Makefile?编译流程自动化生成

LobeChat能否用于编写Makefile&#xff1f;编译流程自动化生成 在嵌入式开发、系统编程或开源项目维护中&#xff0c;你是否曾因一个拼错的 Tab 或遗漏的依赖项而卡住数小时&#xff1f;尽管 make 工具历经数十年仍坚挺于 Unix 世界的底层构建体系&#xff0c;但 Makefile 的编…

作者头像 李华
网站建设 2026/7/12 22:23:01

LobeChat社区活跃度分析:GitHub星标增长趋势解读

LobeChat社区活跃度分析&#xff1a;GitHub星标增长趋势解读 在AI助手如雨后春笋般涌现的今天&#xff0c;一个耐人寻味的现象正在发生&#xff1a;尽管大语言模型&#xff08;LLM&#xff09;能力日益强大&#xff0c;用户真正“用起来”的门槛却依然不低。打开任意一款官方聊…

作者头像 李华