00:00
好,前面呢,我们介绍了一下spring boot,那么说起这个spring boot,我们就不得不说一下它所处的大时代背景,微服务。什么是微服务呢?我们来在这儿介绍一下。第二个微服,微服其实早在2014年的时候,有一个人叫Martin。诶,就是他,但他不是微服务的创始人,只不过呢,他发表了一篇关于微服务的博客,然后呢,非常形象生动的介绍了整个微服务的一些设计思想以及一些理念,然后微服务才慢慢的被人所熟知,好,我们这个marin洛就在他的这个个人主页里边,诶这有一篇关于微服务的文章,也就是这篇文章,大家可以慢慢来阅读。通过整篇文章的介绍,我们就能知道什么是微服务,当然我们就不详细的来读这个了,我们来做一个简单的这个经验讲解,哎,就是这一块,什么是微服务呢?它这个微服务呢,它其实是一种架构风格。
01:11
哎,比如说这个一四年的时候Martin。他来告诉我们,诶微服务它其实呢是一种架构风格,那么这种架构风格有什么不同呢?它呢提倡我们在开发一个应用的时候,这个应用呢,应该是作为哎一系列咱们这个小服务的组合,所以说呢,它应该是一组小型服务一个应用。应该是一组小型服务。小型服务,而这些小型服务呢,哎,每一个服务都运行在自己的这个进程内,我们这些小型服务呢,可以通过HTTP的方式来进行沟通,比如轻量级的这种沟通方式,哎,这个小型服务可以通过。
02:09
通过咱们这个HTTP的方式。进行。互通,那么说起这个微服,我们就得说一下我们之前的一种架构,叫单体应用,所谓的单体应用,也就是大名鼎鼎的o one,对吧?而所有的东西我们都写在一个应用里边,比如就像我们这个样子,我们要开发一个应用,不管是oacrm或者什么ERP系统,我们呢,以前都是来创建一个应用,将所有的页面,哎,我们也放在这,包括呢,我们代码也都写在这个应用里边,然后呢,我们把整个应用打包,打成这个袜包,部署在tomcat里边。我们这个应用呢,访问数据库,哎,提供咱们这个前端访问的页面等等,那么这个应用就跑起来,这是我们传统的web应用的架构模式,但这种模式呢,也有非常多的优点,比如开发测试简单,因为都是一个应用,不牵扯到多个应用之间的互联互调,所以呢,我们这个开发和测试都会简单,而我们这个部署呢也简单,我们想要把应用部署上去,只需要把整个应用打成一个画包就行了,然后呢,把这个袜包放在抛不开的服务器上,不会给运维带来太大的困难。包括呢,我们这个扩展水平,扩展也是比较简单来,当我们这个应用的负载能力不行的时候,我们把相同的应用我来复制上十几份,哎,我来复制上十几份,放在我们十几个服务器里边,那我们这十几个服务器都来跑我们这个程序,哎,我们通过负载均衡机制就可以来提高我们的。
03:55
并发能力,但这是我们以前单体营所有都在一个里边,它所带来的问题呢,就是哎,大家一下就能感觉到,这是一个牵引发而动全身的问题,有可能因为我们一个小小的修改,我们整个应用呢,都得重新部署或者重新来运行,当然更大的挑战其实是我们日益增长的软件需求,我们现在呢,随便一个应用,我们都可能要成为一个大型应用,而大型应用呢,我们不可能就一个应用,我们把它o one全都写在里边,那这个应用到底有多大,该怎么维护,该怎么分工合作,这完全都是一些问题。所以呢,我们接下来介绍咱们这个微服务,所有的微服务就是打破以前的传统方式,我们以前呢,将所有的功能单元,哎,我们放在一个应用里边,然后呢,我们把整个应用部署到服务器上,如果负载能力不行,我们通过。
04:55
把整个应用的水平复制,哎,我把它扩展扩展扩展扩展就是呢,把同一份应用我复制过来来进行访问,但是呢,我们微服务提倡的是什么呢?我们把每一个功能元素应该独立出来,这个独立出来以后呢,我们可以通过功能元素的动态组合,诶比如我们这个功能元素,哎,需要多一点呢,那么在这个服务器里边多放一点,那这个少一点呢,我们少放一点等等,我们通过这些元素的动态组合,包括呢,某一些功能只有在有需要的时候才进行复制,我们只是功能元素级别的复制,没有复制到整个应用,这样的话呢,哎,一也是节省了我们整个调动资源。第二个呢,我们把服务规划起来呢,每一个服务都应该是一个可替换的,可独立升级的软件办人。
05:51
好,我们在这儿来说一下每一个功能元素。最终。都是一个可独立替款。
06:06
呵。独立升级的。软件单元。这就是我们说的这个微服。当然,服务到底有多微,我们要怎么危化他们,那么马汀洛呢,在整个文章里边也有谈及,特别是咱们,他在这一块呢,与OA也进行了一些对比,来打开这个页面。这里边呢,整篇文章也就是说呢,给我们从微服务的啊起源介绍,一直到OV的整个对比,以及跟其他啊方式的一些对比介绍,包括服务我们到底要规划成什么样,这一块呢都会有提及,那我们详细呢就不阅读了,包括呢,这也有一个中文的这个文档,就是呢,大家来参照这个文档仔细来阅读就行了,因为这个服务规划其实一直是业内在有争论的一个问题。
07:06
好,详细参照咱们这个微服务文档。啊。哎,这个怎么才一个字。好,详细参照呢,我们这个微服务文档大家来看就行了,好,那微服务呢,最终架构起来的应用整体的应该像这个样子,诶我们micro service微服之间的组件该怎么工作呢?我们将每一个功能单元都独立出来,每一个功能单元,每一个功能单元,每一个功能单元,比如这是结账,诶这是呢,咱们这个购物,哎,这是咱们这个用户模块,那怎么办呢?独立出来以后呢,我们接下来单元跟单元之间的互调,我们通过HTP方式进行互联互调,这样呢,我们整个功能单元,哎我们不断的微化,就形成了我们整个应用网,那么这个应用网呢,功能单元跟功能单元之间,我们通过HD方式进行轻量级通信,那么其实看到这个东西,这就感觉跟我们啊,大脑的神经元工作一样,每一个神经元,每一个神经元哎之间呢,他们有这个神经纤维来连接起来那。
08:22
我们如果是这样一张大的这个功能单元连接网,那我们后来可能会有一些问题,什么问题呢?那就是我们这个。部署和运维是相当不容易的,所以呢,这其实就是一个大型的分布式应用,对我们部署和运维带来了非常大的挑战,当然更重要的呢,是在这我们每一个功能单元,它都是一个完整的功能单元,比如这个功能单元它是来做一些缓存的,那么他需要来查缓存,它要连red release,那这个功能单元呢,它是要连数据库的,那这个功能单元呢,它可能是些其他的啊应用,那怎么办呢?可能每一个功能单元如果真让我们来规划,我们来创建这么多的项目,来规划这些服务的时候,那每一个项目呢,可能都是要我们整合各种场景,如果按照以前的方式再来构建应用,那估计这么多模块,哎,我们光创建项目,搭建环境可能一个月都做不完,那接下来怎么办呢?诶,我们来到spring BOO的官网,Spring的官网,Spring官网里边呢,有一个经典的图,面对这么大。
09:35
屏分布式的应用,我们怎么样先来构建出我们一个应用,来我们用spring BOO可以快速的帮我们来构建一个应用,然后呢,整个应用的这么大型的分布式网之间,我们该怎么互调呢?来我们用spring cloud那们进行网状互联互调,把我们整个应用分布式来做出来,那么包括在分布式中间,我们要进行一些流式数据计算批处理,怎么办呢?Cloud data flow比呢,Spring spring整个官方为我们想清楚了我们应用的整个出路,从开始构建到大型分布式应用,哎,包括呢,在spring cloud里边,哎,我们也有一些应用架构,人家都帮你来考虑好了,好,这个呢,我们就后续来说,这就是我们这个微服务也要说呢,面对这些,我们用spring boot可以快速的构建一个微服务单元。
我来说两句