nacos 呢,作为阿里的开元中间键啊,在加入 sprincos 的生态以后,不管是作为配中心还是作为注册中心,他的简单易用的特性被广泛的运用在各个互联网公司里面。然后啊,大家会发现 nacos 相关的面试题也越来越多了。哈喽,大家好,我是麦克,一个没有才华只能靠颜值混饭吃的家务程序员。 昨天,一个工作了八年的粉丝啊,被面试官问到这样一个问题,他说,请你详细说一下拉裤子客户端是如何去实践配置的动态更新的。这个问题的高手部分的回答呢,我整理到了一个十万字的面试文档里面,大家可以在我的主页去加微领取。下面我们来看看普通人和高手的回答。 普通人的回答,呃, nikes 的配置的更新流程,我记得他应该是,他应该是定时去轮巡的,比如说我每隔一段时间会发起一次请求 到那个服务端,然后去比较一下配置吧,然后拉取一下最新配置更新到本地。啊,应该是这样,嗯, 高手的回答,好的,面试官,这个问题我需要从几个方面来回答。首先, nikes 采用的是一个长轮讯的方式,向 nikesso 端去发起配置更新查询的占用功能。 所谓长轮巡呢,就是说客户端发起一次轮巡请求到服务器端,当服务器端的配置没有任何变更的时候,这个连接会一直打开,直到服务端有配置变更或者连接超时之后返回 nikes clan 端呢?需要去获取服务端变革的一个配置,前提是需要一个比较,比如说拿客户端本地的配置信息和服务器的配置进行进行一个比较,一旦发现和服务端的配置有差异,那么就表示服务系统配置有更新,于是需要把更新的配置拉到本地。 在这个过程呢,有可能因为客户端的配置比较多,导致比较的时间比较长,使得配置的同步效率非常低。于是呢拉裤子真的这个场景啊,做了两个方面的一个优化,第一个减少网络通信的数据量, 客户段把需要去进行比较的配置啊进行分片,每一个分片大小是三千,也就是说每一次最多拿三千个配置去拉扣十五端去进行比较。第二个分阶段进行比较和更新。第一个阶段,客户端把这三千个配置的 k 以及对应的 w 的一个 md 五的值 拼接成一个支付钻,然后发送到 nikes o 端去进行比较,服务端会去逐个比较这些配置里面的 md 五的一个值,把存在更新的 k 返回给客户端。第二个阶段,客户端拿到这个变更的 k 以后,循环去逐个调用服务端去获取这个 k 的弯流值。那么这两个优化的核心目的是去减少网络通信的数 包的一个大小,把一次大的数据包的一个通信拆分成了多个小的数据包的一个通信,虽然会增加网络通信的一个次数,但是对于整个性能的提升是非常大的。最后再加上采用长轮讯的方式,既减少了普洱的轮巡次数,又利用了长轮讯的优势,很好的去实现了配置的动态更新了一个同步的功能。 以上就是我对这个问题的理解,拉克斯里面有很多好的设计理念可以值得我们去学习和研究,我们虽然未来不一定会去做远马级别的开发,但是一定会参与到价格方面的设计,所以呢,还是建议大家去花一些时间去下沉到技术底层,从而去提升自己的核心竞争力。 好的,本期的普通人 vs 高手的面试系列的视频就要到结束了,大家记得点赞收藏加关注,我是麦克,我们下期再见。
粉丝15.5万获赞88.9万

哈喽,大家好,我是丽芳,上两期讲到拉克斯的一些知识点,这一期最主要是讲拉克斯实战方面的一些技巧。第一个就是我们知道我们在配置列表里面可以去配置 所有微服务的配置,但是我们所有微服务的配置可能说连着库,可能是连着同一个库,然后有一些很多的公共配置, 那我们的公共配置是不是可以跟他抽象出来,抽象出来之后我们可以单独配置,相当于所有的微服务都可以指向这个公共配置,而不是说在每一个 微服务的配置里面都有都有那个配置。我们可以看一下以前的这个 supreme colour 的拉格斯,然后这边是咖啡格里面有个什么呀,叫就是笑的咖啡格斯,那这几个文件的话就是属于 公共配置,也就是说所有的微服务他都可以进行用,你只要去配,把这一段代码配上。大家看到这里还有个绿 fish, 如果绿 fish 等于真 在拉克斯里面动态去修改了配置之后,自动刷新到我们的那个九尾门内存里面去,也就是不需要你什么呀,再去重新启动为服务。 但是我们同时我们的微服里面必须走一个配置,哎,就是要加一个注解,在注解,注解上面,哎,就在你的配置上面加一个注解 fish cop, 然后结合刚才的配置,可以达到不用重新启动动态 去更新这个配置的目的。另外一个就是说我们尤其是在做一个新项目的时候,我们可能说我们开发人员开发好了之后,然后我们要布置到测试环境,或者从测试环境布置到其他环境,然后我们这里有个什么呀?他 这里有个导入和导出,那我们比如说我开不好你好了,我也不知道测试环境,那我们这里直接用什么呀?导出配置就行了, 导致配置之后,然后我们再用这上面一样,再用导入配置,然后把刚才的配置导进去,那这样的话我就轻而易举的就把配置付出了另外一个环境了,然后可能说你再去稍稍改一下两个环境的不同就 ok 了, 也就是不用每一个配置一个个去拷贝。还有我们有时候在发布我们的配置的时候,尤其是正常环境,我们发布了这个困时,突然发现,哎呀错了怎么办? 那我们肯定想立马回滚回去,那我们这时候就点这里, several user 默认咕噜,也就是是哪个为服务,你就点哪一个,然后查询到, 然后这里有他的什么呀?历史版本,历史版本的话默认是三十天,然后你这样的话把这个回滚回去就 ok 了,然后你在下面再去慢慢去找你的配置,哪就出问题了,因为有时候你升的话,你如果出问题的话,你肯定很紧张的,是吧?你不可能说马上就知道哪里出问题了, 你可能通通的情况都是先回个,因为我们有时候导进来之后,你看他这里配置格式有文本节省, x m y m, 如果说比如说我本来是 y m l 这种配置,然后你选个 text, 你没注意的话,这样他有时候有时候可以,但是有时候也会出问题,所以说我们尽量什么呀?哎,就说根据你的文件,你是属性文件,那就点这个,你是 ym 就点这个,不要乱弄。哎,就比如说你是 ym 文件,然后你点个这个,然后你点个这个,他有可能就会出问题。 我们到这里的话也可以去定义啊,定义你的也就是那个文件的后缀是什么,所以说我们尽量做事情的时候就规范一点,也就你是什么文件类型就什么文件类型。第三一个就是我们,我们可以在这里看我们的所有的服务, 第一个是我们的集群有多少个,然后我们的实力有多少个健康的,不健康的他这里都会去展示你比如你三个,三个实力,你这里健康的一个的话,那肯定不健康的就是两个。然后还有就是我们这里详情里面我们可以去对这个实力进行下线, 尤其是我们有多个节点的时候,我们通常可以说就是让两个人实力去运行,我们要部署另外第三个实力,然后我们可能说就让这个实力先下线,部署好了之后,然后再去部署下一个实力。当然你也可以通过什么呀?通过这里编辑权重,没人的权重都是一啊,那你可以把 把这个权重改成零,改成零之后也就是那他就没有流量进来,那你的流量就在另外另外两个节点上面,那你也可以去部署,你在你的权重的话越大,就分发到他上面的流量就越多啊。

哈喽,大家好,我是大肚肚周瑜。那么接下来呢,我们再来聊一聊拉阔式中间的负载均衡。 呃,我们知道很多有地方都有复杂均衡,对,那么拉过屎中间的复杂均衡他其实比较特殊啊,因为,呃 呃他是什么呢?他,呃他说白了他是一个注册中心,或者说是一个配置中心,对不对啊?配置中心你跟肯定是跟复杂均衡没什么关系的,那么注册中心跟复杂均衡又有什么关系呢?啊?实在是这样子,就是拉阔时他作为一个 呃注册中心吧,那么他会需要去进行服务发现,而服务发现说白了他就是根据服务的名字去到拉裤子上面去拉取这个服务当前所有的实力信息,拉取到 呃服务消费者本利。对,那么在这个过程中间,就是在服务发现这个过程中间,其实拉货者他有提供的一个功能, 因为正常来说我肯定就是要把呃你这个服务所有的实力信息我全部拉选下来,但是那会是他提供的这种负载军人的策略就是他,他就是比较单一的,他就是一个随机的,或者说是权重随机的。这么一个负载军人的策略就是支持啊,你在进行服务发现的时候,你 你可以随机的拉取到某个实力,拉取到服务消费者的本地都不是全部, 所以就是拿过时他提供的这么一个功能,但这个功能,呃其实应该算用的也比较少啊,如果说你真的要用的话,你也可以用啊 啊,因为这样子的话,可能对于服务消费者而言,他的压力会小一点,因为他并不是把全部的实力都放到了消费者的本地。对,像如果说像其他的,你可能把全部的实力放到消费者的本地,然后再用 rap 去进行复产均衡,再从这些实力上面去选出其中一个实力。但是如果说你现在 用到了拉货时,他在服务发现,呃这个提供的这么一个负载均衡的功能,那我说了,在服务消费者本地,其实你所存储的那些实力信息就会比较少,说白了你可能就存的你负载均衡之后你选出来的那唯一的一个 来吧。所以说这是呃不同的步骤。下面的负载均衡啊,就是伏法线的负载均衡啊,以及像我们的 red 本,他相当于是在服务吊用的时候的负载均衡,所以他们两个其实并不冲突 好吧,所以我们啊,也可以理解为就是像 red 的负载均衡,它是发生在 naicos 这个负载均衡之后的好吗?

nikos 呢,作为阿里的开元中间键加入到斯内科拉尔的神态以后啊,不管是作为配置中心还是作为注册中心,他的简单应用的特性呢,在互联网公司被广泛运用。最后呢,大家会发现 nikos 相关的面试题也变得越来越多了。这不,又有一位工作八年的小伙伴被问到这一道面试题, 说请你详细介绍一下 nikes 客户端是如何去实现配置动态更新的。那今天呢,我给大家分享一下我对这个问题的理解。另外呢,我把往期分享的视频全部整理成了一份二十万次的文档,后续呢,还会连更希望呢,能够以此来提高各位粉丝的面试通过率。 想获取的小伙伴可以在我的个人主页简介中找到。下面呢,我给大家分享一下我对耐克斯配置的动态更新的原理的理解。首先呢,耐克斯采用的是长轮巡的方式,也就是说由 nikes 客户端向 nikes 服务端去发起配置更新的查询请求。所谓常轮巡呢,就是指客户端发起一次轮巡请求到服务器端之后,当我们的服务端的配置没有任何更新的时候,这个时候呢,连接会一直打开,直到服务端有配置更新或者是超时之后才会响应返回。 而耐克斯的客户端呢,需要去获取服务端变更的配置内容,但前提是他需要先去进行对比,也就是说他要将客户端本地缓存的配置信息和服务端获取的配置信息进行比较, 一旦发现本地缓存的配置内容和服务端发过来的配置内容有差异的话,那么就表示服务端的配置有更新,于是呢,把更新的配置拉到本地,在这个过程中呢,有可能会因为客户端的配置比较多,从而去导致对比的时间呢也比较长,使得 配置同步的效率就变得非常低了。于是呢, nikes 针对这一个场景,他做了两个方面的优化,第一个呢是减少了网络通信的数据量,他是将客户端把需要进行比对的配置,然后按照配置项进行分片,那么每个分配的大小呢是三千项, 也就是说每一次最多能够拿到三千个配置项去 nikes 服务端进行比较。第二个呢是分阶段进行比较和更新。首先呢,第一阶段是客户端会把三千个配置项的 t 以及对应的 w 的 md 五值拼成一个支付宝, 然后呢将它发送到耐克斯服务端进行判断。然后服务端呢会逐个比较这些配置中的 md 五不同的 k, 把存在更新的 k 再返回给客户端。第二阶段呢,就是客户端拿着这些数据有变更的 k 循环,足够去调用服务端,从而去获取这些 k 对的 外流值。那么这两个优化的核心目的呢,是减少网络通信中的数据包的大小,相当于是把一次大数据包的通信拆分成了多个小数据包的通信,虽然会增加网络通信的次数,但是呢,它提高了整体的数据传输的性能。 最后呢,再加上长轮旋的方式呢,既减少了破耳轮旋的次数,又利用了长轮旋的优势,很好的实现了配置动态更新的同步功能。好了,以上就是我对耐克斯配置动态更新的理解, 我是被编程耽误的王一汤,如果都分享对你有帮助,请你动动手指,一键三年分享给更多的人!关注我,面试不再难!

mark 的配置中心动态刷新原理一般配置的动态刷新无非是两种模式啊,一种是铺模式,有时主动去拉取,客户端会定时主动的去服务端查看配置是否有改变。而 而这种模式呢,有一个很明显的缺点啊,就是咱们的客户端要频繁的对服务端进行请求,那么请求的间隔其实不太好设置,而且呢,时效性也不是很好。 而另外一种呢,是 pose 模式,也就是服务端主动去推送,那就是服务端在检测到配置发生变化之后,主动通知给客户端,而这种方式很明显的实效性会更好。 但是呢,服务端需要维持与客户端之间的心跳连接,那么服务端就要消耗大量资源来维持这种心跳,那两种操作各有利弊。而 扣子的设计就非常的巧妙,它是结合了上面两种模式,通过客户端每十毫秒向服务端发送一次请求,那么请求时会在请求头上携带长轮巡的超市,时间默认是三十秒, 而当服务端接收到客户端的请求时,会挂起一段时间,而在这期间,如果配置发生变化,就会立即享给客户端,如果没有变化,客户端再重新发送请求就可以了。 那这样一来,不需要客户端频繁的去发送这种请求,而服务端也不需要去维持心跳,实质性也是非常不错的。 而本质呢,其实就是由服务端来控制响应客户端的请求响应时间,从而减少客户端无效请求的一种优化手段。哈哈哈哈哈哈,腰疼!

好,同学们,在前面几节课里啊,我们已经学习了耐克斯的基本用法,不过 在之前我们一直都是使用的单点的奶口色,这种方式我们自己测试的时候玩一玩还行,如果是在企业生产环境下,你也这么搞,那可就要出大问题了, 因为在企业当中,我们更强调的是高可用,对吧?所以奈克斯一定要做成一个集群。这节课里,我们就来看一看怎么搭建一个奈克斯集群, 详细的玩法呢,已经写到了课间资料中的一个文档里了,奈克斯集群搭建下边呢,我们就来看一下这个资料, 我们把这文档打开,在文档当中详细的给出了集群搭建的一个方式啊,这是官方给 演出的集训大件图,用户请求进入以后,这有一个 slb 啊,就是负载均衡器,他呢将我们的请求分发到不同的 nax 结点啊,就形成一个集训结构了,不过呢,这个比较抽象啊,同学们看一下我这里画的这幅图, 我们有三个耐克的节点,当然你在企业中,你五台六台都行啊,只要你有钱,你就是老大。好,那现在呢,我们假设有三台, 那这三台耐克节点呢?第一个要实现的是数据共享,因为不管有几台,最终数据不共享,那么大家各自各的数据那就出问题了,所以呢,我们会怎么做呢?我们会整一个买 solo 的集群, 让多个奈克斯啊都来访问这个集群,在里边完成数据读写,这样数据不就共享了吗?而后呢,请求 进入以后,用户请求进入以后,我们还要让他能够分发的不同的代购节点,这个时候不叫做负载均衡啊,那么由谁来实现呢?我们可以用 n j x 来做,因为我们知道 n x 可以做到反向代理和负载均衡吧。那么这样呢,整个集群结构啊就有了, 那等一会呢,我们就按照这个结构去完成 nicos 集群的搭建。同学们要注意了,虽然我们要按照这个来做啊,但是呢,条件有限呢,我们就一台电脑对不对? 所以我也不会真的去做,就是三台机器给你演示啊,我们会在当前这一台电脑上去部署三个耐克式节点。呃,买烧烤呢,理论上讲应该是机群,我们也先弄个单点。好吧,那所以呢,我们在同一个机器上去做 做三个 nicos, 他们的 ip 地址就是一样的,不一样的是端口避免冲突吗?那这三个 nicos 分别是 nice, 一、二和三?集群搭建的步骤是这样子的,先完成数据库集群搭建,然后在里边呢,创建好 nicos 要用的数据库表结构,这些结构我们的 nicos 官方网站都已经提供给我们了。 第二件事情呢,是下载耐克斯安装包,这件事咱是不是也做过了?而后呢,我们就可以去配置耐克斯集群了,这个配置呢,会和传统配置略有差别啊。最后完成集群启动,利用 ngx 实现反向代理。 那我们来做第一步啊,搭建数据库集群。刚才已经聊过了,我们不打算真搭集群啊,明白,搜主从集群搭建起来还是挺繁琐的,恐怕也得花上半个小时以上,大家如果有兴趣可以看一下我们 传世教育的高手课里边应该会有满色口主从高考用机群的搭建啊,好的,那我们这节课呢,就先用一个单点模式的,那这样呢,我打开一个满色口的课后端,然后呢尝试把这些数据给他导进去,好吧, 呃,打开一个 logo, 这里呢已经有一个耐克斯的库了。呃,表也有,但是我把这些表先删掉,咱们要搞全新的,对不对?那我们呢,就把这里边的数据结构 ctrl 一个 c 拿过来, ctrl 一个 v 去运行一下,当然了,得在查询中运行 粘贴定型,这个时候呢,我们把它关掉,我们再来看这里刷新表来了,没错吧,有了表,我们接下来就可以去继续耐克死的答件了,我们回到文档。好,下一步 就是下载耐克斯,这件事咱也做过了吧,打开看一下,这是我们下载好的耐克斯安装包,再往下 配置耐克斯结局配置可就有点复杂了,我们不能按以前怎么来配了啊。并且呀,我们要做三个耐克斯就要有三次配置,那我的做法是这样子的,同学们,我会先夹一份, 解压完了以后我在这配,配完了,我复制三份作为三个耐克的解点,可以吧? 啊,那么我们先在这个里边来配吧。怎么配呢?首先要找到集群中的克拉斯点,砍费个点,一个 apple 把它改成克拉斯点抗费个。来吧,做一下,好,找到这个卡费文件夹 啊,来找到这个卡西卡菲给的一个自然炮,我们先重命名,把后缀名去掉,这玩意去掉啊,这不要了 是。好,接下来呢,我们来改内容。那这里边的配法呢,其实就是配集群中的每一个节点的信息, 来,我们看这 c, 因为在我这个机群里啊,我的三个机器都是在本机,所以都是幺二七零点零点幺,端口都是各自的端口,八八四五,八八四六和八八四七啊,如果你们是来生产环境下,那这三个都应该是三台真实机器的 ip 地址和端口号 保存一下,这样呢,我们就完成了集群的配置了,接下来呢,还要配置卖三口的信息啊,因为我们将来集群是要去访问买三口的,我们找到 看这个文件夹,找到啊,不来 k 是你 prpx, 然后编辑这里要改的信息,有以下几个啊,第一呢是这里要把这个数据源打开 啊,这样呢是告诉我们戴克斯我们用的是买三口集群,而不是其他集群,这里呢是问数据库的数量,就是你这个集群中有几台买三口,我们这里只有一台,对吧? 那么再往下呢,是数据库中的这个 url 啊,还有这个用户密码信息了啊,那这里呢要把井号删掉,井号是注视 再来再来。那这个账号密码也改一改,我是入他一二三。 然后呢,这个地方的数据库地址和数据库名,你要根据实际情况,你自己是什么就改成什么啊, 好,全部配完保存一下,关闭到这呢,我们就完成了整个集群的配置了,别着急,配好了以后,我们还要把它复制成三份,然后分别启动吧。所以呢,我们找到这个文件夹, 我们给他重命名奈克斯一,然后我们把他拖到这个雷神目录下吧,我们在这边来玩。好,我们把这个雷神一再复制一份, 再来一份三,好,那现在我们就三份了啊,但这三份的端口啊,还不对,我们要把它分别改成八八四五,八八四六八八四七,所以进去 找到砍这个,找到这个,打开八八四五,保存关闭好,再来。 来拿口丝二,再来看这个,再来 prods。 好,这个改成六, 保存关闭好,再来。找到耐克斯。三,找到卡这个找到啊,不雷 kiss pops 打开改成八八四七。 走到这呢,我们就完成了三个档口的配置了,下边就是启动了呗,启动就很简单了呀,找到并目录玩他不就好了。那么我们找到耐克思一,并目录。在这里,我们打开一个黑窗口,同学们注意了, 这个启动的命令略有变化,不再需要加杠 m 参数了,因为我们现在是集群启动,默认就是集群启动啊,直接回车就行了。那下边呢,我们再来去 启动耐克是二,同样呢,找到这个闭目录,我们在这呢, cd 过去,放大一点啊,四到二叉二,还有耐克三, 好,我们再打开一个新窗口,放大一点 cd 过去,然后 style, 现在我们的集群部署就成功了,同学们,你可以等一等看一看啊,看第一个吧,是不是奈克斯在集群模式下成功启动了?好,我们再来看第二个,没问题,第三个,第三个正在启动当中啊, 好,启动成功,现在三台奈克斯都启动成功了。下边 呢,我们要做的事情就是给他们三个做好负载均衡反向代理。那就是要去找 njax 了。同学们,那 njx 的配置大家以前是不是都学过呀?这里我就不再坠数了吧,直接找到安杰克斯的安装包,打开, 然后找到我们的安装目录,把这个 nx 拖过来,关掉压缩包, 关掉文件夹,找到按键三段目录了以后,点进去,找到卡菲格目录,我们在这打开 njxcome, 完成配置啊,同学们以前应该都配过吧,我们的配置内容是什么呢?先看一眼吧, 我们的配置内容是先配了一个 f s greme 的一个集群,集群里边啊有三个 ip 地址和道口号,其实就是集群中的三个耐克死亡 这里呢,我们的 nx 就会对这三个地址做负载均衡。而后下边是反阳代理的配置啊,监听八零端口 logo hous 的,也就是说以后你在访问的时候不用再加八八四八了,直接八零就可以了。 再往下是配上杠耐克斯,这个杠耐克斯了,是我们的一个耐克斯的默认路径,还记得吧,也就说只要你仿了这个路径,我就给你代理到上边这个集群去。好,我们把它配置 ctrl c, 找到 ngx 目录,打开 ngxconfe 编辑,然后把它粘起来。粘哪呢? 只要粘到 hddp 的内部,随便哪里粘一下都可以,就这吧粘贴保存就行了。然后我们去打开 n x。 好,嗯,我们在这里再次新建 那个黑窗口, cd 过去,然后退格吧,在这,在这个目录下直接 stop n, 这个是启动成功,同学们,下边不废话,打开浏览器访问一下访问的地址是什么,告诉我没错,直接 logo past nice 走,是不是成功了?同学们,到这集群搭建就成功了,其实你看着我现在好像访问的是一个,事实上他会在三个耐扣子之间做一个负载均衡。 那么问题来了,我的加瓦代码将来该怎么配呢?我现在是八八四八,你现在变八零了,我怎么配,哎,就八零,嗨,没你 你想的那么复杂。来,我们启动两个试试, 稍等片刻。 好的,我们打开浏览器,找到服务列表,看一下是不是成功注册新来了,来,再刷一下,现在显示的只有一个啊, 等一会应该就有多个了,哎,看是不是来了啊,这就是服务注册,先配置管理,咱也试试吧,现在配置你是空的吗?我加一个,咱来一个。那个 uzi 思尔维斯点滴微 就是塞瑞斯点夜猫吧,来,放大一点吧,大家看不见,这呢来描述就不写了吧,这直接夜猫。然后这里再写一个配置啊,我们以前配的什么?拍腾,呃,下边是什么来着?第一, 阿弥陀佛, mate, 喂喂喂,杠 mm 杠 dd h h mm ss 吧。好,来提交一个,发布成功返回,大家看配置是不是加起来了。这个时候我们打开数据库,那这个配置他已经是存到数据库里边的, 看到没有?有个塞尾斯,哎,看到没有,是不是存进来了?内容是不是也有, 哎,这就是说明我们的数据已经存储到满色口里边,完成持久化了啊。其实导致我们整个集群搭建就已经成功了,大家可以看到一旦搭建好,玩法跟以前没什么区别,对吧?好,我们回到 ppt 做个 总结, nicos 集群搭建的步骤呢?五步,第一步是完成买三口集群的一个步数,还有表的一个初始化,这个动作呢,还是比较简单的。第二步呢是下载和解压 nx, 但是解压完了你还要做一些配置,配置主要包括第一,集群配置,就是集群中的每一个节点的 ip 和端口信息。第二,数据库配置,就是说你这些节点都要访问的那个数据库 ip 端口,账号,密码等等信息配进去就行了。还有就是 我们要去启动奶口丝,每个奶口在启动的时候一定要注意了,不要再加刚 m 参数了,直接启动就行了啊。 那么如果你跟我一样是在同一台电脑上启动多个单口词,切记端口不要冲突啊。最后呢是用 nx 完成 反向代理,那个是集群的搭建,可能会跟我们的温度似的,运行环境啊,有很大的关系,所以很多同学在去部署的时候啊,可能会碰到各种各样的一些问题啊, 那如果呢,大家碰到了问题自己解决不了,欢迎大家也在我们的评论区里去留言提出你的疑问啊,那当我看到以后,我也会及时的给大家回复的啊。啊,那好的,那我们这节课内容呢,先到这里。

在浏览器搜索 knuckles, 找到官网打开, 打开之后是 narcos 的各种文档,说明我们跟着文档操作就好了。 在文档中找到下载链接,打开,这里有一点多版本的,也有两点多版本的文档, 这里建议使用两点 x 版本的,我们就下载两点 x 版本的吧。文档也切换到两点 x 的文档。在下载页面找到两点 x 最新版下载 github 下载比较慢,我这里提前下载好了。把 knuckles 解压到你指定的目录, 根据文档说明,我们修改 c n f 目录下的 application 文件。 修改 knuckles, 点 cord, 点 off, 点 plutting, 点 knuckles, 点 token, 点 secret, 点 p 的值。 我这里也是测试的,我就把文档里测试的 t 复制进去, 然后复制文档中的启动命令。 在 b 目录下打开 c m d 命令窗口,输入, start up c m d am stand alone 启动 knuckles。 stand alone 代表单机模式运行 本地开发测试就用单机模式就行。启动成功后,在浏览器打开 幺二七点零点零点幺八八四八, knuckles 能够打开网页,就说明 marcos 启动成功了。 试试随便新建一个配置文件, 配置文件也能创建成功了。接下来给 knuckles 配置一下数据库, 让新建的配置保存到数据库中去。用 beaver 连接之前安装好的 my sequel 数据库,新建一个 nicos 数据库。 在 narcos 的 c n f 目录下找到 m y s q l scheme 文件,我也是第一次使用 beaver, 没找到怎么导入 sequel 文件,我就直接复制 sequel 里面的内容到 beaver 去执行吧。 执行完 sequel 语句之后,在左边表下面就可以看到 locals 的表了, 然后继续修改 application 文件,找到 my sequel 相关的配置,默认 my sequel 配置是注视的,我们把注视去掉就好了。 数据库名称, marcos 用户名, root 密码,一二三四五六。 不懂怎么配置,看官方文档就行了,官方文档都写的很清楚。 knuckles 点 coordin austin enabled, 这里改成 true。 刚刚浏览器打开是直接进入了 knuckles 配置页面, 并没有要我们输入用户名密码登录这里改成撤后就需要输入用户名密码了, 这两个属性是身份验证的白名单,用于标识来自其他服务器的请求,随便输入你喜欢的就行了。 这里还漏了几个 my sequel 配置,没注视一起把注视也去掉, 然后重新启动 knuckles, 重新启动之后,浏览器刷新一下, 这次就需要输入用户名密码了。输入之后才能进入 knuckles 配置页面,默认用户名和密码都是 knuckles。 再新建一个配置文件试试, 保存之后就可以在数据库看到刚刚新建的配置了。到此 marcos 就安装完成了。


我们来看一下 nacos 的配置中心,那 nacos 的配置中心呢,和其他的啊,我们的 canfig 以及 ctrl 呢使用方法没有什么区别啊,都是一样一个 nacos 服务,其他的微服务注册上来之后啊,读取配置就可以了, 那我们来看一下他的特点。首先第一点呢,和我们的什么一样,和我们的这个坑所一样,他支持多环境啊,然后呢这个配置文件啊,然后呢通过 profiled active 呢进行激活,这是一样的。再有我们来看他提供的其他的功能啊, 在线编辑, ctrl 一样有在线编辑,因为因为他们都提供了控制台啊,控制台可以在线去编辑这个我们的多环境的一个配置文件,但是他需要使用什么一个呢?需要有一个命名规则,也就说你文件的命名规则是按照什么 guru 啊,然后 内幕 k 啊,三元空间来确定唯一一的一个文件啊,这是他的一个特点。 再有呢,他支持历史版本啊,这个是其他的没有的,这也是他一个很好的一个特性啊,我们每次修改,每次提交的配置文件呢,都会给我们记录相应的历史版本,并且支持一键回滚 啊,这个功能我认为是拿口子里面,配置中心里面啊最好用的一个功能。再有呢,他提供什么支持我们的灰度发布以及我们的推送轨迹啊,那推送轨迹呢,就是说我们每次这个修改的推送的,其实他和历史版本啊,我认为还是啊比较像的。 那这个呢,就是我们的拉克斯配置中心的一个使用以及他的一个支持的情况。

为什么现在阿里自己都不怎么用 sukipper 做注册中心了? double 二点七以后,甚至 spring cloud 的 阿里巴巴全都转头去拥抱 nacos 了。很多同学面试被问到这儿只会吱吱呜呜,说什么 jk 性能不好, jk 到底输在哪儿? 本视频的代码笔记,我整理进了两百万字的 java 与 ai 大 模型学习笔记里了,里面包含了三十多个技术站与几十个项目场景实战笔记,还有不同工作年限同学的简历模板,以及一份 java 加 ai 的 三十天面试突击学习路线,需要的话直接拿去。首先我们来看第一个场景,大家都背过八古文, zipline 的 设计原则是 cp 强一致性,这意味着什么? 意味着在 jk 眼里,数据的准确性比系统的可信更重要,不信我们来做个破坏性实验。大家看中间这个蓝色的方块,它是 jk 级群的 leader, 在 jk 里,所有的写操作只能由 leader 来处理。现在我们要模拟生产环境,突然发生了一次网络抖动或者机器故障, leader 挂了,大家盯着屏幕看会发生什么,看到没有, leader 变红了,整个连接线断开了,注意看那个倒计时,三秒、四秒。同学们,这就是问题的关键。在 jk 重新选出新 leader 之前的这几十秒甚至几分钟里, 整个注册中心是对外拒绝服务的,这时候你的微服务如果重启或者有新服务上线,根本注册不进去,这在微服务场景下是不是有点太娇气了?很多同学说,这 k 挺稳定的啊,那是你没见过大流量。大家看屏幕中间,这是 jk 服务器周围围着的这些 users 就是 我们的服务消费者。 jk 是 怎么通知大家服务变更的?它是用 water 监听机制,对吧?这就埋下了一个大雷。 假设我们现在有一个核心服务突然扩容了,或者挂了一个节点, z k 必须在第一时间内通知所有监听他的消费者。如果我们有一万个消费者,会发生什么?来,我们点一下这个按钮,大家看数据流 嚯看到了吗?这密密麻麻的黄色光点像机关枪一样瞬间打出去,屏幕下方的吞吐量数字是不是狂飙?这就叫金群效应。仅仅因为一个节点的变化, z k 就 要瞬间发出成千上万个通知包, 这一瞬间产生的流量能直接把 zek 的 网卡打满,甚至把交换机打挂。 zek 的 写性能本来就因为要同步数据而存在瓶颈,现在还要扛这种广播风暴。 随着你的微服务规模越来越大, zek 就 会成为那个拖死整个系统的短板。那既然 zek 有 这么多问题,阿里是怎么解决的?这时候 nas 登场了,来看最下面这块。 nas 之所以能取代 zek, 核心就在于它懂业务。 他知道对于注册中心来说,活着比完美更重要,所以 nas 默认采用的是 ap 模式。大家看这三个绿色的节点,它们之间是对等的,没有谁是必须要听谁的 leader。 现在我们要狠一点,测试一下它的生命力。我直接关掉 note 一, 再关掉 note 二, 好,现在整个集群就剩这么一根独苗活着了,惨不惨?这时候如果有客户端发请求过来,还能成吗?哪怕只剩一台机器,拉克斯依然能对外提供服务。他不强求此时此刻所有节点数据完全一样,他只保证只要你来查,我就有返回, 绝对不让你卡死。而且 knuckles 最骚的操作是什么?看右边这个说明,如果你真的也就是死脑筋,非要强一致性不可,它可以一键切换成 c p 模式,这种灵活度, j k 拿什么跟它打?所以讲到这里,大家应该听明白了吧,为什么阿里 double 放弃了 zookyper? 咱们总结一下,以后面试就这么回答。租 keeper 是 传统的 c p 系统,他的初衷是管嗨豆普这种大数据的原数据的,他为了数据不丢,宁可牺牲服务可用性。而 nacos 是 新一代的 a p 系统,他是为微服务而生的,他明白在微服务庞大的网络里,随时可用才是硬道理。

那么同学们,我们已经把部分配置放到了我们的奈克斯服务器上,下边呢,我们的唯一服务就要想办法得到这些配置了吧,那怎么样去得到呢?我们先来看一下在没有奈克斯时,服务如何获取配置的。那么他的流程大概是这样子的, 第一步,项目启动,启动了以后会去读取本地配置软件,读取完本地配置软件会去创建 surme 容器,而后呢就会去加载各种各样的病了 好,当然了,后续我就没有去画了啊,我们主要是关心配置这一块,那么同学们在这里呢,读取的是本地的啊,不是 k, 是哪一模配置文件。 但现在我们却多了一个东西,就是 nicos 中的配准件,将来我们的项目会干什么呢?他会把 nicos 中的 配置与本地配置做一个合并,而后再去完成后续的容器创建并的创建的动作。所以同学们,我们的这个 nax 读取是不是要加入到这个流程当中?那么呢,我们就会变成这样一个步骤了,同学们注意看, 先项目启动以后,先去读取奈克斯中配置文件,而后呢再来读取本地文件,两者合并穿完成后续动作就行了。 这个时候呢,流程听起来好像很简单对不对?但是你注意一件事啊,因为在我们读取奈克斯配置文件的时候,我需要知道一些信息,第一,去哪读取? 第二,读取谁?所以呢,这个地方啊,我们在读取尿不湿配置文件的时候,我得最起码我得知道奈何地址吧,但是现在奈何地址在哪呢?是不是 在阿布莱 k 式年夜文件当中,那我们既然要在这个地方都已经完成了奈克斯的读取,是不是要提前知道奈斯地址? 所以呢,在项目启动之后,不要着急去干别的事,先得得到奈何地址。 但问题来了,你那个地址原来放在那,这不行,所以那个地址是不是要提前知道啊?那怎么办呢?有什么东西是比啊,不是给点业务还要提前呢? 有,叫什么呢?我们是不是你提供了一个叫 bots 抓捕点夜猫的文件,这个文件他的优先级会比阿布雷 k 省点夜猫的优先级要高很多, 所以呢,这样一来,相关启动以后,他会优先读取 bossgrapdam。 那我们只要把耐克的地址呀,这个文件的相关信息啊都配进来,那么 他是不是就可以完成 nicos 配置的读取了,而后再跟本地结合,是不是完成后续动作啊?好,这就是我们接下来要做的一个动作了。同学们注意了,与 nicos 地址和配置文件有关的所有信息都应该放到 bost f 点腋毛当中。 行了,不废话,同学们,我们一起来看一下步骤吧。第一步,引入 nicos 的客户端管理依赖,也就是配置管理依赖啊,叫 nicoscon feig, 咱们以前引的是 nicosds grrydsgrry, 就是发现服务注册发现这里 ctrl fread 就是配置管理啊, 好,引入了依赖呢。第二步,我们就需要去新建 bostwaptame boostaptameamam 呢,是叫做引导文件,他的优先级比 我们的黑色眉毛要高,而这个文件里要配什么呢?他要配的包括下面一些信息啊,大家看服务名称 profrie, 也就是环境和后缀名, flx, 天审。同学们,这三个东西啊,服务名称, 开发环境加后缀明,三者结合是什么?是不是我们刚刚在浏览器控制台配的 服务的雷塔 id 啊,我们去看一眼,我们打开浏览器,看到没有服务名称,环境和后缀,所以我们再回到 ppt 刚才的这三个配置的目的,是不是知道是哪个文件啊? 那这个东西呢? logo 的八幺四八是 nx 地址。那好,那我已经知道了要去哪读配置了,又知道了 读取的配置叫什么名字,那这事是不是可以搞了?哎,没问题吧,所以下边呢,我们就不废话,按照这个去整一下来,我们找到 id, 找到遗物字三维四的泡沫文件, 然后在这呢去添加纳克斯的配置管理依赖吧,来吧,他这个名字啊,跟上面人很像,可以看到上边这个叫 suprenkex 卡瑞,而我们这个叫纳克斯。什么呀,看,这个没错啊,就是他。 好,那么大家第一次的话是没有提示的啊,那么你们怎么办呢?可以把我这个扣过去啊,从笔上扣就行了, 好引入依赖了。第二步,我们刚才看过了,是要干什么?同学们,哎,没错啊,是要在瑞萨的目录下新建一个都 抓不点也没文件吧?对啊, boss 转不点也没文件。当然这个地方可以随便起名字叫 ym, ym 都行走, 我们说后这名是可以 ym 或 y a m 二,但是文件名一定是 boss rap 这个名字,大家看是不是带个语音,这是特殊的文件啊,在这里面要配哪几个东西呢?要配这么几个东西,第一,服务的名称,这个将来会决定我们的数据,对他 id 啊,我们叫 u z。 第二呢是 profrie 环境啊,第三呢是这个耐克斯,耐克斯地址, oppo pos 的八八四八。第四呢是我们的,这个什么东西同学们不记得了,是 我们的后缀名啊,三要素啊,服务名,环境后缀名吗?后缀名叫 yaml 吧。 哎,文件后缀名啊,同学们记住啊,服务名称,他,环境,还有这个后名,他们三个决定了我们的,怼他一滴 好,那么这个呢,是服务地址到这配完了,别着急啊,布雷克系列阴谋当中啊,还有一些跟他重复的配置吧,比方说服务名称干掉,拿个地址干掉,这里的集训配置,我提前已经注视掉了啊,好,那么现在呢,我们就可以干什么了, 来句完成配置的拉曲了吧。但是同学们怎么证明我们真的拉到配置了?那要想证明我们真的从拉克斯里获取到配置了, 只有一个办法,那就是想办法去读取到这个配置,那我们的配置文件我们看下,浏览器 叫约瑟维斯第一位,然后呢,他的内容是 party, 对的方骂他假设说我在项目当中来读这个配置,读到了是不是证明就拉序到了好不?废话,我们来整一下, 打开定,我们来写一个代码啊。我们知道要想读取一个配置,是不是可以利用歪六注解,在歪六注解中通过多了幅大括号加这个名字来去读取配置。 大家有印象吧,这里有个 prvdes 俊,叫 detiful mat 吧,就叫这个名字吧,来去加载啊,如果这个能加载成功,我们就证明了什么?同学们, 证明了我确实拿到配置了吧,哎,下边呢,我们来写个 ctrl gat 买品路径名叫 no, 就是当前的意思,返回一个自助串就叫 no 时间,然后呢,我会得到一个当前时间,我通过一个 logodit tom 的一个工具类啊, 获取一个当前时间叫 no, 然后对他做一个格式化 fmart, 格式化的时候,他这里需要一个 dotm f mat, dot to mat, 我们拿到这个类啊,然后第二种,它里边的一个功能啊,叫做奥排程,他可以利用这个排程的实线格式化,那我们就可以把这边这个的 fmat 是不是扔进去了, 这样呢,他就会按照我们规定的格式完成日期格式化,并且返回了啊,好,下边不废话,重启我们的服务。第一个, 第二个, 好,重启完成,这个时候呢,我们去点击八零八幺, 然后呢,我们在这里去输入一个叫 u 字杠 no 回车,哎,等一下走,可以看到这里是不是有一个日期啊?二零二一零四幺二,说明格式化是不是成功了,我们再来看一下八零八二 是不是同样实现了这个功能,这说明什么?这说明八零八幺和八零八二这俩为一服务,都已经成功的从 nicos 控制台里得到了这段配置了吧。没错啊,同学们,到这呢,我们就实现了配置 管理的第二步了,干什么呀?微服务获取奈克斯中的配置信息了,我们一起回到 ppt 来看一下啊。第一步,引依赖,第二步,是不是配置这个信息啊?服务名称,环境地址和后绿名, 然后呢完成这个服务的一个读取,属性读取啊,通过这个歪读注解来读取就实现了。最后呢,我们来总结一下我们刚刚做的这些事情啊, 将配置交给奈克斯管理,第一步呢是把配置放到奈克斯中去添加,这个动作呢是在控制台里点加号填写表单就行了。 第二步呢是在唯一服务中引入奈克斯的依赖,注意引的是扛费的依赖。第三步呢是佩布斯 rap, 这里面主要是告诉我们的应用应该去哪作陪人拉去耐克地址,还有拉去 去谁拉起谁呢,就是服务名称,环境和后队名。好,那么到这呢,整个配置管理的动作就完成了,那么这节课呢,就到这里,下节课我们会带大家了解一下怎么样实现配置的热更新。

复制拉口式粘贴,修改文件夹名称, 创建数据库 locals utf 杠八制服机确定,打开数据库,点击查询, 修改配图文件,修改访问端口号,修改要连接的数据库, 添加地址用户名 ret 密码, ret 保存,复制 c 口全选粘贴粘贴运行, 修改配置单机模式运行, 进行拉克斯的访问。 local house 的八八四七拉克斯 locals 输入密码, locals 登录用户管理,添加用户 return, 输入密码,确认密码,查询数据库 ur 标 只有 lock, 十一个用户添加在查询可见有两个 用户退出用 rot 账号登录。 rot 登录,登录成功退出用 locks 账号登录。删除用户, 可见本地数据库被删除。用入头账号登录用户,不存在用 logs 登录。