粉丝1.2万获赞5542


大家好,我是 nice killer, 欢迎观看我的 nice killer 系列手抓配套视频。 今天视频的主题是当容器遇上微服务。观看本期视频之前,建议您先点个赞,收藏并且转发给你的朋友,然后再慢慢观看,这样既可以观看往期视频,还可以防止手滑找不到视频。 现在进入我们今天的视频主题,当容器遇到微服务,事情的起因经过结果是这样的,在此之前呢,我们使用的是单体服务,也就是很常见的 sprin 布的。 其实单体服务已经完美的解决了我们的所有需求,从产品的角度讲,用户是满意的,运 是满意的,但是你懂的,只有技术不满意。于是便开启了系统的重构,从单体服转向微服。这段编排腰本就是之前我们所使用的 很简单常规的一段编排脚本,这里只使用到了 oppo j d k 八用来启动 spa。 注意,这里使用的是挂载方式,像这种方式有两点考虑,第一点是因为扎花包的大小,如果为每个版本制作一个镜像,在构建的过程当中非常耗时, 启动过程跟版本切换也非常缓慢。第二点是如果我们选择了镜像库方式,我们就要去维护这个镜像库,我们发现镜像固件完成之后,少则 两百兆,多得三五百兆,从持续继承构建环境到金线库之间的上传就需要很长的时间,从金线库下载到速度入机又需要很长的时间,所以最终我们选择了使用挂载的方式。 当我们从单体服务逐步慢慢的向微服过渡时,在这个期间,各种各样的问题便慢慢的暴露出来了,我们采用领域驱动设计的思想来拆分微服务, 最终将一个单体服拆分成了十几个微服务。我们知道扎花是采用眉纹来管理包,依赖的 使用梅文, pak 是打包之后梅文会讲依赖的 g r 文件放入到 boot 杠 in f 杠 lib 这个木木侠。当梅文运行完成之后, 会生成一个最终的 gl 包,这就是我们的微服项目。一般情况下来说,这个包的尺寸大约在两百兆左右,当我们完成从单体服到微服的拆分之后,原本一个两百兆左右的 gl 包现在变成了十个, 而且每个包都是两百兆左右。这是因为扎瓦项目与传统的 cc 加加项目不同, c 跟 c 加加项目他们会使用共享库,共享库会装在操作系统之上,他们变异后的程序并不会携带这个共享库。 扎娃的思想是将所有依赖的包全部放入到自己的包当中,这样才能做到一次变异到处运行的目的。其实我们也可以把所有依赖的包全部烤出来,放到 宿主主机的接地 k 母下,但是这样做既违背了容器的初衷,也违背了扎娃的初衷。另外,由于我们使用了 mevan 的自模块技术,对于吃鱼继承跟吃鱼部署的构建也是一种压力,因为此前我们只需要执行一次 maving pak 就可以了。 现在固件的过程当中会产生十几个接压而包,而且每个都是两百兆左右。持续进行的过程当中,获取代码、变异、打包、制作镜像、上传镜像、重启容器, 这个过程变得难以忍受。从单体服务升级的微服务,我们还面临一个问题,在单体服务上,八 g 内存就足以了,而拆分成微服务之后,我们十个微服务跑起来,三十二 g 内存都已经无法满足。 此时所有员工的电脑都需要升级,我们尽量在开发的电脑上启动最少的微服务,并且要讲公共的服务放在服务器上,供大家共享使用,也就是满足开发跟调试。但是十六 g 内存仍然不够, 我们不得不将所有的员工的电脑都升级到三十二 g, 才能满足微服务的开发。升级完员工的电脑,我们遇到了另一个问题,是微服务的启动顺序问题, 对服务的启动顺序是有依赖的,必须按照规定的顺序进行启动。如果我们是一个服务,一个服务的启动,并且没启动一个服务,确认启动成功之后,再启动下一个服务, 这样操作非常保险,但是效率非常低下。十几个服务全部启动成功可能需要十分钟,所以我们会同时启动多个服务,然后对服务的 健康状态进行检测,如何确认该服务是否启动成功,如果没有启动成功,再次重启。这种方式也有一个问题,就是某个服务出现失败,会影响到其他服务,甚至会导致一些连锁反应。这种情况在我们升级某个特定服务的时候,也会出现类似的问题。 这里还有个小插曲,就是我们要不要用共享存储。对一般的中小企业来说,我们没有万兆交换机,更别提光鲜存储, 使用千兆交换机也就是一个 g 的贷款,无论我们用什么技术,包括电路聚合,也无法满足我们的共享存储需求,所以最后我们决定放弃共享存储,仍然将 gr 包复制到速度主机,然后会挂在使用。最后我们遇到的是配置文件, 虽然微服务提供了配置中心,也就是有专门的配置服务器进行管理。配置文件这里我们使用的是阿里巴巴的纳克斯。 我们有五个基本的环境,分别是功能测试的分数环境以及开发环境,测试环境, uat 交付的测试环境以及生态环境。 我们的解决方案是在 nacos 当中使用命名空间创建这五个环境的命名空间,然后一个一个进去修改,将五个环境全部配置起来, 也花了不少时间。你认为到此为止就完了吗?请继续看。后面还有很多问题。在开发的过程当中,我们常常会遇到一个问题,就是数据库点接不上了,这种问题是我从来没有遇到过的,于是我便进入 数据库,查看数据库连接数,发现数据库连接数已经满了。除数据库之外,缓存、搜索引擎、芒果 db 等等等等都遇到了相同的问题。 在单体服务的时代,通常数据库两百五十六个链接就已经足以了,升级到微服务之后,可能一千都不够,最终我们升级到了四千。 这是因为每个微服都有自己的独立编辑词,每个连接词跟服务器之间都要建立编辑。 例如测试环境,我们每个微服务的连接池设置成为一百,那么有十个微服务,那就是一百乘以十。当我们对测试环境做一个压力测试的时候,数据库上就会看到一千个连接我们开发环境的数据库,每个员工都要连接,最终数据库的最大连接数 很快就被消耗光了雨水,便出现了部分员工连接不到数据库的情况。如果使用 cover ninetys, 步数是变成 cloud 之前所谈到的所有的问题你都会遇到,你会面临几个挑战, 部分,在 tc 必须使用镜像库步数,他不能使用独立的 garr 进行步数,那么在每次持续继承的时候,声称镜像 上传镜像到镜像库,从镜像库下载以及步数这里需要漫长的等待时间。其次就是共享存储问题,即使是万兆以太网也无法跟 ssd 相比。 如果你们有四百 g 的光线交换机,就不要尝试使用,全部是文件系统。今天的主题,当容器遇到微服就先讲到这里,喜欢我视频的小伙伴请关注我,点点小红心,谢谢观看!

很多人都说现在是云烟生大模型的时代,微服已经过时了,但现实的是很多人开发多年都没有在实际的开发过程中用过微服,更别提搭建微服报价和就选型的。那么面试的时候问会怎么办? 今天我就分享一张微服务的盖板架构图,让你根据这张图可以和面试官 bicepass springcloud。 微服务架构是由多个组件一起组成的,各个组件的交互流程出现。 浏览器通过 dns 服务器获取可用的服务实力和网络位置信息,从而实现服务的自动发现和动态更新。 然后通过 cdn 获取静态资源,然后再通过 lvs 负载均衡器实现负载均衡和网络协议。通过 ngx 反向代理服务器将请求转发到 git v 做路由转发和安全控制。所谓的网关词访问注册中心和配置中心。 narcos 获取后端服务和配置项, 然后通过三 tino 进行限流操作,通过 redis 进行缓存服务绘画管理分布式所控制,再通过 e s 进行全文搜索存储日志, 配合 e l k 对 e s 中的数据进行实时化的可视化分析。下面详细说一下每个组件的应用 域名系统 dns 在微服务中, dns 的主要作用是服务发现和复展均衡。 lvs 负载均衡器 lvs 是一个开源的负载均衡软件,基于立 操作系统实现。它支持多种负载运营算法,比如轮巡随机、加权、轮巡加权随机等。它还支持多种网络协议,比如 tcp atp, atps 可以满足不同应用的需求。 第三部分 c d n 静态资源 c d n 静态资源是什么?它包括资源图片、视频、 javascreen 文件、 c s s 文件、静态 h m 二文件。这些静态资源的特点大家也很清楚,就是读请教量的极大, 对访问速度的要求很高,并占据了很高的宽带,如果处理不当,可能导致访问速度慢,宽带被占满,进而影响动态请求的处理。 cdn 的作用是将这些静态资源分发到多个地理 位置的机房和服务商,让用户就近选择访问,提高访问速度,解决跨地域请求慢的问题。第四部分是 n g x 反向代理服务器。 n g x 的主要作用包括四点,反向代理、复杂均衡服务、路由和静态资源服务。 大家可能也发现了 n g x 具有静态资源服务,而 c d n 也是静态资源服务。那么这两种在搭建非服务框架的时候应该如何选择?如何进行取舍?选择 n g x 静态资源服务还是 c d n 静态资源服务取决于具体的需求和场景, 如果追求更好的性能和全球覆盖,可以选择 c d n 静态资源服务。如果需要控制和自定义的能力,对性能没有什么要求,可以选择 n g x 静态自然服务。第五个组件 get 为网关。在微服架构中, get 为的作用有六点,统一入口、路由和转发、安全和认证 协议、转换日志和监控服务。聚合路由和转发的意思就是 gat 位,根据请求的路径、参数等信息,将请求路由到不同的微服务实力,这样可以让非旺服务结偶,让各个微服务可以独立的开发、测试和部署, 这个也是微服务的核心。第六个组件是注册中心 knockos, 主要体现在注册中心、配置中心和服务健康检查。 knockos 提供了一个服务治理的功能,它包含服务健康检查、负载均衡、容错处理。服务健康 检查可以阻止向不健康的主机和服务实力发送请求,保证了服务的稳定性和可靠性。第七个主见, redis 缓存。 redis 在微服务架构中的使用频率非常非常的高,它主要体现在如下几个方面,管存服务、绘画管理、分布式锁和效率对列。 缓存服务顾名思义就是将常用的数据结构缓存在内存中,提高数据访问速度和享用时间,减轻数据库的访问压力,并加速后台数据的查询。 绘画管理可以存储绘画信息,并实现分布式绘画管理。绘画创建、绘画信息存储。绘画信息存储就是将绘画信息关联到绘 绘画 id, 存储到 redis 中。绘画信息可以包含用户身份、登录状态和权限,为绘画设置过期时间,以确保绘画在一定时间后自动失效。 redis 提供了设置兼职队过期时间的机制,可以通过 expiri 命令为绘画设置过期时间, 然后是绘画访问和更新,最后是绘画销毁。第八个组件, e s 全文搜索引擎。 e s 在微服务架构中主要体现在以下几点,它是一个分布式的全文搜索引擎,它可以对海量的数据进行实时的全文搜索, 可以提供分布式存储。 e s 提供了分布式的实时文件存储功能,每个字段都可以被锁引并可被搜索,这使得数据在 e s 中的存储和查询都非常的高效,可以配合 kebana 对 e s 中的数据进行实时的可视化分析,为数据决策提供数据支持。大家可能感觉 redis 和 e s 非常的像 啊,都可以缓存数据,也都可以存储数据,那么它俩有什么区别? redis 是一种基于健值队的存储系统, 他提供的性能和读写能力非常的强,适用于存储结构简单,查询条件同样简单的应用场景。 而 es 是一个分布式搜索和分析引擎,适用于全文搜索、数据分析等复杂的应用场景。 redis 支持丰富的数据结构,包括自助串、哈西列表和饥饿等,并提供了原子性的操作,适用于实现缓存、消音队列和计数器等功能。 而 e s 则是基于盗拍所引的数据结构,提供了强大的搜索和分析能力。但相对于 reddis, e s 的写入效率比较低。 它们的区别第三点是实质性和一致性, redis 提供了很高的实质性。 redis 将数据存储到内存中,能够很快地进行读写操作,而 e s 的实质性不如 redis。 在扩展性方面, reds 可以通过增加 red 实力的形式实现扩展,对非常大的数据集可以进行数据分片,而 e s 具有水平扩展的能力,可以通过添加更多的节点来提高系统的处理能力,适用于大量数据的场景。

或者在斯文迈士的基础上进一步。刚才我们不是斯文迈士吗?斯文迈士跟我们的云结合起来啊,斯文迈士跟云结合起来就是云延伸的。 当这个说起来是这么一说啊,但他概念吵起来很多啊,大家简单一定要理解一下。就刚才呢,我们能能够做到把服务放在一个网格里面,把什么事都交给网格去了,然后这个网格运行的话,以前我们还在关心的啊,这个网格我们部署的多客,部署哪哪里去是吧。而现在的话呢, 这个这个容器不要你管了啊,这个服从不服,不要你管了,直接放到云里面去了啊。就是这个网格直接放到云里面去了,我们关心的呢,就只剩这一个玩意了,只要这中间这个点代码啊。所以余元生他给我们的效果就是,我们只负责把这个业务逻辑写完,我们那个 yvp 写好,然后你把那个 yvp 写好就行了, 然后发布到指定的位置上去,他就给你套在一个服网格里面,自动在云环境下帮你把这个服网格起起来,然后这个服网格你知道他能够完成那个服治理啊,啊,什么服注的,发现这玩意都是他提供的,然后我们就可以访问了。因为这个服务网格把现在是完成的,我们在外界啊,就通过互联网的就可以去访问他了 啊。这就是我的余元生,你们有做过余元的应该知道啊,就是余元生给你的感觉就是我好像只有写一个普通的啊,就是业务代码啊,写完之后呢,啥事不管啊,点个发布,哎,啪就变到互联网上去了,我就能访问到了 啊,这就是所谓的鱼猿生啊。那那怎么做的啊?其实就是在刚才的基础上,更进一步,跟云结合起来。好吧,这就是鱼猿生啊。当然鱼猿生海王里面扣的东西也很多啊,他不光不仅包含这么一样东西啊,它里面包含的各种各样 的组建的标准的协议啊,工具啊啊,特别特别多啊。关键这款的话呢,真的你们可以关照我们的课程啊,我们价格班里面在于是讲的还是比较多的啊, 是吧。哎,这是二零一九年的时候,到现在其实都非常流行,经常在口头说的都是原声啊,说就这个东西,几个大佬就得干这活啊。 因为因为这会确实应该出大佬级别来做。这个东西本身就很复杂,什么赛德卡这玩意啊。然后呢,在中在比如说中国就全球能把这些东西都玩转的人才都没那么多,那人才现在都被他们那种 这种大佬们大旗给挖走了啊。所以我们相对我们来说啊,我们就只能老老实实细写一篇传上去了, 这也是一种悲哀啊。好了啊,这不说了,这个说的不好,其实他也是给了我们一个机会,因为我们都不需要管那韵味了,咱们关注好我们业务啊,哎,就能享受呢 原声带来的我们的便利啊。当然,他们还有更变态的吗?还有他们啊,还有他们。如果你想聊他们,我跟你聊的天荒地老。还有一种呢,更更变态,叫叫叫萨瓦利斯, 这是去年七年的概念啊。斯文里。斯文里是个什么呢啊,其实还可以从刚才帮你引进过来,刚才呢,我们说到在鱼眠深的时候,咱们只需要呢,我们写个什么呢?我们写个 yv 片是吧?哎,我们写个 yv 片出来,然后这个 yv 片是个独立的进程吗?这个独立的项目塞在炕里面, 那到五福一下过呢,就变态了。你需要呢,需要写一个反馈省,反馈省啊,反省 反 k 神什么意思呢?你只需要洗个方法啊,里面还有一个名字叫 pass 啊,叫啊 fass 啊,叫反 k 神或者 solas。 比如说我们将来 如果用无符的加购这种模式啊啊,你会更轻松,你会更更更更更小白。你只需要写一个方法,你连这个方法你都不需要把它签到什么 yvp 片里面去了。你不需要建立一个完整的 yvpi, 有什么普瑞古拉门,什么斯达拉普,什么 app cit, 你这会你都不需要了。你只需要写一个方法。 那那写个方案之后啊,他就能把你变成一个符,通过互联网的形式进行访问。哇,老师,他怎么变的 还不是那块样的。只不过呢,你写这个方法,他把你这个方法嵌到一个外皮片里面去了。这个外皮片他自己给你包装那个盒子啊,包装那个塞的卡,然后塞的卡在布置在云里面去啊,然后对外提供服务,然后我们通过调这个 服务来的啊,我们就访问到这个方法去了,就这啊,是不是更变态了啊?其实后面这几个你们可以感受一下啊,你们可以感受 说一下,就是从从微服往私人卖市里面走啊,他们的目标就是为了降低这个微服价格的使用门槛,因为他们最根基上来说,一直都是基于微服的啊。微服这个年份呢,可能会贯穿互联网加购很多个时代啊。 然后的话,他们只是为了降低门槛,然后呢,跟云结合起来了啊,跟云结合起来之后的话呢,又产生的新的说法叫无服,叫云原声。然后再往前引进一步的话呢,更多的工作由平台来完成,就变成了反 k 上的 sorrys 啊,或者叫无符加入 sorry。 历史 就这样。当然我其实也不知道今年还会变个什么东西出来是吧,从二零一八年的啊 sorry, 二零一九年的于元生,到去年的这个芜湖架构。我只能说呢,这个互联网的架构呢,在不断的进步啊,我们每一个开发者呢,都要保持不断的 学习啊。然后呢,像但是呢,我同时我又觉得啊,互联网的架构肯定是往着无脑的方向走,他肯定希望能够降低门槛,而让大家能够减少这个思考。但是如果我们想做一个架构师啊,我们希望能够做一个引领技术的人啊,能希望咱们团队的核心骨干负责人, 我们需要呢,能够从根基学起。像微服务价格呢,其实我们现在会讲云绵深,但是微服务价格呢, 一样啊,讲的非常非常的细致。而且我们的项目时代就是以微服加高落地,然后呢,自由部署在 k 八 s 里面去,其实我们也部署在云环境里面去了啊,但是呢,我们整套流程都是自己去搭,而不是直接去使用 s 头这种东西 好不好,老铁们。嗯,咱们这些东西说到这里呢,我不知道有没有对他产生一个畏惧感啊,会不会觉得哇,这个东西真的是学 无止境啊,是吧,啊,静无止境的。但是他们真的你们跟着杨老师学习啊。我今天啊去下面这几个咱们不说啊,要搭下面的几个,对你们其实帮助不大啊,你最多只会看一下 ape 的使用,但是上面这一块的东西,我基本上会在这个成端期里面啊,帮你把大部分组件呢都给你们搭起来好不好, 带你们去一个一个的去落地啊,先建立整体概念,然后再挨个去落地。那真正的把微服务价格东西呢,能够打通下来啊,这才是我们这一个专题的一个 flag 好不好啊。从入门的放气坑了都啊,老铁们啊,这一百分钟过去了啊, 过得好快对吗?呃,一块抽奖来。一百分钟过去了。一百分钟过去了。哎,觉得还蛮有 收获的啊,觉得 elan 讲的不错的,讲的不错的给老师呢,讲的不错 啊,咱们刷个呢六六啊,咱们支持一波 mvp 好不好,老铁们。还行吧老铁们。 就是咱们现在讲到九点四十三了哎,差不多一百分钟啊。过去之后呢,如果觉得哎,还蛮有收获的哎,起码老师讲的不错,或者说大开视野的啊,开阔了啊,有的小班可以有收获,有小班的,或者说呢啊,开阔啊,视野啊,然后觉得呢,也能讲的还是蛮不错的。哎,咱们 来个六六六,点个赞好不好哎,咱们支持一下微软 mvp 啊。然后的话呢,同学们,老师真的还挺靠谱的是吧?一方面呢,跟大家啊,积极的输出种种内容啊。另一方面的话呢,哎, 安排老铁们啊,今天晚上晚点咱们会有个抽奖好不好?这个抽奖的话,咱们初步定在十点十五开始抽取好吧。啊,这个可能有点早啊,我们还答疑的话啊,我就这样好吧,我们十点十五左右呢。啊,十点十 十五呢开始答疑和抽奖好不好?到时候这样你们自己安排好不好?来,六六走一个。朋友们,你们六六多刷点啊,老师,这个长专你才讲的有劲是吧?啊,后面我正儿八经的我不选藏私啊,能讲的我就惯给你们好不好,六六多走几个啊。 好了,同时的话呢,我也想给你们 啊,正儿八经的去说一下啊,我不是不是吹牛的啊,不是忽悠的是吧。就咱们这架构图里面东西,老师真的是落地下的。因为这个东西的话呢,本身就是源自我们架构班 vip 课程的 沙漠石粘的一个架构图啊。然后呢,这里的话呢,包括我们这边学的啊,这微服架构里面需要的全皮组件啊,这玩意实操都在这里啊,对吧?来来来, 给你们看一波好不好,给你们快速介绍一波啊。就比如我们学这个微服务啊,微服务架构,即使在我们 vip 里面,我告诉你,我们也会先解读一下微服务架构的啊, 前世今生方方面面讲完啊。然后呢,我们会一个组建一个组建的。像我们刚才这辅助的发言中心,我们这边推荐的是康穗啊,而且他们我我正儿八经的说,我们讲这玩讲的可深了,你还想讲康穗这东西, 我们除了啊,他的基础的辅助的发现我们会支持呢,想快快 upi 加 bc 两种方式。然后呢,还有像心跳检查自动移除。然后我们会搭他的高可用啊, 因为说了在微服价格里面,任意节点都必须是高考用的。然后用多根部署起来。然后还支持你们的分拨热锁, kv 啊等等这些各种一片的操作啊,还包括基于康帅的分拨热锁好了。然后呢,我们会需要网关啊。辅助的发现之后呢,就是网关,网关呢,我们 啊,咱们各种陆游规则,嗯服各种的服务这里啊,全部携带吗啊,然后呢,因为啊,阿斯六特呢,他是 c 下巴开元代吗?我们会直接去扩展他的中间建啊,我们会从原码解读去扩展他的处理管道啊。然后呢,我们会搭建他的高科技群, 就是我们讲这里面的每一个组件啊,微佛里面的这个组件呢,我们先会啊,从大的从自上而下啊,建立整体的概念,然后再挨个组建,挨个的怼啊,像辅助的发音的康手啊,皇冠康手啊,皇冠二十六特啊,念这个 复制你的 money。 然后呢,全年都追踪。我们这边有 style kitty。 然后像植入收集高级的普罗米修斯和格瑞法纳。然后呢,分布日制,我们这边一个三门丽斯和 elk。 然后分布的配置中心,包含的啊, polondows, 甚至包括 sd 四面的康菲格迈普啊,这些分配配中心我们都会应用。然后呢,包括金克加多克加酷波 luck 这一套啊, csad 的啊,这个循环进的步数啊,对吧,包括这多克,我们就是一点点跟详细的讲啊。 所以他们你看这个地方啊,微服加购的,我可以这么说,微服的加购的全组件我们都挨个挨个的解析的。当然在解析的过程中,我肯定不是说讲完一个再讲下一个,其实这每一个都是迭代起来的啊,我们的边讲边累积啊,边讲分每加,因为每加最后啊,会是一个比较成型的微服加高的框架。 老师你不能光讲框架吧,哎,当然了,我们还有实战,打开我就跳了给你们看啊,因为到最后最最最后啊,我们加国班压轴的项目实战就是这个啊,加国班压轴的项目实战是一个又 c 的商城啊,这个里面的话呢,就是 我们今这个架构图啊,这这今这个架构图就是源自这个项目的啊,就是从这个项目的。然后这个项目的话,大家可以看一下啊,你首先我们是前后分离的啊,前端的话呢是支持多端应用啊,然后呢,后端是 后边有些集群啊。然后呢,我们支持三层数据容器, macco 加芒果 db 加 max 三层数据容器。然后就是微服务的全组件, 为服务前走一点上来啊。当然这个就我们说的我们我们在真实落地项目的时候呢,第一件事就是拆服,我们会基于滴滴的领域驱动设计来拆咱们的服务。然后康斯二十六的 polo skyouk reak pro, 米修斯格瑞法纳诺克弗莱的卡夫卡 e l k 啊, pro max splus, 然后的 yvp 加 grp 的双击群支持。 这些微服的全组件就不仅是刚才搭个架子了啊,在这里的话呢,我真的应用到时代里面去,全组件的都整合进去 啊,每一个都会解决他的问题,输入他的价值啊,不是硬塞在一起的啊。然后的话呢,哎,老师, csad 呢,哎,在这里对吧,部署放在后面的啊,因为最终这个项目的话呢,我们需要呢。 ps 加 get 加多客呢,去构建一个 csd, 然后把它铺到 k 八 s 里面去,全套在 k 八 s 环境里面啊,然后能够支持像跟他说的失效转移流量,自适应滚动发布,挥动发布啊,这这些东西直接现场给你演绎啊,真的是一线公司的那个价格标准应为标准的。 然后这就够了吗?还没有,还有更硬核的啊,因为我们最近的话呢,不成啊。我们先说上学期你有的啊,我们除了把它部署起来,那有可能是个呆萌啊。但是呢,你得压侧呀。啊,你得能够压侧起来啊。我们这边的话会把整个项目呢啊,做高并发落定啊,我们会做压力测试啊,用 gmat 压力测出去评测项目的负荷量,能够支持项目的定向扩容啊,让平台能够自适应流量压力啊。也就说我们首先会压测整个系统全电路,然后评测我们项目到底能够存在多少的定他。然后我们单节点进行压力测试,然后那算支持定向扩容,压力大了能够自动扩充节点,压力小了能够自动关闭节点啊。 然后真正的去千万级并发下去,秒杀落地啊。这些千万级秒杀的场景,他们这就不是我们在随便聊聊概念,而是真正的落地的啊,每一个环节的都代码的,然后压侧的啊,要真正能做到千万级并发的秒杀落地。 然后在这里高平方环境下,我们的分布锁分布施务方案,会真正的啊,去这里面高平方的验验证,我们这边的讲的方案啊,这是最终落地下来的啊,能够在高平方环境验证过的微服务环境下啊,你们能够搬到自己项目里面去的,而不是网上的 这边找一个的啊。然后呢,咱们除了高并发落地啊,是不是足够厉害了啊。我们还延伸那一个呢,叫大数据推荐系统, 大数据推荐,他们大数据推荐大家真的了解一下。这多来六之后的话,多来的五开始的能够积极学习,能够知道大数据人工智能。然后我们这边是基于十八个构建的啊,我们 集十八个构建的大数据推荐系统,然后他能够支持像分布式的日志采集传输,支持矩阵分解推荐模型,支持数据的离线训练,支持时时过滤和商品推荐 啊,能够知道实时的数据过滤,以精准的商品推荐啊。这是我们的大数据推荐系统对吗?大数据推荐系统这玩意真心是目前真心是那种顶级的互联网才用的玩意啊。大数据推卖啊,你们自己可以感知一下。所以在多来的街啊,我不是说别的啊,多来的这个领域能把 把微服架构的全组件完搞通,然后能够把这套微服架构的上十万,能落地下来,真心牛逼的很好不好,绝对是顶级的。是不是 都觉得还行吧。我我就先不说别的,就这两个,一个微服务的知识点啊,教学,一个呢,咱们微服务价格的实战哇,觉得挺牛逼的。来,来个六六六好不好?来六六走一个。 你们六六刷的多,我就顺便帮你们把其他的技术代言给你们覆盖一下好不好?六六六哇,谢谢你们这些小伙伴们啊! 是吧?要不然哎,那批不能追来自己的名声是吧?那吹出的东西得有干货,要不然那好意思是吧?哎好哎,希望大家能够啊!

微服务的核心就是服务,那么既然是服务,就会有服务消费者和服务提供者,服务消费者和服务提供者通过远程调用方式相互通信。微服务常见的远程调用技术有以下两种方式, 一种是二 pc 方式,另一种是 http 方式。那么这两种调用方式有什么区别呢?首先我们看一下他们所使用的协议。 二、 pc 方式可以基于 tcp 协议,也可以基于 http 协议, http 方式只能基于 http 协议。 http 协议属于游戏的第七层,比较高层的一个协议。 接下来我们再看一下传输效率上的区别。二 p c 的传输效率表高于 h t t p 二 p c e 使用自定义的 t c p 协议可以让请求豹纹体积更小,或者使用 h t t p 二协议也可以很好 好的减少豹纹的体积,提高传输效率。性能消耗方面的区别 rpc 可以基于 zif 实现高效的二进制传输, http 大部分是通过刺来实现的,字节大小和序列化耗时都比 zif 要更消耗。性能 负债均衡方面的区别 rpc 基本自带了负债均衡策略,比如说我们使用的 double, 内部就帮我们实现了各种各样的负债均衡策略, h t t p 需要自己配置 and gink 来实现负债均衡。 那么在日常工作中呢?如果对性能要求很高,使用 rpc 比较好。如果对性能要求不高,使用 http 也可以。如果我们的服务比较多,使用 rpc 还要考虑到服务框架的统一问题。

大家好,我是耐德 killer。 今天我们来聊一聊微服务并行开发当中遇到的一些问题。微服务开发的特点是项目非常多,例如我们有八十个项目之多,在开发的过程当中,每个项目的进度也不同,每个项目又同时存在了多个需求。并行开发 有时候我们还会遇到项目排齐的问题,一些项目已经合并了到测试分支,并且已经测试好了,但是突然接到通知该项目现在不上线, 此时需要插出一个新的需求。不过这些问题都不算是问题,我们可以通过版本控制来解决。我们今天学习的内容不是并行开发当中的版本控制,而是多个需求并行开发当中 快照版本的冲突。对于生产环境的发布还是比较好解决的,我们只需要使用 reds 版本就可以了。 而在开发阶段,我们是需要使用多个快照版本的。由于多个团队进行多个需求的同时,开发项目的进度也不同,每个团队引用的快照版本也不同。 当两个需求同时开发完成,并且合并到开发环境当中的时候,就会出现快照完本的冲突。 用 a 需求使用一点零的快照版本,而 b 需求使用二点零的快照版本。如果代码合并到一起,为了不影响之前的代码,我们必须再生成一个三点零的快照版本。一旦快照版本发生变化,其他团队就要同步跟进,把自己的项目升级到最新的快照,否则就有可能代码运行不了。 这里我画了一张图,我想目前大部分团队的开发场景都差不多,通常我们有三个开发环境,分别是开发环境、测试环境 跟生产环境。这三个环境又对应了三个原代码的分支,分别是开发分支、测试分支跟生产分支。我们的持续集成通常是向开发分支提交代码,会自动持续集成,持续部署到开发环境。同理,测试环境也是如此,生产环境也是如此。 这里除了马斯的分支,也就是生产分支使用的是梅文仓库当中的瑞丽丝包,其他分支都是使用梅文仓库当中的快照包。 在多个需求并行开发的时候,我们会给每个需求设置一个快找版本,这样就不冲突了,自己改自己的代码。 但是事与愿违,我们的项目进度并不一定按照我们的构想进行。也就是需求 a 完成之后再上线需求 b, 然后再上线需求 c, 这样顺序的走下去。 同时按照理想的合并方式,从开发分支合并到测试分支,再合并到生产分支。现实的情况是, a 需求很可能我们已经走到了生产分支,但是此时我们接到通知,要求把该需求挂起,现在向上 c 需求,并且跳过 b 需求。 那么此时 a 需求在生产分支, b 需求在测试分支, c 需求再开发分支。 这时我们就只能跳过开发跟测试,直接将 c 需求合并到生产分支进行上线,是其中的一种情况。还有一种情况是 a 需求跟 b 需求都开发完成,需要同时合并上到开发分支上去测试。 但此时你会发现 a 需求使用的是一点零快兆版本,而 b 需求使用的是一点一快兆版本,两个需求是冲突的。 这时我们就不得不放弃一点零快照跟一点一快照,再创建一个新的快照版本。这是遇到的第二个问题。那么还有第三个问题,也就是开发环境跟测试环境同时使用的这些快照的版本。如果他们相互依赖,一旦某个快照版本当中的代码进行了修改,那么其他分支就会受到影响。 比如我们遇到的这种情况,在开发方式当中引用了某个快照版本,我们对他的代码进行了修改。 此时测试的小伙伴在测试分支上重新构建了测试分支的代码。因为测试分支也引用了该版本的快照,所以导致了测试代码无法进行变异。为了更好的解决并新开发,我们还会使用更多的环境, 也就是每个需求一个环境,例如专用于 bug 修复的环境以及 hot fix, 也就是热修的环境。这种环境 通常是动态的,也就是通过一键部署工具迅速产生一个环境。当测试人员跟开发人员使用完毕之后,就将其回收。这时我们就需要建立更多的快照版本。由于快照的版本不断的在迭代升级,我们就需要一张表来维护他。 这张表注明了哪些分支使用了该快照,以及这个快照代码的变更历史等等。但是对于一个大型团队去同步这些信息成本是很高的,不是每个团队都天天关注这些信息,一旦某些团队没有同步到这些信息,那么就影响到了他的工作。 那么有什么好的解决方案呢?很多人会说只要管理好就可以了,也就是通过管理手段维护好这些版本以及版本号,控制好各个分支的合并。但是在实际工作当中,我们发现仅仅依靠 管理所谓是不行的。最好的管理是非人为干预的管理,通过来优化流程来避免犯错误。当然我们需要控制好分支的合并。关于多版本平行开发以及分支如何管理,在我的 nightcolor 带 wobs 手闸当中有提及,你可以翻看之前的视频, 这里就不再重复讲解了。因为今天的视频是讲如何使用 may one 的快照版本来解决环境之间的冲突。 要想解决各个分支所依赖快绕的版本冲突,其实思路很简单,我们只需要为每个环境单独创建自己的快绕就可以了。 最简单的实现方式就是我们使用多个铭文仓库,不同的分支使用不同的铭文仓库,只不过是这样配置起来比较复杂,而且需要配置很多个 门仓库,管理起来也比较复杂。那么我们能不能使用一个没门仓库管理多个环境呢?答案是可以的。现在我就为大家讲解一下如何配置没门。首先,我会创建一个项目,将包的类型改成 pom, 这样就成为了副项目。 修改三毛文件请看当前屏幕上的红色部分。请看版本号部分。版本号分成了版本的编号,加上分支,再加上阶段名称,这样我们就可以根据不同的分支打出不同的包,并且部署到慰问的仓库当中,供不同环境引用。 接下来我们创建一个公共项目,并且把它部署到面膜仓库当中,供第三方的包去引用。由于版本号在副项目当中已经定义,这里就不再定义了。好,我们最后再创建一个项目 来引用刚刚的公共库,也就是康门这个库。这里我们也是使用副项目定义的版本号,我想没问的基本应用每个开发员人员都能掌握,所以这里就不逐行逐行的去讲解每个 x、 三、 y 的配置项了。 命令配置好之后,我们就可以使用 mvn 这个命令来生成我们所需要的各种各样的包了。我已经把生成各种包的命令放在了当前屏幕,你只需要打开中端窗口复制进去执行就可以了。 生成完成之后,我们就可以进入微文仓库去查看这些包。发布到生产环境的包,却使用当前屏幕上的命令。 关于微服务开发如何解决快招版本冲突问题,今天就先学习到这里。喜欢我视频跟电子书的小伙伴请关注我,给我点点小红心。

哎,好啊。首先呢,哎,欢迎大家来到我们这个朝夕教育,兜里头加个班的剑客啊。正在讲话的小白就说啊,凯老师。然后咱们今天的话是我们这个第二篇的第二次课啊,咱们接着昨天内容的话了,那给大家了,咱们继续深入好吧。 那么同样的在开始之前的话,咱们了不废话了啊。咱们接着昨天的内容,咱们首先干嘛了?我们来新建一个项目,来新建一个项目,今天的一些代码的话,有些代码我会写,有些代码的话我会直接复制啊,就让大家知道这个第二批二,我们在开发的时候呢,哎,咱们到底是怎么去搞的好吧。 好,那我们首先新建一个项目好吧啊,项目的话咱们随便起个名称啊。哎,随便起个名称,比如说我们就 app 啊,这个叫什么了,这个就叫我们的这个 d 啊, d a p 二是吧,醒醒吧。好吧。第一哎, a pr。 然后的话我们就给他就前端吗是吧,连接好哎,咱们把它给创建起来 啊,这边都给他选了选择刀刃的五,然后呢,这边选择刀口,然后呢,这边写成那个的情啊,然后呢,他出现一个从带的是吧。呃,我看一下啊,把这个目录他删了吧。好,昨天的话咱们咱们再见一个好吧。啊,我们接待哪个盘子呢? 咱们创建在这个地盘吧。好吧,地盘里面创建一个。创建一个什么呢?随便吧。好吧,创建个天使有了是吧, 好了就放一块呗。好 啊,这个的话就是我们的简单一个简单的,非常简单的一个微服的一个 app 啊。然后的话呢,咱们同样咱们在干嘛呢?把它给包含起来好吧,比如说我们再给他写一个叫做嗯, q 币啊, 就说他是一个发布的一个,因为等会咱们还扩充了吗?所以说把它给放起来好。接下来之后怎么办呢?哎,咱们再去创建一个类啊,就是我们等会用的一个类 啊,我们叫什么呢?那的话我这样吧,好吧,就把老师之前写的呢给大家拖过来好吧。啊,今天上课的时候我已经写好了,把东西拖过来,然后直接用就可以了 啊,就是这个吗?对吧,我把这个复制过来,复制这里面来咱们这把 贴过来,就是我也写的一个了。哎,一个内裤 啊。然后的话把这个项目他引用进来。 好有呢好有呢。之后的话咱们首先呢要添加一个音带效,我们呢要引用谁呢?引用这个东西好吧, 啊,这个里面写了两个东西啊,啊,一个就是我写的一个累啊,那里面有个阿弟,然后呢一个啊一个的,这个是我们的一个经啊经啊。然后呢,还有个什么呢, 来一个瑞吉斯包住内裤,非常简单,就是我连接瑞吉斯,然后呢操作两个事情,我就操作他拿到他的第一个台本,我去做一些增加改差,所以的话带个代码,非常简单。然后怎么办呢?咱们首先呢,同样的,咱们首先要干嘛呢?我们要一 这个水呢垫片。好,我们呢给他签签下去的好吧,垫片啊,这就是零基础教学啊。咱们呢了解一下这个垫片开发模式 好了。这边成功之后的话怎么办呢?成功之后咱们这边加个东西啊,加个什么呢?我们一个地方加一下,加个什么呢? add 是吧? add 呢,碟片啊。 添加完成之后的话,为了我们在调试方面看到,把这个直接去了。你说他不管是发布模式还是调试模式,把这个四 m 勾,把这个 apr 的接接口释放出来。好。然后怎么办呢?然后咱们首先建一个项目,好吧,建一个非常简单的项目, 我们自己自己呢,哎,写一个简单的一个微服的 api, 我们就把他叫 api 空岛,空岛 可以随便写,可以写成什么了?好。然后呢?这个就不要了对吧?好。然后的话,咱们还是把昨天我们写的这一点点满了复制过来。哪个地方了?是不是这个地方,我们把这个复制过来,这是咱们昨天写的对吧?啊,咱们就昨天写了一个他 啊。那这个代码是什么东西呢?咱们可以看一下,非常简单,就是说我要干嘛呢?我的这个服务是个什么服务呢?我的这个服务是一个有状态的服务 对吧?有这样的服。然后呢,这边我丢的时候通过谁掉了?我通过我的这个 drpi 客户端去掉的。那做法非常简单啊,就是说我等会去掉这个东西的时候,他要干什么事情呢?他需要帮我往这里面干嘛呢?去写入一个值啊,写入个值。写个什么值呢?去写入一个我的传递的一个账户上, 对吧?那咱们的时间怎么办呢?咱们把它哎给他设置启用项目,然后我们运行,咱们给他运行啊,好,通过他运行。 好。那这种姿势运行的话肯定是不对的。为什么呢?因为我们现在和我们 dipr 的这种客户端没有任何关系。所以说咱们现在来看一下,当我去执行的时候,到这个地方就报错了,我们可以调试一下 看一下哦。 好。然后呢,咱们执行一下 这个之后吧,比如设置个多少,设置个一,然后呢,等于一百。好吧,启动 报了一个错误。对啊,报了一个无法连接。那就是什么意思呢?咱们内部是通过什么呢?咱们内部是通过加 pc 呢,去做一个交互的。而现在的话,你通过这种模式来做的话呢,肯定是不行的。那么应该怎么办呢?哎,咱们的启动方式应该变一下 啊。这边之前的话,老师上课的时候啊,咱们这边有一些之前做过的,把东西删一下吧。 vip 二的话,我把这个删了。 im f 的这个,呃,三九三八这几个给他删了,这是我之前搞的一些名字相似啊,所以说可能会有问题的。然后呢,就二八四把这都删了 啊。然后呢,还有个叫什么呢?还有一个是我们这个叫,嗯,我看一下,叫 b 七 b 是吧? b 七 b。 那删了。好。然后的话,咱们还有个叫什么呢?还有一个叫做 e f 九是吧? e f 九 一 f 九。好,这样的话我们就删完了。那删完之后的话,那我们怎么启动呢?第一种办法是我们直接通过第二 dnp 二去启动。怎么启动呢?咱们只要这样就行了。打开这个了,文件的一个管理资源管理器,就找到当前这个文件目录,然后打个三不记 好。达到三亩地之后怎么办呢?咱们通过输入什么东西呢?哎,咱们需要输入这么一句话。哎,这个脾气怎么不是最新的,王总是把脾气没没拿过来吗。 啊,我看一下。这 ppt 不是新的。我今天重新做了一个,把好多把好多指令呢都写在这个 pp 里面去了。看一下。好吧, 也非常 妈哦。 哎。口碑的是口碑的新的。怎么打开就不是个新的呢?这是什么时候改的。九点九点十五分改的。这是一个新的,是一个文件夹。怎么不全。 好吧,不全没事啊。我们看一下吧。我这边应该有一个全的呢。应该是在这个地方打一下,打开看一下。 这应该是全的。可能没有保存下来。没事。 好。然后的话应该是在哎。有呢有呢。我通过这句话来启动一下。啊。啥意思?就是我通过我的第二篇第一批二去启动。启动的时候他段号是多少?他的段号是三五零零。好吧。然后呢?这个 app 啊的代表什么意思呢?这个 app 就是代表我们容器的一个 id 的名称。然后咱把它复制过来。好,接下来的话咱们这个的话就是啊,不知道这不知道,咱们应该是这个地方了。 呃,打开我们这个窗器对吧。啊,就在这边好输入好输入。完成之后呢,这个就启动开了啊。启动成功之后我们怎么访问的呢?哎,咱们看这个地方。咱们访问的时候怎么访问的呢?哎,下面推哪去呢? 已启动成功了对不对啊?启动成功之后呢,咱们需要呢去访问一下。哎。 哎,我这个向日葵跑哪去了啊?这个地方是吧,怎么访问的呢?咱们可以直接这样请这个地址,然后咱们复制过来。好吧,把这个复制过来。因为我们看嘛,这是我们通过加片去启动的方式的,他段号是多少了?三五零零版本,或者是 为一点零。然后这代表什么意思呢?这个就代表他的一个默认的一个的参数。然后的话,你的 id 等于多少?我们的容器 id 不等于他吗?对不对?因为你要做负载离婚的话呢,你是根据这容器 id 来调的。然后后面代表什么意思呢?就说你的方法是谁,咱们的方法是谁?是不是他啊,你看咱们代码里面不是有个方法,不就是他吗?所以说咱们应该这样调用 好的,把它给竖过来 pose 的对不对?然后呢,咱们给他穿一下,咱们 pose 慢打开啊,打开, 这么打开怎么这样子。 好,等一下。 好哎。然后咱们写个纸,好吧,写个纸 对吧,就差吗?好。然后的话,咱们说是 pose 的解决对不对?拆什么值了,传的不是他吗,对不对啊,他要的参数不就是我们现在写的一个参数吗?一个 id 一个他。好,那我们就定用的时候咱们看一下成不成功了呢,再调用一下, 包括 pose 没找到幺二七点零点零点幺啊。 pos 特价错误客户端安抚其他 我再启动一下。好吧,这个是启动开来的,启动开来的来,再来一次啊,好看一下啊,启动了的 啊,五千对吧。然后呢,咱们去钓一下,钓一下好,钓不通是吧?钓不通这个东西没有关系啊, 为什么呢?因为我们说了啊,咱们在开发的时候,你你们我们的代码里面不可能只有这么一个,或者不可能只有两个,我们这两个之前还互相要有关系呢,但 是大家在开发的时候,大家会关注老师,我能不能下个断点去调试吗?对吧?那你想想,老师通过这种办法去调的时候肯定不好调,为什么我每次启动一个进程之后,我是不是在这添加一个那什么了? 调试的时候是不是添加一个了,我们的添加都进程啊。但你思考一下,咱们在整个的微服里面,咱们模块之间调用电动是非常长的,但是如果你这样的话,那你这边调试根本就不好调。那我们的正确模式什么模式呢?咱们正确的模式就是应该用我们的这个 多口容器加我们多个 ctrbox, 然后呢实现一个在我们的这个微服里面,这个容器里面呢可以实现这么一些条用啊调试啊。那咱们怎么办呢?咱们应该这样 注意看,越注意看了。首先呢,大家看好呢,我们的电能装上什么呢?咱们的电脑应该装上刀口,然后呢装上刀口卡布斯,也就是这个东西,你看螺丝垫上已经有了你的电动上面必须安装他 好。然后呢是启动,启动的好。接下来怎么办呢?我们首先要干什么事情呢?咱们要右击我当前的项目看好,右击我当前项目之后怎么办呢?我们要给他设置一个容器业务流程协调的程序支持 好。然后呢,咱们不要选 k 八 s, 我们选择是多 cos 好选择好选择成功之后呢,大家会发现这边呢是是什么东西啊?包我生成了一个解决方案哎,你看到没有?这边干嘛呢?这边有没有解决方案 好,那么说我们是不是可以通过这个解决方案去运行我们当前这个电视片呢,肯定不行。为什么 我们说了第二 p 二是一个客户端,但是我当前刀口里面我没有,我的刀口缝里面,你看我当前刀口缝里面没有任何 d i p 二的东西,那我应该怎么办呢?所有的说我应该在我的单个 clubs 里面加什么东西啊?我首先应该加入我当前这个第二片用的东西。 关于哪些东西呢?大家还记得吗?咱们是不是之前用过这个什么了?一些文件咱们可以看一下。昨天咱们看到了哎,第一篇有一个文件 是个什么问题呢?就是说我们地下片需要的客户端,咱们在这个地方也打开啊,来打开 好,然后的话是在我们的 a a 学习对吧?哎,跑哪去了?刚才给人中了快速入门。好,然后呢,装的时候呢,我们 我说这个地方本来说实话的,是不是有个这个东西啊,哎,有这个东西叫啥来着,是不是他好,咱们打开看一下,打开看一下, 在塞盘碟片,然后呢,三亩地 好。打开之后呢,这边会出了一个文件夹,这文件夹代表什么意思呢?这个文件夹就代表我们 vip 二给我们提供的什么?是不是他给我们提供了好多的组件啊,那这些组件和当前我们这个都是靠谱词,里面没有任何关系啊。 那没有关系你怎么办呢?你是不是需要关系?那我们首先怎么办呢?咱们首先需要把这些关系给他加进来,我就直接复制了。直接复制了, 直接复制我复制谁呢?我不要复制太多,我复制几个就行了,把这个和这个复制过来。好,把这两个复制过来。 好,复制过来之后的话,这边我不需要太多,我只要一个,让你 q 或 red。 好吧,我不要让你 q, 我只要 red。 好。然后呢?大家可以看一下。这边说了我有个什么呢?我修个全电路,我还需要什么呢?我还需要瑞士帮我做什么呢?去帮我做这么一个什么呢?做一个 恢复的状态的储存,那我们有了对不对?然后这边是什么呢?这边我们说了,如果说我们要做发布订阅的话,我们怎么办?我们是不是应该用我们的瑞士做发布订阅啊?好,那 现在有了之后有一个问题,老师,你当前这个容器里面这只是配着文件,你这些里面有没有我们相关的,这个 什么瑞迪斯啊,对不对?这里有没有。所以说我们应该怎么办呢?咱们在启动的时候应该加个东西,加什么东西呢?我们首先把瑞迪斯还有什么呢?我们应该把瑞迪斯和我们这个叫叫什么呢?这个 zk 加过来。为什么?因为。