1. 首页
  2. 软件开发
  3. Spring Cloud Alibaba 新手小白入门

Spring Cloud Alibaba 新手小白入门

  • 发布于 2024-08-19
  • 0 次阅读

一,什么是Spring Cloud Alibaba

Spring Cloud Alibaba 是一种分布式的解决方案,不是框架,也不是架构,而是一种方案。方案的作用是用来解决分布式服务所遇到的问题。
比如说如果我们在做微服务之间的调用的时候,Spring Cloud Alibaba 给的解决方案是用Nacos 来做服务注册和管理,用Feign 来做服务之间的自由调用。
二、Spring Cloud Alibaba 主要组件

Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道

三、搭建准备工作。

1**,**idea,这个自行下载安装,网上有很多教程。

2,jdk,自行安装下载。

3,maven,自行安装下载。

2,把Nacos作为配置中心

下载地址:nacos.io/zh-cn/docs/quick-start.html

选择对应版本进行解压(注意 Nacos 解压后 是一个完整的运行包,如果用的不熟练,不要动里面的配置信息)


启动安装目录bin目录下startup.cmd

如启动失败,提示"unable to start embedded tomcat"

修改startup.cmd文件set MODE="standalone",重新启动成功。

如正常启动成功,则下一步(访问启动提示网址)

启动成功后 默认账号密码 nacos/nacos(初始账号密码)

Nacos 真正作用是将配置从应用中剥离出来,统一管理,优雅地解决了配置的动态变更、持久化、运维成本等问题。应用自身既不需要去添加管理配置接口,也不需要自己去实现配置的持久化,更不需要引入"定时任务"以便降低运维成本。Nacos 提供的配置管理功能,将配置相关的所有逻辑都收拢,并且提供简单易用的 SDK,让应用的配置可以非常方便被 Nacos 管理起来不仅如此,Nacos提供 DNS-F功能, 可以与K8S、Spring Cloud和Dubbo等多个开源产品进行集成,实现服务的注册功能。

服务发现使用来管理注册到nacos 上的微服务,可以实现服务下线等功能。
命名空间是用来做服务环境区分,当项目需要开发,测试, 生产等多个不同的配置, 命名空间就可以做配置隔离。

-----到这里,基本的准备工作就做好了,下面我们来看一下如何搭建一个简单的微服务

三、工程搭建


1.首先我们先用SpringBoot创建2个工程,我这里就叫:provider,consumer.






到这里我已经设置好一个provider服务,后我我会再搭建一个消费者服务,操作步骤和上面一样

到这里我已经搭建好2个服务工程,点击apply,点击ok,工程搭建完毕

四、服务配置

provider服务配置

1.provider代码如下和配置文件(新建的工程默认是application.properties,但是再工作中用的比较多的是yml格式,所以这里我把properties改成了yml格式)如下图

2.ProviderController代码如下:


@RestController
public class ProviderController {


@Value("${providerName}")
private String name;
@GetMapping("send")
public String send(){
return name;
}
}

3.application.yml配置如下:

server:
port: 8080
#自定义参数
providerName: provider
4.provider注册到nacos

生产者注册到nacos注册中心,步骤:
添加依赖:spring-cloud-starter-alibaba-nacos-discovery及springCloud

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <!--整合Nacos -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.9.0.RELEASE</version>
        </dependency>
    </dependencies>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

在 application.yml 中配置nacos服务地址和应用名


**server:
port: 8080
spring:
application:

应用名

name: provider

nacos服务地址

cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
#自定义参数
providerName: provider**


启动服务,然后登陆Nacos服务查看,结果如下

consumer服务配置


1.首先按照我上面的引入maven依赖。
2.由于配置基本和上面一样我这里就把我代码部分例举出来
代码:

@RestController
public class ConsumerController {
 
    @GetMapping("consumer")
    public String send(){
        return "Consumer";
    }
 
}

yml配置

server:
  port: 8081
 
spring:
  application:
    ## 应用名
    name: consumer
  ## nacos服务地址
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

启动服务

下面开始整合Feign实现远程调用


1.先引入feign相关依赖

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

2.在ConsumerApplication类上添加@EnableFeignClients注解:


3.编写feignClient:

@FeignClient("provider")
public interface ProviderFeign {
 
    @RequestMapping("send")
     String send();
}

在Controller中使用feignClient:


@RestController
public class ConsumerController {
 
    @Autowired
    private ProviderFeign providerFeign;
 
    @GetMapping("consumer")
    public String send(){
        String send = providerFeign.send();
        return "Consumer" + send;
    }
 
}

测试访问:

至此一个简单的微服务工程已经搭建完毕,其实整个流程很简单,可以按照步骤操作一遍。

后面都给大家讲解集群管理。

原文链接: https://blog.csdn.net/cuiqwei/article/details/125427343