spring全家桶小白教程系列:服务调用最佳实践(Feign实现)

spring 全家桶的整体介绍

Spring 全家桶是一系列基于 Spring 框架构建的技术栈,为开发者提供了全面的支持。Spring Boot 通过自动配置和起步依赖简化了新 Spring 应用的初始搭建与开发过程;Spring MVC 是用于构建 Web 应用程序的强大框架,支持 RESTful 服务开发;Spring Cloud 提供了微服务架构下的解决方案,包括服务发现、配置管理等,其中 Spring Cloud Alibaba 作为其第二代实现,引入了阿里巴巴的开源项目如 Nacos 和 Sentinel 来进一步优化;Spring Data 则简化了数据访问层代码编写,提供对多种数据库的支持;最新的 Spring AI 则专注于集成人工智能技术到应用中,让开发者可以更方便地利用AI能力。每个组件都致力于提升开发效率,同时保持良好的扩展性和维护性。

spring 微服务 整体介绍

在本章中,我们主要介绍Spring Cloud,它是Spring用来实现服务化——即微服务(micro service)的一套应用封装,是Spring全家桶中最重要的组件之一。微服务是一种将单个应用程序开发为一组小型服务的方法,每个服务运行在其独立的进程中,并通过轻量级机制进行通信。定义Spring微服务就是指Spring Cloud,它提供了一种构建面向终端消费者的应用软件的最佳实践。

典型的应用场景是,当一个团队正在构建Web或App应用,并且该应用已经初步构建起来,随着团队规模的扩大,需要一种更好的开发模式来处理后端服务的可用性、稳定性和提高开发组员之间的协作效率。这时,服务化因其能够通过拆分服务的方式保证不同子服务之间的高内聚和低耦合而成为最佳选择。例如,在一个电商系统中,可以将订单管理、库存管理和用户管理分别作为独立的服务。这样的设计不仅提高了系统的可维护性和扩展性,还简化了开发人员之间的协作流程。Spring Cloud提供了诸如服务注册与发现、配置中心等功能,极大地简化了微服务架构下的服务调用过程。通过使用Spring Cloud,开发者可以轻松地实现跨服务间的高效沟通与协作,从而构建出更加健壮、灵活的应用程序。

spring cloud alibaba介绍

spring cloud alibaba是Spring Cloud目前最佳的本地化实践,它融合了阿里巴巴在Java应用开发领域多年的实践经验,为业务的可持续发展提供了持续保障。以下是其主要组件的简介:

  • Nacos:提供服务发现与配置中心功能,支持动态服务注册和配置管理。
  • SchedulerX:分布式任务调度平台,能够高效管理和执行定时任务。
  • Seata:用于解决分布式事务问题,确保跨多个服务的数据一致性。
  • Sentinel:实现流量控制、熔断降级等功能,保护系统稳定性。
  • RocketMQ:高性能消息中间件,适用于大规模消息传递场景。
  • Dubbo:RPC框架,便于构建微服务架构下的服务间通信。
  • GraalVM:静态编译技术,可以优化启动时间及运行时性能。
  • iLogtail:日志收集工具,帮助开发者进行日志分析和监控。

spring cloud alibaba服务调用实践

spring cloud alibaba服务调用实践

项目依赖配置

首先,在您的 pom.xml 文件中添加必要的依赖项。这里需要引入 spring-cloud-starter-alibaba-nacos-discoveryspring-cloud-starter-openfeign,以支持Nacos的服务发现和Feign的声明式HTTP客户端。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2022.0.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

应用程序配置

在项目的 /src/main/resources/application.properties 文件中添加 Nacos 服务器地址以及其他基础设置:

spring.application.name=service-consumer
server.port=8081
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

启用 Feign 客户端与服务发现

在您的主应用类上添加 @EnableDiscoveryClient@EnableFeignClients 注解,以启用服务发现和服务消费功能。

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

定义 Feign 客户端接口

接下来定义一个 Feign 接口来代表远程服务,并通过 @FeignClient 指定目标服务名称。

@FeignClient(name = "service-provider")
public interface EchoService {

    @GetMapping("/echo/{string}")
    String echo(@PathVariable("string") String string);
}

创建控制器使用 Feign 客户端

创建一个新的 REST 控制器,并在此控制器内注入并使用之前定义的 Feign 客户端。

@RestController
@RequestMapping("/consumer")
public class ConsumerController {

    @Autowired
    private EchoService echoService;

    @GetMapping("/echo/{message}")
    public String echoMessage(@PathVariable String message) {
        return this.echoService.echo(message);
    }
}

验证服务调用

启动提供者和服务消费者两个微服务后,您可以访问如下 URL 来验证是否成功调用了远程服务:

http://localhost:8081/consumer/echo/hello

如果一切正常,您应该看到返回的消息是 hello,这表明服务调用已经成功完成。

以上步骤详尽地展示了如何利用 Spring Cloud Alibaba 结合 Nacos 实现服务之间的互相调用。此过程中包括了从 Maven 依赖配置到具体代码实现的所有细节,确保能够顺利构建并运行基于 Nacos 的微服务架构。

Nacos server的安装和部署

Nacos server的安装和部署

为了在云上通过MSE(微服务引擎)免费试用Nacos作为服务发现组件,您需要遵循以下详细步骤来完成整个过程。这包括环境准备、开通MSE Nacos实例以及将您的微服务应用注册到Nacos中。

准备工作

首先确保你已经拥有了一个阿里云账号,并且完成了必要的实名认证过程。如果还没有账号,请先访问阿里云官网进行注册。

第一步:创建专有网络VPC与交换机
  • 如果您已有适用的VPC及交换机,则可以跳过此步骤。
  • 若需新建,请按照创建和管理专有网络文档中的指引操作。请确保新创建或已有的VPC能够满足后续步骤中所选区域的要求。
第二步:申请并配置MSE Nacos实例
  1. 访问阿里云免费试用页面,登录您的账号。
  2. 从产品列表中选择“中间件 > 微服务引擎”,点击“注册配置 MSE Nacos/ZooKeeper”的“立即试用”按钮。
  3. 在配置面板中填写相关信息:
    • 引擎类型:选择"Nacos"。
    • 实例名称:自定义易于识别的名字。
    • 资源组:保持默认设置。
    • 网络类型:依据您的实际需求选择合适的网络选项。如果您的客户端位于VPC内,则选择“专有网络”;对于公网环境下的客户端,选择“公网网络”。若两者皆需连接至同一实例,则同样选择“专有网络”但额外配置公网带宽。
    • 专有网络:指定第一步里准备好的VPC。
    • 交换机:选取该VPC下的某个交换机。
    • 公网带宽:当选择了公网网络或者专有网络+公网带宽时,设定至少1Mbps以供外部访问使用。
  4. 确认所有信息无误后勾选服务协议,点击“立即试用”。
第三步:等待实例初始化完成
  • 实例创建通常耗时约3至5分钟。在此期间,请耐心等候直至状态显示为“运行中”。您可以通过控制台的实例列表页跟踪进度。
第四步:获取Nacos地址并配置应用
  • 一旦实例变为可用状态,在实例详情页面找到对应的Nacos访问地址。
  • 根据您使用的微服务框架不同(如Spring Cloud或Dubbo),相应地更新其配置文件中指向Nacos服务器的URL。例如,对于Spring Cloud项目,在application.properties文件内添加如下行:
    spring.cloud.nacos.discovery.server-addr=您的Nacos地址:8848
    
    对于Dubbo项目,则是在dubbo:registry标签下设置address属性值。

通过上述步骤,您可以成功地在阿里云平台上利用MSE所提供的免费Nacos服务实现基本的服务注册与发现功能。需要注意的是,在正式生产环境中可能还需要考虑更多安全性和性能优化方面的因素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值