-
Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
-
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
-
Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
-
Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
-
Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
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
- 前四个字母分别为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万的实例运行,已经过了类似双十一等各种大型流量的考验。
-
本地Java8+Maven环境已经OK先
-
从官网下载Nacos
-
解压安装包,直接运行bin目录下的startup.cmd
-
命令运行成功后直接访问http://localhost:8848/nacos,默认账号密码都是nacos
[外链图片转存中…(img-u3PMF1OI-1648868469453)]
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了
cloudalibaba-provider-payment9002
同上,只需该端口号即可
2.3.2 Nacos之服务消费者注册和负载
新建Module - cloudalibaba-consumer-nacos-order83
POM
为什么nacos支持负载均衡?因为spring-cloud-starter-alibaba-nacos-discovery内含netflix-ribbon包。
<?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是必须ÿ