Spring全家桶--SpringCloud(高级)

本文详细介绍了Nacos在服务注册、配置管理、负载均衡等方面的应用,对比了Nacos与其他服务注册中心的特性,并通过实例演示了如何在Spring Cloud中使用Nacos进行服务治理。此外,还探讨了Sentinel的流量控制和熔断降级策略,包括QPS、线程数、预热、排队等待等模式,并总结了系统自适应保护和异常处理。最后,文章提供了全面的学习资料和大厂面试场景的知识点总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。

  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

  • Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

  • Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

  • Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

1.4 资源获取


Spring Cloud Alibaba学习资料获取

  • 官网

  • https://spring.io/projects/spring-cloud-alibaba#overview

  • 英文

  • https://github.com/alibaba/spring-cloud-alibaba

  • https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html

  • 中文

  • https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

二、Nacos

======================================================================

2.1 Nacos简介


为什么叫Nacos

  • 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。

是什么

  • 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • Nacos: Dynamic Naming and Configuration Service

  • Nacos就是注册中心+配置中心的组合 -> Nacos = Eureka+Config+Bus

能干嘛

  • 替代Eureka做服务注册中心

  • 替代Config做服务配置中心

去哪下

  • https://github.com/alibaba/nacos/releases

各中注册中心比较

| 服务注册与发现框架 | CAP模型 | 控制台管理 | 社区活跃度 |

| — | — | — | — |

| Eureka | AP | 支持 | 低(2.x版本闭源) |

| Zookeeper | CP | 不支持 | 中 |

| consul | CP | 支持 | 高 |

| Nacos | AP | 支持 | 高 |

据说Nacos在阿里巴巴内部有超过10万的实例运行,已经过了类似双十一等各种大型流量的考验。

2.2 Nacos安装


  • 本地Java8+Maven环境已经OK先

  • 官网下载Nacos

  • 解压安装包,直接运行bin目录下的startup.cmd

  • 命令运行成功后直接访问http://localhost:8848/nacos,默认账号密码都是nacos

[外链图片转存中…(img-u3PMF1OI-1648868469453)]

image-20220328184038730

2.3 Nacos负载实例


2.3.1 Nacos之服务提供者注册

新建Module - cloudalibaba-provider-payment9001

父POM

com.alibaba.cloud

spring-cloud-alibaba-dependencies

2.1.0.RELEASE

pom

import

POM

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

cloud

com.caq.cloud

1.0-SNAPSHOT

4.0.0

cloudalibaba-provider-payment9001

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-actuator

org.springframework.boot

spring-boot-devtools

runtime

true

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

YML

server:

port: 9001

spring:

application:

name: nacos-payment-provider

cloud:

nacos:

discovery:

server-addr: localhost:8848 #配置Nacos地址

management:

endpoints:

web:

exposure:

include: ‘*’

主启动类

@EnableDiscoveryClient和@EnableEurekaClient共同点就是:都是能够让注册中心能够发现,扫描到改服务。

不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。

package com.caq.cloud;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient

@SpringBootApplication

public class PaymentMain9001 {

public static void main(String[] args) {

SpringApplication.run(PaymentMain9001.class, args);

}

}

测试

  • http://localhost:9001/payment/nacos/1

  • nacos控制台

  • nacos服务注册中心+服务提供者9001都OK了

image-20220328194227214

cloudalibaba-provider-payment9002

同上,只需该端口号即可

2.3.2 Nacos之服务消费者注册和负载

新建Module - cloudalibaba-consumer-nacos-order83

POM

为什么nacos支持负载均衡?因为spring-cloud-starter-alibaba-nacos-discovery内含netflix-ribbon包。

image-20220328212515444

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

cloud

com.caq.cloud

1.0-SNAPSHOT

4.0.0

cloudalibaba-consumer-nacos-order83

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-actuator

org.springframework.boot

spring-boot-devtools

runtime

true

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

yml

server:

port: 83

spring:

application:

name: nacos-order-consumer

cloud:

nacos:

discovery:

server-addr: localhost:8848

#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)

service-url:

nacos-user-service: http://nacos-payment-provider

主启动

@EnableDiscoveryClient

@SpringBootApplication

public class OrderNacosMain83

{

public static void main(String[] args)

{

SpringApplication.run(OrderNacosMain83.class,args);

}

}

业务类

ApplicationContextConfig

@Configuration

public class ApplicationContextConfig

{

@Bean

@LoadBalanced

public RestTemplate getRestTemplate()

{

return new RestTemplate();

}

}

测试

[外链图片转存中…(img-NZ8wauog-1648868469471)]

2.3.3 Nacos服务注册中心对比提升

[外链图片转存中…(img-tGccNyxc-1648868469473)]

Nacos和CAP

Nacos与其他注册中心特性对比

[外链图片转存中…(img-PVarRw6z-1648868469474)]

Nacos服务发现实例模型

[外链图片转存中…(img-L8IHwhEO-1648868469475)]

Nacos支持AP和CP模式的切换

C是所有节点在同一时间看到的数据是一致的;而A的定义是所有的请求都会收到响应。

何时选择使用何种模式?

—般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如Spring cloud和Dubbo服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。

如果需要在服务级别编辑或者存储配置信息,那么CP是必须ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值