docker配置 nacos_Nacos - 阿里开源配置中心

这里是喵了个咪的后端技术分享,觉得写的不错。点个赞,转发一下,关注一下。本文载于个人原创技术博客http://w-blog.cn,转载请注明出处,非法转载抄袭将追究其责任。

7a9b79fe708f01bd580d0af0c274bac9.png

配置中心相信大家都有听过,zookeeper、apollo等等都是配置中心的代表,但大部分都是JAVA系为主的,笔者主要开发语言使用的是Golang当然也有类似于ETCD这样的组件,但是并不方便管理也无法可视化,在无意之间发现了阿里爸爸开源了nacos这个服务发现+配置中心组件,也经过了一段时间的时候在这里分享给大家

附上:

喵了个咪的博客:w-blog.cn

Nacos官方Git地址:https://github.com/alibaba/nacos

Nacos官方文档地址:https://nacos.io/zh-cn/docs/

Go语言SDK地址:https://github.com/sunmi-OS/gocore/tree/master/nacos

PS:当前官方最新版本为 V1.1.3,阿里云有提供配置中心服务ACM使用方式和Nacos相同,使用阿里云的前提下免运维是个不错的选择

一、Nacos介绍

Nacos是阿里云中间件团队开源的一个项目,基于阿里云内部提供的ACM配置管理服务进行独立,截止到现在github已经有8K以上的star了,虽然成熟度还不能和携程开源的apollo相提并论,比较也是在阿里云上提供服务的组件稳定性还是值得相信的,当然要使用介绍Nacos必须要介绍介绍配置中心这样一个思想了。

配置中心是个老生常谈的话题,从有软件编程开始配置管理都是工程中重要的一步,当然对与一个单体应用只需要单个配置文件或环境变量的方式来管理配置就好了所以不再本文的讨论范围内,配置中心主要解决服务化或微服务化下的配置管理中的如下问题:

  • 有效的密码管理,开发不碰触密码配置,运维人员和架构团队统一管理避免泄露;
  • 多项目下的配置绝对统一性,不会出现配置写错导致的BUG
  • 对于配置的编辑、存储、分发、变更管理、历史版本管理、变更审计有完善的能力
  • 配置分组和灰度发布
  • 有好处当然也有坏处,相对于使用配置文件我们还需要解决如下问题:
  • 配置中心异常情况下服务怎么保障可用(SDK提供Cache功能当中心服务不可用会使用上一次加载的缓存配置)
  • 配置变更后的程序生效逻辑(SDK提供配置变动订阅逻辑可以订阅配置变动编写处理逻辑)
  • 开发过程中的配置文件调试(需要框架进行设计)
  • 对于部分语言来说(PHP)配置中心性能的问题(Nacos的吞吐量8C16G 15K并发)
  • 对比下来还是可以总结出配置中心利大于弊的结论

二、Nacos部署

Nacos不止支持二进制部署也支持支持Docker和K8S部署,因为Nacos是有状态服务存储的数据需要依赖于Mysql而且集群的方式需要指定slave的IP所以使用K8S并不是很好的选择(K8S使用StatefulSet来运行有状态服务),笔者这里用Docker-Composer的方式来运行Nacos

Nacos官方Docker部署方式Git地址:https://github.com/nacos-group/nacos-dockergit clone https://github.com/nacos-group/nacos-docker.git单机部署(内存模式):docker-compose -f example/standalone-derby.yaml up单机部署(Mysql模式):docker-compose -f example/standalone-mysql.yaml up集群部署:docker-compose -f example/cluster-hostname.yaml up

访问:http://localhost:8848/nacos/ 就可以看到登录界面了

PS:默认用户名和密码都是 nacos

8ffb787f9b356b2ec1f04dab94ebef4b.png
835934d307b3f96ab308b395c27fce30.png

阿里云ACM服务

当然自己部署Nacos还会面临很多挑战,比如:

  • 集群搭建
  • 稳定性
  • Mysql数据库维护
  • 配置安全保护(Nacos没有密码一说,但是ACM需要使用阿里云的密钥可以提高安全程度)

PS:秉着能用服务就不自己搭建的原则笔者最终使用的是阿里云的ACM服务(当前ACM服务免费)

d9f87ca7cb5fb59617690d222d278202.png
533e6ede518232d29614b0bc01a32cc6.png

PS:需要注意阿里云ACM和Nacos在SDK中的链接方式有不同

三、基础使用

Nacos有几个基础概念,我们只有先了解清楚之后才能更好的结合到业务场景:

  • namespace 命名空间
  • Group 配置分组
  • DataID 具体的配置名称

一般我们使用namespace来区分不同的项目或环境,Group区分配置的差异系比如A业务获取的配置和B团队的有一些细微的差别可以通过Group来区分,最后使用DataId来区分具体的配置项

9df8775b1157c53f56f9406eb439b449.png

增加一个namespace

9e0eb755b9e5558bcfcb85c43f040e37.png

新增一个配置

ecd4dd935840a66494d650aa8ab4e37d.png

支持很多种配置格式,也可以使用自定义的格式甚至直接存放代码都行

e84cfbb513b7102491629e15b83e7d50.png
5ce2a44638b74b3552bb53499f4ddcb8.png

也有对应的JAVA系的示例代码

a0269853091d9339e2ca313a04cde051.png

四、SDK和OpenApi使用配置

Nacos支持一下语言的SDK(当然GIT上也有很多非官方的SDK库):

  • Java
  • go
  • cpp
  • python
  • nodejs

大家可以在官方文档中查看具体的使用方式

上面已经配置好的配置我们可以使用OpenApi来访问它

curl "http://172.16.0.13:8848/nacos/v1/cs/configs?dataId=test_config&group=DEFAULT_GROUP&tenant=b58ea912-e564-4958-b21f-3098ad15daf9"{"name":"sunmi"}

特别注意tenant就是需要输入namespace的名称,但是不是原名是如下的名称

73775ea1c1973100a6588112ccd38579.png

差不多基本的使用就到这里了,Nacos的开源版本还能姐姐服务发现相关的问题这些就留给大家探索了,在配置方面已经能够解决大部分问题了,下期笔者会基于Go语言给出配置中心最佳实践,大家记得关注我哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐高机器人骨奥_乐高机器人这个大坑,为啥大家都拽着孩子往里跳?

上学期我们在美国经常凑一起玩的几家家长给自己挖了个大坑,因为孩子们平时都很喜欢玩乐高积木,而且年龄也差不多大刚升了四年级, 感觉是时候可以整点儿“大事”了,于是把他们动员起来组成了一个乐高机器人团队,还任命我…

微型计算机内存主要,微型计算机的内存容量主要指 ( ) 的容量 (7.0分)

【判断题】青藏高压又称南亚高压,是暖季出现在亚洲大陆南部青藏高原上空对流层顶部的大型暖高压系统。【问答题】电路如图 10 所示,已知: u i1 2V,u i2 1V ,计算电路中 u o1 、u o2 、u o3 、u o 的值。【问答题】您认为大学生阶段的学习生活主要由哪几个部分构成?【判断题】发…

jdbc获取mysql第二行表信息_【奇技淫巧】MySQL另类方法获取元数据信息

问:在进行MySQL注入时,我们通常是通过information_schema元数据来获取表名、字段名信息,从而读取相应数据。但是如果waf或其它过滤了information_schema关键字,那么还有什么方法可以读取元数据信息呢?答:从…

vscode使用sass_推荐7 个 极好用的VS Code 插件

你知道将高级开发人员与普通开发人员区分的条件是什么吗?没错,是所使用的工具,俗话说,"工欲善其事必先利其器", 拥有正确的工作工具可以让开发人员的生活变得更加轻松,甚至想写一辈子代码。巧的的…

剑指offer python实现_剑指Offer第2题详解(附Python、Java代码实现)

题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 这个题较为简单 1. Python实现 1.1 使用replace直接实现def replaceSpace(s): # return s.replace(" &…

挖掘城市ip_不断挖掘IP价值,紧抓乐园经济新机遇!

当一个国家的人均GDP达到5,000美元时,其旅游度假经济将进入成熟阶段。按照2018年末人口总数计算,我国人均GDP接近1万美元,近年来,越来越多的主题乐园落户中国。乐园的选址、运营有颇多讲究。对主题乐园而言,依托大中型…

pixel和毫米怎么换算_赶紧收藏!小学阶段所有公式、单位换算、数量关系

小学阶段会接触到很多公式,这些公式都是学习中必须要记忆的,笔者特意总结了小学一到六年级所有的公式、单位换算、数量关系、难题知识。孩子只要掌握了这四大知识重点,考试轻轻松松拿高分!一、数量关系计算公式1、单价数量&#x…

相册权限_手机相册太乱?1分钟教你快速管理自己的照片,非常好用!

喜欢拍照的朋友们是不是有这样一个烦恼,那就是手机里拍了很多照片,当你想找某一张照片时你得在手机里翻半天,费时费力,那么今天我就来给大家解决这个烦恼,手机相册是手机中必不可少的,那当我们手机照片太多…

学校计算机数据采集处理系统,中学化学计算机数据采集处理系统实验室装备

中学化学计算机数据采集处理系统实验室装备配置方案一、基础型配置(31套:教师1套,学生30套(2学生/组,以每班60学生分组)),每套配置标准如下:序号 名称 型号1 数据采集器 SJ-SJCJQ2 南师大分析软件 NJSFDX-V33 电流传感…

python爬虫知识大全_Python爬虫入门有哪些基础知识点

1、什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你…

计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...

[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件有感而发)先自我介绍一下,本人来自上海,师从原江苏省棋队教练言穆江大师,现年28岁,无任何值得自傲的成绩,但是我没有感到后悔,因…

dplayer js控制 自动全屏_Qt编写安防视频监控系统18-云台控制

一、前言云台控制是视频监控系统中必备的一个功能,对球机进行上下左右的移动,还有焦距的控制,其实核心就是控制XYZ三个坐标轴,为了开发这个模块,特意研究了各种云台控制的方法和开源库比如soap,有些厂家使用…

css不换行属性_那些不常见,但却非常实用的css属性(整理不易)

1、-webkit-line-clamp可以把 块容器 中的内容限制为指定的行数。并且在超过行数后,在最后一行显示"..."这是正常的展示display: -webkit-box; /*值必须为-webkit-box或者-webkit-inline-box*/ -webkit-box-orient: vertical; /*值必须为vertical*/ -webk…

计算机总是无法响应怎么办,电脑无响应是怎么回事 电脑无响应解决方法

电脑无响应是怎么回事?有时用户再操作过程中想在任务栏中切换窗口时,忽然发现点击任务栏中的图标没有任何反应了,就像系统死机一样,这就是Windows XP中常见的任务栏失去响应,又被称为“任务栏假死现象”。那么,如何唤…

2020身高体重标准表儿童_男女孩最新身高标准表,你家孩子达标了吗?(附增高秘籍)...

现在大家的生活水平提高了,和很多年前相比,孩子们的平均身高提高了不少,孩子能长成一个高个子,也是很多家长非常关注的事情。其实,要想孩子长高,除了营养要跟上以外,充足的睡眠、体重不要太胖都…

java 正则匹配_正则表达式真的很强大,可惜你不会写

专注于Java领域优质技术,欢迎关注本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支…

河北大学计算机复试题,2016年河北大学综合卷计算机科学与技术学院之数据库系统概论复试笔试最后押题五套卷...

一、选择题1. 根据系统所提供的存取路径,选择合理的存取策略,这种优化方式称为( )。A. 物理优化B. 代数优化C. 规则优化D. 代价估算优化【答案】A【解析】物理优化是根据数据字典中的存取路径、数据的存储分布以及聚簇情况等信息来选择低层的…

python测验5 函数和代码_测验5: 函数和代码复用 (第5周)-单选题

1、以下选项不是函数作用的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ A、 提高代码执行速度 B、 复用代码 C、 降低编程复杂度 D、…

石板切割问题c语言_广场地面铺装 仿古石 青石板 板岩 切割岩 冰裂纹压印混凝土地坪...

广场地面铺装 仿古石 青石板 板岩 切割岩 冰裂纹压印混凝土地坪广场地面铺装 仿古石 青石板 板岩 切割岩 冰裂纹压印混凝土地坪青石板是由青色的沉积岩劈制或者切割而成的板材,是天然板岩的一种,主要成分为石灰石、白云石。其比重约2.2~2.7克/立方厘米&a…

编程doc转html,Python批量将word转html,并将html内容发布至网站。

搜索热词下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。#codingutf-8__author__ zhmfrom win32com import client as wcimport osimport timeimport randomimport MysqLdbimport redef wordsToHtml(dir):#批量…