《Nacos系列》之注册中心
Nacos注册中心
服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。
1、CAP理论
CAP理论是分布式架构中的重要理论。
- C:一致性(Consistency) (所有节点在同一时间具有相同的数据)
- A:可用性(Availability) (保证每个请求不管成功或者失败都有响应)
- P:分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
2、主流注册中心对比
Nacos |
Eureka |
Consul |
CoreDNS |
Zookeeper |
|
---|---|---|---|---|---|
一致性协议 |
CP+AP |
AP |
CP |
— |
CP |
健康检查 |
TCP/HTTP/MYSQL/Client Beat |
Client Beat |
TCP/HTTP/gRPC/Cmd |
— |
Keep Alive |
负载均衡策略 |
权重/metadata/Selector |
Ribbon |
Fabio |
RoundRobin |
— |
雪崩保护 |
有 |
有 |
无 |
无 |
无 |
自动注销实例 |
支持 |
支持 |
不支持 |
不支持 |
支持 |
访问协议 |
HTTP/DNS |
HTTP |
HTTP/DNS |
DNS |
TCP |
监听支持 |
支持 |
支持 |
支持 |
不支持 |
支持 |
多数据中心 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
跨注册中心同步 |
支持 |
不支持 |
支持 |
不支持 |
不支持 |
SpringCloud集成 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
Dubbo集成 |
支持 |
不支持 |
不支持 |
不支持 |
支持 |
K8S集成 |
支持 |
不支持 |
支持 |
支持 |
不支持 |
Nacos除了服务的注册发现之外,还支持动态配置服务。
一句话概括就是Nacos = Spring Cloud注册中心 + Spring Cloud配置中心。
3、集成到SpringCloud中
创建好SC父工程,添加子模块
1)添加pom
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2)主启动类添加注解
@EnableDiscoveryClient
3)添加application.yml配置文件
spring:
application:
name: user
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoints:
web:
exposure:
include: '*'
如果不想使用 Nacos 作为您的服务注册与发现,可以将spring.cloud.nacos.discovery
设置为 false
4)启动项目
以nacos/nacos,登录到127.0.0.1:8848/nacos,可以看到user服务已经注册成功:
5)服务的 EndPoint
spring-cloud-starter-alibaba-nacos-discovery 在实现的时候提供了一个EndPoint
,EndPoint
的访问地址为 http://ip:port/actuator/nacos-discovery。 EndPoint 的信息主要提供了两类:
1、subscribe: 显示了当前有哪些服务订阅者 2、NacosDiscoveryProperties: 显示了当前服务实例关于 Nacos 的基础配置
至此,Spring Cloud使用Nacos作为注册中心已经初步完成,其他配置根据自身业务修改即可。
Q.E.D.
- Android4.0 声卡配置-高通msm8916移植
- PHP安全:session劫持的防御
- 函数式非凡的抽象能力
- 设备树的interrupt
- gitignore文件的作用
- 《Redis设计与实现》读书笔记(十八) ——Redis客户端属性设计与原理
- 使用Python Pandas处理亿级数据
- PHP函数
- Spray中的Authentication和JMeter测试
- 《Redis设计与实现》读书笔记(二十一) ——Redis服务器定时函数serverCron详解
- Spark SQL访问Postgresql
- sysfs_create_group创建sysfs接口
- apache服务器配置
- Android i2c-tools移植
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 算法篇:树之翻转树
- 每日一题 | 约瑟夫问题
- 编码的浪漫:完美序列化的官方评测
- 【Vulnhub】symfonos2
- PWN入门(unsafe unlink)
- tf_cnn_benchmark 显存问题
- Spark on Kubernetes PodTemplate 的配置
- IO ports
- 【android系统】使用s3来上传下载文件
- 【Spark on Kubernetes】Executor环境变量
- Python获取字典值
- 应用程序InetlliJ IDEA不能打开
- yum install空间不足
- prometheus-nginxlog-exporter构建Nginx日志监控
- s3cmd put文件的过程