一,Nacos概述
Nacos一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台
在应用上Nacos的功能就是注册中心+配置中心,通俗的来说就是Eureka+Config+Bus,它的功能更加强大也更加完善
- 特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求
- 架构大图:通过清晰架构,让您快速进入 Nacos 世界
- 业务大图:利用当前特性可以支持的业务场景,及其最佳实践
- 生态大图:系统梳理 Nacos 和主流技术生态的关系
- 优势大图:展示 Nacos 核心竞争力
- 战略大图:要从战略到战术层面讲 Nacos 的宏观优势
二,Nacos服务端的安装
Nacos提供了 Linux/Unix/Mac/Windows的安装
下载地址:https://github.com/alibaba/nacos/releases
一,Linux安装Nacos
前置准备:省略
- 安装jdk环境
- 安装maven环境
下载nacos:
① 上传到linux系统中
② 解压
tar -zxvf nacos-server-2.0.3.tar.gz
③ 启动(执行文件在nacos/bin目录中)
sh startup.sh -m standalone #单机启动
④ 访问
http://192.168.68.134:8848/nacos
二,Windowns安装nacos(省略)
三,Nacos的使用
一,Nacos服务提供者注册
Nacos有两大依赖:
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现
父工程依赖:
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
① 导入maven依赖(有父工程就不需要写版本号)
<dependencies> <!--实现服务的注册与发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies>
② application配置
server: port: 9100 spring: application: name: nacos-pyment-provider cloud: nacos: discovery: server-addr: 192.168.68.134:8848 #nacos服务端地址 management: endpoints: web: exposure: include: "*"
③ main启动类
@SpringBootApplication @EnableDiscoveryClient //nacos客户端 public class NacosClientMain { public static void main(String[] args) { SpringApplication.run(NacosClientMain.class,args); } }
④ controller调用
@RestController public class nacoscontroller { @Value("${server.port}") String port; @GetMapping(value = "/pyment/nacos/{id}") public String getnacos(@PathVariable("id") Integer id){ return "nacos registory serverport:"+port+"--->"+id; }}
查看nacos服务端是否有改服务:
二,nacos服务消费者注册和调用
Nacos默认就支持负载均衡,底层负载均衡整合了Ribbon:
Nacos服务的调用和负载均衡和SpringCloud的eureka是一样的,都使用http进行调用(Ribbon+RestTemplate),当然也可以使用OpenFeign
① 导入maven依赖
<dependencies> <!--实现服务的注册与发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies>
② application配置
server: port: 9103 spring: application: name: nacos-order-consumer cloud: nacos: discovery: server-addr: 192.168.68.134:8848 #nacos服务端地址 service-url: #这个是自定义,通过@Value在代码中调用 nacos-user-service: http://nacos-pyment-provider management: endpoints: web: exposure: include: "*"
③ main启动类
@SpringBootApplication @EnableDiscoveryClient public class NacosConsumerMain { public static void main(String[] args) { SpringApplication.run(NacosConsumerMain.class,args); } }
④ config配置resttemplate
@Configuration public class ApplicationConfig { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); }}
⑤ controller调用服务提供端
@RestController public class OrderNacosController { @Resource RestTemplate restTemplate; @Value("${service-url.nacos-user-service}") String httpaddr; @GetMapping(value = "/consumer/nacos/{id}") public String pymentinfo(@PathVariable("id") Integer id){ return restTemplate.getForObject(httpaddr+"/pyment/nacos/"+id,String.class); } }
Nacos服务端:
消费端调用服务端:
四,Nacos对比其他服务注册中心
Nacos注册中心是全生态的:
它不仅整合springcloud,dubbo还整合K8s,docker等编排运维工具,而其他注册中心做不到这一点
nacos和其他注册中心的对比:
Nacos最大的特点是同时支持AP和CP
Nacos的CP和AP适用于不同的场景:
- AP:如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP,当前主流的服务如SpringCloud和Dubbo服务,都适用于AP模式,AP模式为了服务的可用性而减弱了一致性,因此AP模式下只支持注册临时实例
- CP:如果需要存储服务级别或者存储配置信息,那么CP是必须的,K8S服务和DNS服务则适用于CP模式,CP模式支持注册持久化实例,此时是以Raft协议为集群运行模式,改模式下注册实例之前必须先注册服务,如果服务不存在,则返回错误信息
CP和AP切换命令:
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
- 这个不能随便切,建议保持默认的AP即可
- 集群环境下所有的服务都要切换
- 可以使用postman模拟也可以使用CRUL命令,必须使用put请求。用get和post均无效
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109