Nacos 快速上手
Nacos 快速上手
简介
准备工作
部署
Spring Boot 集成
配置说明
Spring Cloud + Nacos
Dubbo + Nacos
问题及解决方式
微服务现在越来火,有基于 Spring Cloud Netflix 体系的,也有基于 Spring Cloud Alibaba 为体系的。从以前的 Eureka 注册中心、Spring Cloud Config 配置中心、Spring Cloud Bus消息总线 到完全可以替代他们的 Nacos 出现,微服务技术体系的未来发展方向愈加清晰。所以,学会并了解如何使用 Nacos 是十分重要的。Nacos 不仅仅可以作为配置中心使用,还可以作为注册中心使用,其有很多十分优秀的特性,部署起来也十分方便。
主要目的:
-
熟练使用 Nacos; -
基于 Spring Cloud Alibaba 体系进行项目基础 Demo 搭建,便于后续源码分析; -
整合 Dubbo,便于后续源码分析;
手机用户请
横屏
获取最佳阅读体验,REFERENCES
中是本文参考的链接,如需要链接和更多资源,可以加入『知识星球』获取长期知识分享服务。
简介
-
动态配置服务
动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
-
服务发现及管理
动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。
-
动态DNS服务
通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
准备工作
-
Docker 运行环境 -
Mysql 或 Mysql 的容器
部署
单机版本
# 拉取镜像
docker pull nacos/nacos-server
# 运行
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
访问
http://127.0.0.1:8848/nacos/#/login
密码和账号默认都是 nacos
Spring Boot 集成
配置说明
配置命名空间
Spring Cloud + Nacos
依赖配置
compile libs["spring-cloud-starter-alibaba-nacos-config"]
compile libs["spring-cloud-starter-alibaba-nacos-discovery"]
resources 下新建文件
bootstrap.yaml
# nacos 配置 (nacos config必须配置在bootstrap)
spring:
cloud:
nacos:
discovery:
server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
namespace: ${NACOS_NAMESPACE:dsb-cloud}
metadata:
{"checkSum": "${random.value}-${random.uuid}"}
config:
server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
namespace: ${NACOS_NAMESPACE:dsb-cloud}
file-extension: yaml
服务注册中心
// 启动类开启注解
@EnableDiscoveryClient
作为 Spring Boot 项目启动后,可以看到成功注册到 Nacos 上了。
点击详情后可以看到对应的服务信息
Dubbo + Nacos
公共 API 包
服务提供者
pom
dependencies {
compile libs["spring-boot-starter-actuator"]
//nacos
compile(libs["nacos-discovery-spring-boot-starter"]) {
exclude group: 'com.alibaba.spring', module: 'spring-context-support'
}
compile 'com.alibaba.spring:spring-context-support:1.0.3'
compile project(':spring-cloud-examples:dubbo-examples:spring-cloud-dubbo-api')
compile libs['dubbo-spring-boot-starter']
testCompile "org.springframework.boot:spring-boot-starter-test"
}
application.yaml
spring:
application:
name: spring-boot-dubbo-provider
dubbo:
application:
name: spring-boot-dubbo-provider
registry: nacos://127.0.0.1:8848
protocol:
name: dubbo
port: 20880
bootstrap.yaml
# nacos 配置 (nacos config必须配置在bootstrap)
spring:
cloud:
nacos:
discovery:
server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
namespace: ${NACOS_NAMESPACE:dsb-cloud}
metadata:
{"checkSum": "${random.value}-${random.uuid}"}
config:
server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848}
namespace: ${NACOS_NAMESPACE:dsb-cloud}
file-extension: yaml
核心类
// 启动类
@SpringBootApplication
@DubboComponentScan
public class SpringBootDubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDubboProviderApplication.class, args);
}
}
//服务实现类
package pub.dsb.api.service.impl;
import org.apache.dubbo.config.annotation.Service;
import pub.dsb.api.service.IHelloService;
@Service
public class HelloServiceImpl implements IHelloService {
@Override
public String hi(String name) {
return "spring-cloud-dubbo-example:" + name;
}
}
启动服务提供者
服务消费者
-
pom (和服务提供者一样)
dependencies {
compile libs["spring-boot-starter-web"]
compile libs["spring-boot-starter-actuator"]
//nacos
compile(libs["nacos-discovery-spring-boot-starter"]) {
exclude group: 'com.alibaba.spring', module: 'spring-context-support'
}
compile 'com.alibaba.spring:spring-context-support:1.0.3'
compile project(':spring-cloud-examples:dubbo-examples:spring-dubbo-api')
compile libs['dubbo-spring-boot-starter']
testCompile "org.springframework.boot:spring-boot-starter-test"
}
-
yaml
spring:
application:
name: spring-boot-dubbo-consumer
dubbo:
registry:
address: nacos://127.0.0.1:8848
-
核心类
@RestController
public class DubboRefController {
@Reference(check = false)
private IHelloService helloService;
@GetMapping("/hi")
public String hi(){
return helloService.hi(System.currentTimeMillis() + "");
}
}
//启动类
@SpringBootApplication
public class SpringBootDubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDubboConsumerApplication.class, args);
}
}
-
接口测试 服务提供者 8080, 服务消费者 8081
GET http://127.0.0.1:8081/hi
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 40
Date: Tue, 01 Sep 2020 16:55:53 GMT
spring-cloud-dubbo-example:1598979353325
-
注册信息
问题及解决方式
ClassNotFoundException: com.alibaba.spring.util.BeanRegistrar
引用新包,剔除有问题的包 spring-context-support
。
No provider available for the service
@Reference(check = false)
本文分享自微信公众号 - 架构探险之道(zacsnz1314)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
445,BFS和DFS两种方式解岛屿数量
However dark and scary the world might be right now, there will be light. 无论世界现在有多黑暗,多可怕,终有一天会重现光明。 问题描述 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入: [ ['1','1','1','1','0'], ['1','1','0','1','0'], ['1','1','0','0','0'], ['0','0','0','0','0'] ] 输出: 1 示例2: 输入: [ ['1','1','0','0','0'], ['1','1','0','0','0'], ['0','0','1','0','0'], ['0','0','0','1','1'] ] 输出: 3 解释: 每座岛屿只能由水平和/或竖直方向上相邻的陆地连接而成。 DFS解决 这题让求的是岛屿的面积,二维数组中值是1的都是岛屿,如果...
- 下一篇
干货 | VTune对human-pose-estimation在CPU推理运行的性能分析
关注我们 让开发变得更有趣 来源| 康瑶明博客https://luckykang.github.io 排版| 李擎 一、什么是VTune? Vtune可视化性能分析器(Intel VTune Performance Analyzer)是一个用于分析和优化程序性能的工具,作为Intel为众多开发者们提供的专门针对寻找软硬件性能瓶颈的一款分析工具,它能帮助你确定程序的热点(hotspot),帮助你找到导致性能不理想的原因,从而让你能据此对程序进行优化。 概括起来Vtune性能分析器能通过以下的手段帮助你发现和定位程序中的性能问题: 从当前系统中收集性能数据 从系统到源代码不同的层次上,以不同的互动形式来组织和展示数据 发现潜在的性能问题,并提出改进措施。 二、下载vtune: VTune的正式版的价格很贵,可以选择下载试用版,这里以2020_update2版本为例,下载地址为: https://software.intel.com/en-us/vtune/choose-download 选择版本和系统平台,这里以linux系统为例 三、解压安装 1.解压安装包 2.安装 进入解压目录,执行...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19