第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

SpringCloud Alibaba入門與實踐教程

概述

SpringCloud Alibaba是一套基于SpringCloud的微服务解决方案,包含了服务注册与发现、配置中心、分布式事务、消息队列等多个组件,帮助开发者快速构建和管理分布式系统。通过SpringCloud Alibaba,开发者可以简化微服务之间的集成与管理,提高开发效率和系统稳定性。本文详细介绍了SpringCloud Alibaba的各个组件及其使用方法,包括如何在项目中引入依赖、配置和服务的基本使用方法。

SpringCloud Alibaba入门与实践教程
SpringCloud Alibaba概述

什么是SpringCloud Alibaba

SpringCloud Alibaba是一套基于SpringCloud的微服务解决方案,集成了多个常用组件,如服务注册与发现、配置中心、分布式事务、消息队列等,帮助开发者快速构建和管理分布式系统。通过SpringCloud Alibaba,开发者可以简化微服务之间的集成与管理,提高开发效率和系统稳定性。

SpringCloud Alibaba的组件介绍

SpringCloud Alibaba提供了多个组件,每个组件都有其特定的功能:

  • Nacos:用于服务注册与发现、配置管理。
  • Sentinel:用于流量控制、熔断降级、系统负载保护。
  • Seata:用于分布式事务管理。
  • RocketMQ:用于消息通信。
  • Dubbo:用于服务治理。
  • Alibaba Cloud Discovery:用于整合阿里云服务。
  • Alibaba Cloud Config:用于配置中心的云配置管理。
  • Alibaba Cloud Message:用于消息通信。

如何在项目中引入SpringCloud Alibaba

在SpringBoot项目中引入SpringCloud Alibaba组件,可以通过在pom.xml文件中添加对应的依赖来完成。以下是一些常见的依赖引入方式:

<!-- Spring Boot Parent -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>

<!-- Spring Cloud Alibaba 依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-dubbo</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

spring-cloud-starter-alibaba-nacos-discoveryspring-cloud-starter-alibaba-nacos-config分别是用于服务注册与发现和配置管理的依赖。

服务注册与发现的基本使用方法

服务注册与发现是微服务架构中的重要环节,通过Nacos可以实现服务的自动注册和发现。以下是使用Nacos的示例代码:

服务提供者代码

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceProviderApplication.class, args);
    }
}

服务消费者代码

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceConsumerApplication.class, args);
    }
}

通过@EnableDiscoveryClient注解使应用可以注册到Nacos,而服务消费者通过Feign客户端来调用服务提供者。

Nacos服务注册与发现

Nacos简介

Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台,可以用于构建高可用、动态配置的微服务架构。Nacos可以帮助开发者实现服务的自动注册、发现、负载均衡等功能,简化微服务管理。

SpringCloud Alibaba与Nacos集成

在SpringCloud Alibaba中集成Nacos,需要在项目中引入spring-cloud-starter-alibaba-nacos-discovery依赖,并在配置文件中进行相应配置:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # Nacos服务器地址

服务注册与发现的基本使用方法

在服务提供者和消费者中分别引入@EnableDiscoveryClient注解,并在服务提供者中实现服务逻辑,服务消费者通过Feign客户端调用服务提供者提供的接口。

服务提供者示例代码

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceProviderApplication.class, args);
    }
}

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Nacos!";
    }
}

服务消费者示例代码

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceConsumerApplication.class, args);
    }
}

@RestController
public class ConsumerController {
    @GetMapping("/hello")
    public String hello() {
        return "Consumer says: " + helloService.hello();
    }

    @org.springframework.cloud.openfeign.FeignClient("service-provider")
    public interface HelloService {
        @GetMapping("/hello")
        String hello();
    }
}
Seata分布式事务管理

Seata简介

Seata是一个开源的分布式事务解决方案,旨在通过简单的配置,将微服务架构中各微服务的事务处理统一起来,确保分布式场景下的事务一致性。Seata支持AT模式(自动提交)、TCC模式(两阶段提交)、SAGA模式(补偿事务)和XA模式(XA协议),在不同的场景下选择合适的模式以确保事务的一致性和性能。

Seata在SpringCloud Alibaba中的配置与使用

在SpringCloud Alibaba中集成Seata,需要引入Seata的依赖,并在配置文件中进行相关配置。

引入Seata依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

Seata配置示例

seata:
  server:
    enable-auto-config: true # 开启自动配置
    service:
      vgroup-mapping:
        default: defaultGroup # 分组名称
      default:
        registry:
          type: nacos # 注册中心类型
          nacos:
            server-lists: 127.0.0.1:8848 # 注册中心地址
            application: seata-server # 应用名称
            namespace: 3f3b4b75-4817-4a6e-886b-3b7298c6aaa5 # 命名空间
            group: default # 分组名称
        config:
          type: nacos # 配置中心类型
          nacos:
            server-lists: 127.0.0.1:8848 # 配置中心地址
            application: seata-server # 应用名称
            namespace: 3f3b4b75-4817-4a6e-886b-3b7298c6aaa5 # 命名空间
            group: SEATA_GROUP # 分组名称

使用Seata管理分布式事务示例代码

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {
    @Transactional
    public void addUser(String name) {
        // 模拟数据库操作
        System.out.println("Transaction started");
        // 假设 saveUser 和 saveAddress 是两个数据库操作
        saveUser(name);
        saveAddress(name);
        System.out.println("Transaction committed");
    }

    private void saveUser(String name) {
        System.out.println("Saving user " + name);
    }

    private void saveAddress(String name) {
        System.out.println("Saving address for " + name);
    }
}

分布式事务的基本概念和应用场景

分布式事务的基本概念是指在分布式系统中确保所有操作的一致性,常见的分布式事务管理方式包括两阶段提交(2PC)、三阶段提交(3PC)、SAGA事务等。在微服务架构中,多个服务之间需要协同完成一个业务操作时,可以使用分布式事务来确保所有服务的一致性。

使用RocketMQ实现消息通信

RocketMQ简介

RocketMQ是阿里巴巴开源的一款分布式消息中间件,主要用于异步解耦、流量削峰、分布式事务等场景。RocketMQ支持高并发、高可用、多种消息模型等特性,是构建微服务系统的理想选择。

SpringCloud Alibaba与RocketMQ集成

通过引入spring-cloud-starter-alibaba-rocketmq依赖,可以实现与RocketMQ的集成。

引入RocketMQ依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-rocketmq</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

RocketMQ配置示例

rocketmq:
  namesrvAddr: 127.0.0.1:9876 # Name Server地址

如何发送和接收消息

发送消息和接收消息是RocketMQ的基本功能,可以分别通过发送消息服务和消费消息服务来实现。

发送消息示例代码

import com.alibaba.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SendMessageController {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    @GetMapping("/send")
    public String sendMessage() {
        rocketMQTemplate.convertAndSend("topic", "Hello, RocketMQ!");
        return "Message sent.";
    }
}

接收消息示例代码

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

@Component
@RocketMQMessageListener(topic = "topic", consumerGroup = "testGroup")
public class MessageReceiver implements RocketMQListener<String> {
    @Override
    public void onMessage(String message) {
        System.out.println("Received message: " + message);
    }
}
Gateway API网关配置

Gateway简介

SpringCloud Gateway是SpringCloud的一个服务网关组件,用于构建API网关,提供路由、过滤器等功能。通过Gateway,可以实现对微服务的统一入口管理和流量控制,减少客户端与服务端的直接交互。

Gateway在SpringCloud Alibaba中的配置方法

在SpringCloud Alibaba项目中,可以通过引入spring-cloud-starter-gateway依赖来使用Gateway。

引入Gateway依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

Gateway配置示例

spring:
  cloud:
    gateway:
      routes:
        - id: route1
          uri: http://example.com
          predicates:
            - Path=/api/**
          filters:
            - StripPrefix=1

API路由和过滤器的应用

通过Gateway,可以灵活地定义路由规则和过滤器,实现复杂的流量控制逻辑。

路由示例

spring:
  cloud:
    gateway:
      routes:
        - id: route1
          uri: lb://service-provider # 调用服务提供者
          predicates:
            - Path=/hello/**

过滤器示例

spring:
  cloud:
    gateway:
      routes:
        - id: route1
          uri: lb://service-provider
          predicates:
            - Path=/hello/**
          filters:
            - RewritePath=/hello/(?<segment>.*), /api/$\{segment}
实战案例:搭建一个简单的微服务项目

完整项目规划与设计

本案例构建一个简单的购物车系统,包括商品服务(Service Provider)、购物车服务(Service Cart)、订单服务(Service Order)三个服务模块。

服务架构图

+-----------+       +----------------+       +--------------+
| Service   | <---- | Service Cart   | <---- | Service Order |
| Provider  |       +----------------+       +--------------+

代码实现与部署

商品服务代码实现

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceProviderApplication.class, args);
    }
}

@RestController
public class ProductController {
    @GetMapping("/product")
    public String getProduct() {
        return "Product from Service Provider";
    }
}

购物车服务代码实现

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceCartApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceCartApplication.class, args);
    }
}

@RestController
public class CartController {
    @GetMapping("/cart")
    public String getCart() {
        return "Cart from Service Cart";
    }
}

订单服务代码实现

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceOrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceOrderApplication.class, args);
    }
}

@RestController
public class OrderController {
    @GetMapping("/order")
    public String getOrder() {
        return "Order from Service Order";
    }
}

服务注册与发现配置

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

测试和调试

运行每个服务模块,通过浏览器或Postman等工具访问各服务的接口,验证服务注册与发现、服务调用等功能是否正常。

http://localhost:8080/product
http://localhost:8081/cart
http://localhost:8082/order

通过以上步骤,可以实现一个简单的微服务项目,并验证各服务之间的调用关系。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消