SpringCloud(十)——Spring Cloud Alibaba组件

SpringCloud(十)——Spring Cloud Alibaba组件

前言

  • SpringCloudAlibaba官方定义:

该微服务工具集是分布式应用开发的一整套解决方案。换句话说,该工具集为分布式应用开发提供了一站式解决方案,其中包含开发分布式应用的所有组件。

  • SpringCloudAlibaba特性以及提供的组件:
    • 服务流量控制和服务降级(Sentinel):对应替换Hystrix
    • 服务注册和发现组件(Nacos):对应替换consul以及Eureka
    • 统一中心(Nacos):对应替换config
    • 事件驱动(RocketMQ):对应替换Bus
    • 分布式事务支持(Seata);
    • Dubbo RPC:使用这个协议的前提是各个微服务使用的语言必须是同一种(Java)。

上述的几个组件中,Alibaba被使用的是前三个(即加粗)的组件,现今微服务开发使用的组件为:

  • Nacos:服务注册中心以及统一配置中心;
  • HttpRest:结合Ribbon或OpenFeign组件实现服务间的负载均衡通信;
  • Sentinel:服务流量监控以及服务降级;
  • Gateway:网关组件。

父项目环境搭建

本篇笔记开始说明SpringCloudAlibaba的相关组件,其项目环境搭建和SpringCloud完全相同,只是引入依赖有些区别。

  • 引入依赖:
<!--控制SpringCloud以及SpringCloudAlibaba版本依赖-->
<properties>
    <spring.cloud-version>2021.0.0</spring.cloud-version>
    <spring.cloud.alibaba.version>2.2.7.RELEASE</spring.cloud.alibaba.version>
</properties>
<!--SpringBoot版本-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.3</version>
</parent>
<!--SpringCloud以及Alibaba组件版本依赖-->
<dependencyManagement>
    <dependencies>
        <!--维护SpringCloud 版本-->
        <!--SpringCloud插件的引入同样不会引入依赖,只是维护版本-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring.cloud-version}</version>
            <!--引入父项目工具集的时候,表示当前为工具集-->
            <type>pom</type>
            <!--表示引入-->
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring.cloud.alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

【注】:我们新开的父项目在一个新的路径下,这个时候需要将该目录下的JDK和Maven重新配置,否则会出现问题。

Nacos替换consul

使用Nacos替换consul需要注意的是,连接注册中心的依赖需要更改,远端服务器中的注册中心组件需要更改。

Nacos下载

Nacos下载教程

在此需要说明一下,下载教程中为大家提供了两个下载链接,主要是版本不同,大家注意区分。因为大家在使用Nacos依赖的版本如果过高(2.0版本以上)的时候,低版本的Nacos服务无法承载本地的版本。

查看Nacos在GitHub中的版本依赖开一发现,在1.4.1版本开始修改了老版本的客户端代码,所以大家要区分自己需要的版本。

Nacos客户端配置

在此创建的NacosClient服务仅仅代指需要注册到注册中心的微服务。

  • 引入依赖
<dependencies>
    <!--SpringCloud 项目必须基于SpringBoot-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--nacos 依赖-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>
  • 书写配置
server.port=8081
spring.application.name=NACOSCLIENT
# 配置总nacos
#spring.cloud.nacos.server-addr=${ip}:8848
# 单纯配置注册中心的路径
spring.cloud.nacos.discovery.server-addr=${ip}:8848
# 服务名 ,默认为SpringBoot服务名,所以可以不写
#spring.cloud.nacos.discovery.service=${spring.application.name}
  • 入口类添加注解
@SpringBootApplication
// 该注解表示根据配置文件来讲服务注册到相应的注册中心中,从20版本以后就可以不用写了
//@EnableDiscoveryClient
public class NacosClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosClientApplication.class,args);
    }
}

**【注】:**如果发现启动过程中发现无法连接到Nacos服务,请检查网络以及自己的版本是否可以可以匹配。

Nacos套用OpenFeign

Nacos使用OpenFeign进行服务间通信需要注意一些问题,如下:

<!--nacos-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <!--查看源码发现:SpringCloud在Hoxton.M2 RELEASED 版本之后就舍弃掉了Ribbon,而是使用LoadBalance-->
    <!--所以,不引入对应的LoadBalance会报错,同时,要注意去掉nacos中的ribbon组件,否则会覆盖loadbalance失效-->
    <exclusions>
        <exclusion>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--openfeign-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

**【注】:**注释里面都说明了,在此不做赘述。

总结

从本篇笔记开始记录的问题,都是基于之前笔记的说明, 所以建议想要学习的同学进行系统的学习。最后,大家一定要对自己使用的版本进行查看。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值