微服务服务注册与发现

简介: 项目采用微服务架构,便于扩展与团队协作,基于Spring Cloud Alibaba构建,使用Nacos、OpenFeign、Sentinel等组件,实现服务注册发现与远程调用,提升系统稳定性与可维护性。

你们的项目为什么要用微服务架构?

可从几个方面回答:

  1. 我们这个项目在立项时就规划了几个版本,考虑项目的规模比较大,为了方便后期项目的扩展和维护,以及方便团队协作等方面使用了微服务架构。
  2. 我们公司有一个架构组,他们负责对系统架构进行选型、封装等工作,我们项目的系统架构是由架构组的同事提供好的。

SpringBoot和SpringCloud,请你谈谈对他们的理解?

1)、SpringBoot是一个快速构建工程的框架,基于自动装配去实现,可以快速向项目中加入依赖的组件。

2)、SpringCloud是关注微服务开发,协调、治理的框架,它将SpringBoot开发的单体整合并管理起来。SpringCloud常用组件:网关、注册中心、配置中心、feign、熔断降级。

3)、SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。

Spring Cloud Alibaba与Spring Cloud区别和联系?

联系:

  • 两者都是基于 Spring Boot 的微服务框架。
  • Spring Cloud Alibaba 遵循 Spring Cloud 的规范。
  • Spring Cloud Alibaba 的组件可以与 Spring Cloud 的其他组件配合使用。

区别:

  • 服务发现:Spring Cloud 使用的是 Netflix Eureka,而 Spring Cloud Alibaba 使用的是 Nacos。
  • 断路器:Spring Cloud 原生支持 Hystrix,而 Spring Cloud Alibaba 推荐使用 Sentinel。
  • 配置管理:Spring Cloud 使用 Spring Cloud Config Server,而 Spring Cloud Alibaba 使用 Nacos 作为配置中心。
  • 负载均衡:Spring Cloud LoadBalancer结合 Nacos实现负载均衡。
  • 远程调用支持:Spring Cloud Alibaba 支持 Dubbo 作为 RPC 调用框架和Feign方式,Spring Cloud 默认不包含

你们Spring Cloud用的什么版本?

我们项目用的Spring Cloud 2021版以及Spring Boot 2.7.12版本,具体使用Spring Cloud Alibaba框架,具体使用了Nacos配置中心与注册中心、Spring Cloud Gateway网关、Spring Cloud LoadBalancer负载均衡、OpenFeign远程调用、Sentinel熔断降级限流等组件。

说几个Java远程调用的技术?你们项目用的什么技术?

在Java中实现RPC远程调用的技术有很多,常用的有:

  1. 使用RestTemplate调用RESTful 接口。
  2. 使用Java提供RMI技术。
  3. 使用Dubbo技术。
  4. 在微服务中我们用Feign或OpenFeign实现远程调用。

我们项目用的RestTemplate、OpenFeign实现微服务之间的远程调用。

如何使用nginx实现负载均衡?

  1. nginx.conf 配置文件(/etc/nginx/nginx.conf)中配置upstream
  2. 在upstream 配置一组后端服务节点地址,并可以指定负载均衡的权重。
  3. server 块内,你可以在需要负载均衡的 location 中使用 proxy_pass 指令指向前面定义的 upstream
  4. 当请求该虚拟目录,通过upstream 实现负载均衡。

Nginx是反向代理,为什么叫反向代理?

Nginx 作为反向代理服务器,其“反向”的概念主要体现在代理的方向上。传统的代理服务器(正向代理)是通过代理服务器访问外网服务器,而“反向”代理表示方向正好相反,是外网通过Nginx返回内部服务器。

说一下服务注册与发现流程?

服务注册与发现流程包括三个角色:服务注册中心、服务提供者、服务调用者。

三者的分工如下:

注册中心:提供服务注册接口,接收服务注册请求,保存服务实例的信息。我们项目用的Nacos。

服务提供者:服务接口提供方,请求注册中心将服务信息注册到注册中心。

服务调用者:远程调用的客户端,请求注册中心查询服务地址,通过负载均衡选取目标服务地址进行远程调用。

服务注册与发现流程如下:

  • 服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心
  • 调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)
  • 调用者作为客户端自己通过负载均衡算法挑选一个服务提供者实例进行远程调用,即客户端负载均衡
  • 调用者向该实例发起远程调用

微服务是怎么实现远程调用的?

首先使用Nacos实现服务注册中心,服务提供方将自己注册到服务注册中心,服务调用方通过客户端负载均衡器从服务注册中心选取一个目标服务地址进行远程调用。

客户端负载均衡器早期用的Ribbon,现在使用的是Spring Cloud Loadbalancer。

具体使用的有两种方式:

  1. 一种是通过@LoadBalanced注解标识RestTemplate,使用RestTemplate进行远程调用。
  2. 另一种是使用OpenFeign进行远程调用。

我们项目主要用的是OpenFeign。

OpenFeign的工作原理?

OpenFeign是一个微服务之间调用的Http客户端,它集成了负载均衡组件自动将请求发到不同的服务实例,它是一个http通信模板,底层使用第三方框架OkHttp发送http请求并获取响应结果, 整个请求的过程实现了RPC远程方法调用,将请求和响应自动封装为Java 对象。

它的使用流程:

  1. 接口定义:开发者通过定义Java接口来描述服务间的通信协议,包括URL、请求方法、请求参数等。
  2. 代理生成:在应用启动时,Feign接口会生成代理对象。
  3. 请求发送:当调用代理对象的方法时,Feign会根据方法的注解和参数生成HTTP请求,并发送给目标服务。Feign的底层使用的是第三方的OkHttp框架发起http请求。
  4. 负载均衡:OpenFeign集成了负载均衡组件(如Ribbon或Spring Cloud Loadbalancer),可以自动将请求发到不同的服务实例。
  5. 响应处理:目标服务处理完请求后,将响应返回给Feign客户端。
  6. 结果解析:OpenFeign会根据接口定义和注解,将HTTP响应解析为Java对象,并返回给调用者。
相关文章
|
4月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
本课程系统讲解MyBatis-Plus(MP)的核心功能与实战应用,涵盖快速入门、条件构造器、Service接口、代码生成、分页插件等常用功能,结合Spring Boot实现CRUD操作与复杂查询,提升开发效率。
持久层框架MyBatisPlus
|
移动开发 自然语言处理 小程序
分享88个企业政府PHP源码,总有一款适合你
分享88个企业政府PHP源码,总有一款适合你
573 2
|
4月前
|
负载均衡 Java 数据安全/隐私保护
Gateway服务网关
网关是微服务架构的统一入口,核心功能包括请求路由、权限控制和限流。通过Spring Cloud Gateway可实现高效路由转发与过滤器处理,支持跨域配置,提升系统安全性和稳定性。
|
1月前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器价格2026年3月最新:一年、1个月和1小时收费标准,不花冤枉钱~
2026年阿里云服务器最新报价:轻量应用服务器低至38元/年,ECS普惠套餐99元/年起,GPU实例按量或包年可选。涵盖包年包月、按量付费三大计费模式,详解续费同价、多年付3.9折、升级差额补价等核心规则,助您精准控本、避坑省钱。(239字)
425 1
|
人工智能
上车吧,1000+claw概念域名来袭!
风口真正值钱的,从来不是最热闹的那一天,而是热闹之后,产品开始成片长出来的那一刻…
|
27天前
|
人工智能 API 数据安全/隐私保护
把GPT-5.4请进钉钉群!OpenClaw保姆级部署(阿里云/MacOS/Linux/Windows本地)+企业协作实战+常见问题全解
2026年3月,OpenAI发布的GPT-5.4凭借“75%桌面操作准确率、100万Token上下文、幻觉率降低33%”的核心升级,成为专业场景的首选模型。而OpenClaw(曾用名Clawdbot)v2026.3.7版本同步完成适配,让普通企业无需复杂开发,即可通过钉钉等日常协作工具,将GPT-5.4转化为“全天候在岗的AI员工”——合同审查、数据统计、会议纪要、任务跟进等工作,只需在钉钉群@AI即可完成,彻底打破“AI工具与办公场景割裂”的痛点。
440 3
|
4月前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍了MongoDB常用操作命令,涵盖数据库与集合的创建、查看、删除,以及文档的增删改查、条件查询、投影、排序、分页和统计等功能,结合实例详细讲解了语法格式及使用注意事项,适用于初学者快速掌握MongoDB基本操作。
MongoDB常用命令
|
10月前
|
安全 PHP 开发者
PHP 8中的Nullsafe操作符:告别繁琐的空值检查
PHP 8中的Nullsafe操作符:告别繁琐的空值检查
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
用户画像系统技术实现原理深度解析
本文摒弃空泛AI术语,聚焦用户画像系统落地实践,详解“图像采集→基础识别→特征提取→数据关联”全链路。复用现有视觉分析能力,通过设备兼容、模型优化、数据绑定等手段,实现低成本、高精度、结构化画像生成,助力技术从业者快速掌握真实可用的视觉智能应用方案。
282 1
|
4月前
|
传感器 算法 机器人
深度解析迎宾机器人技术架构与主流产品选型指南
随着AI与自动化发展,迎宾机器人已从“噱头”变为政务、医疗、商业等场景的核心服务终端。本文深入解析其多模态交互、自主导航、知识图谱三大技术,并对比猎户星空、优必选、傅利叶智能、康力优蓝四大主流产品,揭示如何选型适配不同场景需求。
234 6

热门文章

最新文章