点击关注公众号,Java干货及时送达

本次教程旨在为读者提供2020版本的最佳实践方案,使用我认为最容易学习的组件,可能很多组件有很多替代方案,在这里不依依讲述。本次教程使用的组件如下:

  • 注册中心:nacos,替代方案eureka、consul、zookeeper

  • 配置中心: nacos ,替代方案sc config、consul config

  • 服务调用:feign,替代方案:resttempate

  • 熔断:sentinel、,替代方案:Resilience4j

  • 熔断监控:sentinel dashboard

  • 负载均衡:sc loadbalancer

  • 网关:spring cloud gateway

  • 链路:spring cloud sleuth+zipkin,替代方案:skywalking等。

本次教程总体架构如下:

使用nacos作为注册中心

下载nacos,并启动

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。下载地址https://github.com/alibaba/nacos/releases,下载最新版的2.0版本。

下载完成后,解压,在解压后的文件的/bin目录下,windows系统点击startup.cmd就可以启动nacos。linux或mac执行以下命令启动nacos。

sh startup.sh -m standalone

登陆页面:http://localhost:8848/nacos/,登陆用户nacos,登陆密码为nacos。

工程案例

本小节工单案例包括2个,一个服务提供者provider 、服务消费者consumer。

在父pom文件引入相关的依赖,如下:

    <properties><java.version>1.8</java.version><spring-boot.version>2.4.4</spring-boot.version><spring-cloud.version>2020.0.2</spring-cloud.version><spring-cloud-alibaba.version>2020.0.RC1</spring-cloud-alibaba.version></properties><dependencyManagement><dependencies><!-- spring boot 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- spring cloud 依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- spring cloud alibaba 依赖 --><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>

服务提供者provider

在provider的pom文件引入依赖:

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

配置文件application.yml:

server:port: 8762spring:application:name: providercloud:nacos:discovery:server-addr: 127.0.0.1:8848

写一个接口:

@SpringBootApplication
@RestController
@EnableDiscoveryClient
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}@Value("${server.port}")String port;@GetMapping("/hi")public String hi(@RequestParam(value = "name", defaultValue = "forezp",required = false) String name) {return "hello " + name + ", i'm provider ,my port:" + port;}
}

服务消费者consumer

在pom文件引入以下依赖:

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

需要注意的是引入openfeign,必须要引入loadbalancer,否则无法启动。

配置文件:

server:port: 8763spring:application:name: consumercloud:nacos:discovery:server-addr: 127.0.0.1:8848

在工程的启动文件开启FeignClient的功能:

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

写一个FeignClient,去调用provider服务的接口:

@FeignClient(value = "provider" )
public interface ProviderClient {@GetMapping("/hi")String hi(@RequestParam(value = "name", defaultValue = "forezp", required = false) String name);
}

写一个接口,让consumer去调用provider服务的接口:

@RestController
public class ConsumerController {@AutowiredProviderClient providerClient;@GetMapping("/hi-feign")public String hiFeign(){return providerClient.hi("feign");}
}

启动两个工程,在nacos页面查看,可见2个服务都已经注册成功:

服务调用

在浏览器上输入http://localhost:8763/hi-feign,浏览器返回响应:

hello feign, i'm provider ,my port:8762

可见浏览器的请求成功调用了consumer服务的接口,consumer服务也成功地通过feign成功的调用了provider服务的接口。

使用sc loadbanlancer作为负载均衡

其实feign使用了spring cloud loadbanlancer作为负载均衡器。可以通过修改provider的端口,再在本地启动一个新的provider服务,那么本地有2个provider 服务,端口分别为8761 和8762。在浏览器上多次调用http://localhost:8763/hi-feign,浏览器会交替显示:

hello feign, i'm provider ,my port:8762hello feign, i'm provider ,my port:8761

使用nacos作为配置中心

在此教程中不讲述,请参考:https://www.fangzhipeng.com/springcloud/2019/05/30/sc-nacos-discovery.html

源码下载

https://github.com/forezp/SpringCloudLearning/tree/master/sc-2020-chapter1

热门内容:服务端如何防止订单重复支付!
拜托!不要用“ ! = null " 做判空了
道友自诉:入职中软一个月(外包华为)就离职了!
23 种设计模式的通俗解释,看完秒懂
token多平台身份认证架构设计思路
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

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

  1. SpringCloud 2020版本教程0:springcloud 2020版本概述

    Spring cloud赶在2020年最后几天发布了新版本,版本号取名为2020.0.0,取消了英国地铁的命名方式.从H版本之后,全新的命名为2020.x.x.马上快2021年了,为毛不取名为2021 ...

  2. SpringCloud 2020版本教程2:使用spring cloud gateway作为服务网关

    点击关注公众号,Java干货及时送达 Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关.网关作为流量的,在微服务系统中有着非常作用,网关常见 ...

  3. SpringCloud 2020版本教程3:使用sentinel作为熔断器

    点击关注公众号,Java干货及时送达 什么是sentinel Sentinel,中文翻译为哨兵,是为微服务提供流量控制.熔断降级的功能,它和Hystrix提供的功能一样,可以有效的解决微服务调用产生的 ...

  4. SpringCloud 2020版本教程4:使用spring cloud sleuth+zipkin实现链路追踪

    点击关注公众号,Java干货及时送达 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可. 微服 ...

  5. 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

    转载请标明出处: http://blog.csdn.net/forezp/article/details/81041045 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...

  6. 6.SpringCloud -- 注册中心与配置中心 Nacos、网关 Gateway

    6.SpringCloud -- 注册中心与配置中心 Nacos.网关 Gateway 一.了解一下 SpringCloud Alibaba 1.1 SpringCloudAlibaba (1)简单说 ...

  7. spring cloud集成nacos注册中心、配置中心、服务远程调用

    简介 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构建.交付和 ...

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

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

  9. 使用Nacos搭建微服务注册中心和配置中心(一)

    Nacos用于替换Spring Cloud Eureka和Spring Cloud Config,集注册中心和配置中心功能于一体. 本地测试搭建使用的环境为:win10, JDK8, MySQL5.6 ...

最新文章

  1. boost::asio中的C/S同步实例源码
  2. dijkstra最短路径算法视频_java实现Dijkstra算法求最短路径
  3. MAC系统使用Homebrew安装nvm
  4. Form表单中的button导致页面刷新而无法进入Ajax请求回调函数
  5. php强制对齐,[强迫症福利] 使用 PHPStorm 对齐数组的键值对
  6. 赛思互动:为什么越来越多的企业愿意接受SaaS服务?
  7. 承博士:让云计算落地生根的中国云计算平台
  8. html怎么控制进度条,HTML如何实现进度条?附源码
  9. Java学习日报—Swagger介绍 与 布隆过滤器详解—2021/12/01
  10. Spring Boot Starter 常用列表
  11. 如何让BERT具有文本生成能力
  12. 12款惊人的HTML5Flash视频播放器
  13. 如何利用计算机教室上英语,如何有效利用多媒体进行英语教学
  14. 数据地图在商业数据分析中的5种应用
  15. V2X方案之RSU介绍
  16. 今日恐慌与贪婪指数为25 恐慌程度有所缓解
  17. 关于ViewPager.PageTransformer的一些理解
  18. 利用微软Text-To-Speech朗读文本
  19. C++ qt实现打开关闭状态按钮
  20. NCBI Pathogen Detection project简介

热门文章

  1. 阅读Book: MultiObjective using Evolutionary Algorithms (4) --- 3 种方法find Non-dominated set
  2. Dinic二分图匹配 || Luogu P3386
  3. 通过httpmodule获取webapi返回的信息
  4. [亲测]在Mac下配置php开发环境:Apache+php+MySql
  5. JAVA中的垃圾回收机制以及其在android开发中的作用
  6. 看看现在大型网站都是用什么语言写的 ?
  7. Eclipse进行可视化的GUI开发3大GUI插件
  8. 【转载】C语言编译全过程
  9. 如何使用netwokx进行复杂网络的中心性分析?
  10. mnist数据集保存为图片