Spring Cloud Alibaba版本选型

版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

由于Spring Boot 2.4+和以下版本之间变化较大,目前企业级客户老项目相关Spring Boot版本仍停留在Spring Boot 2.4以下,为了同时满足存量用户和新用户不同需求,社区以Spring Boot 2.4为分界线,同时维护2.2.x和2021.x两个分支迭代。

适配Spring Boot 2.4, Spring Cloud 2021.x版本及以上的Spring Cloud Alibaba版本如下表(最新版本用*标记): (注意,该分支 Spring Cloud Alibaba版本命名方式进行了调整, 未来将对应Spring Cloud版本, 前三位为Spring Cloud版本,最后一位为扩展版本,比如适配Spring Cloud 2021.0.1版本对应的Spring Cloud Alibaba第一个版本为:2021.0.1.0,第个二版本为:2021.0.1.1,依此类推)

Spring Cloud Alibaba Version Spring Cloud Version Spring Boot Version
2021.0.4.0* Spring Cloud 2021.0.4 2.6.11
2021.0.1.0 Spring Cloud 2021.0.1 2.6.3
2021.1 Spring Cloud 2020.0.1 2.4.2

父pom配置

这里使用Spring Cloud 2021.0.4、Spring Cloud Alibaba 2021.0.4.0。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.11</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.morris.nacos</groupId><artifactId>nacos-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>nacos-demo</name><description>nacos-demo</description><properties><java.version>1.8</java.version><spring-cloud.version>2021.0.4</spring-cloud.version><spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version></properties><modules><module>user-service</module><module>order-service</module></modules><dependencyManagement><dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

服务提供者order-service

服务提供者可以通过Nacos的服务注册发现功能将其服务注册到Nacos Server上。

引入依赖

order-service项目的pom.xml中引入依赖:

<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>

配置nacos注册中心

server:port: 8020spring:application:name: order-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848

更多配置参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery

启动order-service,查看是否注册成功

启动order-service,可以前往nacos管理端界面查看是否成功注册。

管理后台地址:http://localhost:8848/nacos/index.html#/serviceManagement?dataId=&group=&appName=&namespace=

也可以通过Open API查询实例列表:http://localhost:8848/nacos/v1/ns/instance/list?serviceName=order-service

{"hosts": [{"ip": "127.0.0.1","port": 8020,"valid": true,"healthy": true,"marked": false,"instanceId": "127.0.0.1#8020#DEFAULT#DEFAULT_GROUP@@order-service","metadata": {"preserved.register.source": "SPRING_CLOUD"},"enabled": true,"weight": 1,"clusterName": "DEFAULT","serviceName": "order-service","ephemeral": true}],"dom": "order-service","name": "DEFAULT_GROUP@@order-service","cacheMillis": 3000,"lastRefTime": 1666168905613,"checksum": "b943a7ec55bd85740b4d5055382261eb","useSpecifiedURL": false,"clusters": "","env": "","metadata": {}
}

服务消费者user-service

服务消费者可以通过Nacos的服务注册发现功能从Nacos server上获取到它要调用的服务。

配置nacos注册中心

server:port: 8030spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848

使用RestTemplate进行http调用

引入依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

加入配置:

@Configuration
public class RestConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

这里只是简单的http调用,没有使用到注册中心:

@GetMapping("findOrderByUserId")
public List<Order> findOrderByUserId(Long userId) {Order[] orders = restTemplate.getForObject("http://127.0.0.1:8020/order/findOrderByUserId?userId=", Order[].class, userId);return Arrays.asList(orders);
}

使用RestTemplate进行服务调用

引入依赖:

<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-loadbalancer</artifactId>
</dependency>

新版本SpringCloud推荐使用loadbalancer来实现负载均衡,已经不再包含ribbon依赖了。

加入配置:

@Configuration
public class RestConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate2() {return new RestTemplate();}
}

调用:

@GetMapping("findOrderByUserId2")
public List<Order> findOrderByUserId2(Long userId) {Order[] orders = restTemplate2.getForObject("http://order-service/order/findOrderByUserId?userId=", Order[].class, userId);return Arrays.asList(orders);
}

使用WebClient进行HTTP调用

引入依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

加入配置:

@Bean
WebClient.Builder webClientBuilder() {return WebClient.builder();
}

调用:

@GetMapping("findOrderByUserId3")
public Mono<List<Order>> findOrderByUserId3(Long userId) {return webClientBuilder.build().get().uri("http://127.0.0.1:8020/order/findOrderByUserId?userId=" + userId).retrieve().bodyToMono(Order[].class).map(t -> Arrays.asList(t));
}

使用WebClient进行服务调用

引入依赖:

<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-loadbalancer</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

加入配置:

@Bean
@LoadBalanced
WebClient.Builder webClientBuilder2() {return WebClient.builder();
}

调用:

@GetMapping("findOrderByUserId4")
public Mono<List<Order>> findOrderByUserId4(Long userId) {return webClientBuilder2.build().get().uri("http://order-service/order/findOrderByUserId?userId=" + userId).retrieve().bodyToMono(Order[].class).map(t -> Arrays.asList(t));
}

使用Feign进行服务调用

引入依赖:

<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-loadbalancer</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

开启@EnableFeignClients。

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

加入Client配置:

package com.morris.user.client;import com.morris.user.entity.Order;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;import java.util.List;@FeignClient(value = "order-service", path = "/order")
public interface OrderClient {@GetMapping("findOrderByUserId")List<Order> findOrderByUserId(@RequestParam("userId") Long userId);}

调用:

@GetMapping("findOrderByUserId5")
public List<Order> findOrderByUserId5(Long userId) {return orderClient.findOrderByUserId(userId);
}

【Nacos】Nacos注册中心的使用相关推荐

  1. SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心

    点击关注公众号,Java干货及时送达 本次教程旨在为读者提供2020版本的最佳实践方案,使用我认为最容易学习的组件,可能很多组件有很多替代方案,在这里不依依讲述.本次教程使用的组件如下: 注册中心:n ...

  2. nacos 负载策略_Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍. SpringCloud实战 ...

  3. Nacos系列:基于Nacos的注册中心

    前言 所谓注册中心,其实是分布式架构演进过程中的产物,在系统中充当一个协调者的角色.但是,为什么需要这样一个协调者的角色呢?我们先来看一个例子,以便理解为什么分布式架构中需要有注册中心. 案例 小明和 ...

  4. Dubbo 融合 Nacos 成为注册中心

    Nacos 作为 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现. 预备工作 当您将 dubbo-regi ...

  5. Nacos(九)之Dubbo 融合 Nacos 成为注册中心

    转载自  Dubbo 融合 Nacos 成为注册中心 Nacos 作为 Dubbo 生态系统中重要的注册中心实现,本文将会介绍如何进行 Dubbo 对接 Nacos 注册中心的工作. 预备工作 请确保 ...

  6. java注册中心nacos_spring-cloud整合nacos做注册中心

    前面讲了spring-cloud整合nacos做配置中心,这节讲一下nacos做注册中心 至于注册中心是什么,我就不讲了,不了解的可以去问度娘 下面我就直接开始了,也是比较简单的: 1.引入依赖 1. ...

  7. nacos 公共_技术分享——使用nacos作注册中心和配置中心

    什么是nacos? 首先看下官方的简介: Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Naco ...

  8. dubbo之使用nacos作为注册中心

    号外号外:麻烦点击左侧我正在参加博客之星评选,请您投票,给个五星好评,谢谢大家了!!! 写在前面 通过本文一起来看下如何使用nacos作为注册中心来注册dubbo服务提供者和服务消费者的信息. 在这篇 ...

  9. 基于Nacos的注册中心与配置中心

    基于Nacos的注册中心与配置中心 Nacos简介 概述 Nacos全称是动态命名和配置服务,Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.Nacos主要用于发现.配置和 ...

  10. SpringCloud用nacos作为注册中心

    docker安装nacos Docker Toolbox安装nacos docker pull nacos/nacos-server 拉取慢的话,自己去换下源,自行百度. docker images ...

最新文章

  1. C# 四舍五入round函数使用的代码
  2. 公布.NET 框架库源代码(转)
  3. Linux中的popen-pclose
  4. ffmpeg rtp时间戳
  5. python实现自动发送微博,当自己写博客时同步上去。
  6. 渐进式web应用程序_通过渐进式Web应用程序吸引用户并增强他们的体验
  7. tensorflow随机梯度下降算法使用滑动平均模型
  8. Mysql Workbench中EER Diagram逆向生成表
  9. python机器学习库sklearn——数据预处理
  10. Angular5--viewChild/viewChildren、contentChild/contentChildren使用规则小结
  11. JavaScript基础---语言基础(4)
  12. 电容屏、电阻屏基础知识
  13. 计算机制图应用领域,计算机制图对测绘工程的应用
  14. 如何修改ftp服务器密码,如何修改FTP密码
  15. 公司邮箱、公共邮箱、工作邮箱,常用什么邮箱?
  16. virtualBox安装centos6增强包报错解决及配置共享文件夹
  17. 报告预测,到2050年将有超过10亿人流离失所
  18. java 图片水印_JAVA实现图片水印
  19. 泊松分布 (Poisson-Disc)算法
  20. 系统可用性衡量指标MTTR|MTTF|MTBF

热门文章

  1. Unitek的USB3.0 TF卡读卡器
  2. SATA 3.2协议 Error handing机制
  3. 借了你的爱,用我一辈子来还
  4. 我看现在的seo培训机构
  5. Mac上使用docker环境进行C++开发的实践
  6. Halcon深度学习目标检测例程学习经验(1)
  7. 手机用html电视,4种方法教你手机如何连接智能电视
  8. 国内百兆独立服务器哪里的比较便宜镇江电信好吗
  9. java短信生成6位数的校验码
  10. 前后端分离整合阿里云OSS图片上传功能