SpringCloudAlibaba随笔目录
二、SpringCloudAlibaba项目之Nacos搭建及服务注册
三、SpringCloudAlibaba项目之生产者与消费者
四、SpringCloudAlibaba项目之Ribbon负载均衡
五、SpringCloudAlibaba项目之OpenFeign远程调用
六、SpringCloudAlibaba项目之
七、SpringCloudAlibaba项目之
SpringCloud项目之Nacos搭建及服务注册
1、Nacos简介
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑2、Nacos优势
常见的注册中心:
Eureka(原生,2.0遇到性能瓶颈,停止维护)
Zookeeper(支持,专业的独立产品。例如:dubbo)
Consul(原生,GO语言开发)
Nacos
相对于 Spring Cloud Eureka 来说,Nacos 更强大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
>> | Nacos | Eureka | Consul | CoreDNS | Zookeeper |
---|---|---|---|---|---|
一致性协议 | CP+AP | AP | CP | / | CP |
健康检查 | TCP/HTTP/Mysql/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | / | Client Beat |
负载均衡 | 权重/DSL/metadata/CMDB | Ribbon | Fabio | RR | / |
雪崩保护 | 支持 | 支持 | 不支持 | 不支持 | 不支持 |
自动注销实例 | 支持 | 支持 | 不支持 | 不支持 | 支持 |
访问协议 | HTTP/DNS/UDP | HTTP | HTTP/DNS | DNS | TCP |
监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 |
多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
跨注册中心 | 支持 | 不支持 | 支持 | 不支持 | 不支持 |
SpringCloud | 支持 | 支持 | 支持 | 不支持 | 不支持 |
Dubbo集成 | 支持 | 不支持 | 不支持 | 不支持 | 支持 |
K8s集成 | 支持 | 不支持 | 支持 | 支持 | 不支持 |
3、Nacos安装(注册中心-服务端,使用SaaS,软件即服务)
nacos官网:https://nacos.io/zh-cn/index.html
下载地址:https://github.com/alibaba/nacos/releases
Linux:sh startup.sh
Windows:startup.cmd
根据对应版本关系,Nacos选择版本:2.0.3
演示系统为:windows
Nacos默认为集群模式(cluster),首先我们修改startup.cmd中模式为单机模式(standalone)
我们运行Nacos看看效果,
访问:http://127.0.0.1:8848/nacos,默认账号:nacos,密码:nacos,可以进入Nacos的服务管理页面:
4、SpringCloud整合Nacos客户端(注册中心-客户端)
项目目录:
父工程pom文件添加:
<modules> <module>service-nacos</module> </modules>
service-nacos项目pom文件添加依赖:
<!-- springweb 启动依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- nacos 服务注册发现(客户端)依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
application.properties
# 应用名称(nacos会将应用名称当作服务名称) spring.application.name=service-nacos # 应用服务 WEB 访问端口 server.port=8020 # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html # Nacos认证信息 spring.cloud.nacos.discovery.username=nacos spring.cloud.nacos.discovery.password=nacos # Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 # 注册到 nacos 的指定 namespace,默认为 public spring.cloud.nacos.discovery.namespace=public
启动类
@SpringBootApplication @EnableDiscoveryClient //从Spring Cloud Edgware开始,@EnableDiscoveryClient可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。 public class ServiceNacosApplication { public static void main(String[] args) { SpringApplication.run(ServiceNacosApplication.class, args); } }
订单服务接口:
/** * 订单服务 */ @RestController @RequestMapping("/order") public class OrderController { /** * 下单 * @return */ @RequestMapping("/add") public String addOrder(){ System.out.println("下单成功"); return "订单服务"; } }
nacos注册成功效果图:
参考链接:https://www.jianshu.com/p/39ade28c150d