Nacos入门一

Posted JudyGirl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nacos入门一相关的知识,希望对你有一定的参考价值。

节日快乐啊~各位亲


Nacos是什么?

nacos是阿里开源产品,   它主要功能是微服务的动态配置服务和服务发现管理,动态DNS服务。


动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。


动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器

Nacos入门一

动态DNS服务通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险


Nacos同类技术?


springcloud Config,Apollo,Nacos。


同类技术比较?


这是借鉴别人博客的图

Nacos入门一


nacos架构

Nacos入门一


nacos数据模型和领域模型?

通过nacos的数据模型和领域模型我就可以大概了解nacos有哪些作用功能,其实个人感觉跟spring config大同小异, 下一篇文章可以着重讲解他们之间的差别


数据模型:

1 namespace命名空间:主要是区分是dve,test ,生产

2 group分组:应用于不同的项目,把配置进行分组

3 DataId:配置集,他包含系统的各种信息,我们想获取数据必须要先知道DataId,然后再根据不用环境不同项目获取具体配置信息


服务领域模型


nacos手动连接?

1 首先下载nacos包,安装启动。不做介绍了,可以在网站找一下资料

2  在nacos中配置dataid,namespace,group。

3  代码手动连接

4  从代码中可以看出,其实初步连接非常简单。创建              NacosFactory.createConfigService 就可以。其次就是指明我们要获取那个数据集数据,命名空间是什么,分组是什么。ok。

 1 配置dataid,namespace,group ,这一步简化了,因为电脑ip换了,无法访问,嘻嘻
 2 pom文件  <dependencies> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.1.3</version> </dependency> </dependencies>  3 服务端代码 public static void main(String[] args) throws NacosException, InterruptedException { //总结,1发布配置2根据api获取配置信息 //链接nacos地址 String serverAddr = "127.0.0.1:8848"; //dataId String dataId="server2.yaml"; //group String group = "DEV_GROUP"; //namespace String namespace="01196f3f-f9a5-4ceb-9f32-b21e9e845527"; Properties properties = new Properties(); //链接属性 properties.setProperty("serverAddr", serverAddr); properties.setProperty("namespace", namespace); //创建链接 ConfigService configService = NacosFactory.createConfigService(properties); //获取配置信息 String config = configService.getConfig(dataId, group, 6000); System.out.println(config); }


nacos动态获取配置信息

看到这一步你有没有想到如何可以动态的获取连接呢?其实相当这一点的时候让我想起了spring cloud config和rabbitmq 获取的方式,其实都大同小异,学习知识不断要横向比价也要纵向比较。

 configService.addListener(dataId, group, new Listener() { public Executor getExecutor() { return null; }
//当配置有变化时候获取通知 public void receiveConfigInfo(String configInfo) { System.out.println(configInfo); } });
while (true){ Thread.sleep(2000); }

单机版获取配置信息

1 pom文件 <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>    2 配置dataid,namespace,group
3 配置文件    server: port: 56010 #启动端口 命令行注入
spring: application: name: server1 ---->dataid cloud: nacos: config: server-addr: 127.0.0.1:8848 # 配置中心地址        file-extension: yaml -->后缀名 namespace: 01196f3f-f9a5-4ceb-9f32-b21e9e845527 # 开发环境        group: DEV_GROUP # 项目组         3 获取 /** * @创建人 wxf * @创建时间 2019/12/24 * @描述 */@SpringBootApplication@RestControllerpublic class Server1Bootstrap {
@Autowired private ConfigurableApplicationContext applicationContext;
@GetMapping(value = "/getConfig1Context") public String getConfig1Context(){ return applicationContext.getEnvironment().getProperty("common.name"); }
public static void main(String[] args) { SpringApplication.run(Server1Bootstrap.class, args); }
@Value("${common.name}") private String config1;
@GetMapping(value = "/getConfig1") public String getConfig1(){ return config1;    }}    


共勉

坚持自律,一直保持对技术的热爱。nacos会写三篇文章介绍。

以上是关于Nacos入门一的主要内容,如果未能解决你的问题,请参考以下文章

译丨Yarn - Javascript 新一代套件管理

【Nacos专题】Nacos 快速入门

Nacos使用快速入门

Nacos入门指南01 - Nacos是什么?

Nacos入门案例

SpringCloud Nacos 注册中心 -- Nacos快速入门Nacos服务分级存储模型(集群)集群负载均衡策略 NacosRule