SpringBoot_入门-微服务简介

前面我们介绍了Springboot,就不得不说他所处的大环境背景,微服务,什么是微服务呢,我们在这介绍一下,

微服务其实在2014年的时候,有一个人,叫martin fowler,但是他不是微服务的创始人,只是他发布了一个关于

微服务的博客,然后非常形象生动的,介绍了整个微服务的设计思想,然后微服务才慢慢的被熟知,就在他的个人

主页里边

https://martinfowler.com

这里有一篇关于微服务的文章,

https://martinfowler.com/microservices/

也就是这篇文章

"Microservices" became the hot term in 2014, attracting lots of attention as a new way to think about 

structuring applications. I'd come across this style several years earlier, talking with 

my contacts both in ThoughtWorks and beyond. It's a style that many good people find is 

an effective way to work with a significant class of systems. But to gain any benefit 

from microservice thinking, you have to understand what it is, how to do it, 

and why you should usually do something else.

大家可以慢慢来阅读,通过整片文章的介绍,我们就能知道,什么是微服务,当然我们就不详细的来读这个了,

What are Microservices?
In short, the microservice architectural style is an approach to developing a single application as 

a suite of small services, each running in its own process and communicating with lightweight 

mechanisms, often an HTTP resource API. These services are built around business capabilities 

and independently deployable by fully automated deployment machinery. There is a bare minimum of 

centralized management of these services, which may be written in different programming languages 

and use different data storage technologies.

-- James Lewis and Martin Fowler

微服务他其实是一个架构风格,比如14年的时候,martin fowler他来告诉我们,微服务他其实是一个架构风格,那么这种架构

风格,有什么不同呢,他在我们开发一个应用的时候,应该是小服务的组合,一个应用应该是一组小型服务,而这些小型服务呢,

每个服务都运行在自己的进程内,小型服务可以通过HTTP的方式,来进行沟通,轻量级的沟通方式,那么说起这个微服务,就得

说一下之前的架构,单体应用,就是大名鼎鼎的All in one,所有的东西都写在一个引用里边,比如就像我们这个样子,我们要

开发一个应用,不管是OA,CRM,ERP系统,我们以前都是来创建一个应用,将所有的页面,也放到这儿,包括代码也写在应用里面,

然后把整个应用打包,war包部署到tomcat里边,我们这个应用访问数据库,提供前端访问的页面,那么这应用就跑起来,这是我们

传统的WEB应用架构模式,而这种模式呢,也有非常多的优点,比如开发测试简单,由于都是一个应用,不牵涉到多个应用的互联

互调,所以我们开发和测试都非常简单,而我们这个部署也简单,我们想要把应用部署上去,只需要把一个应用打成一个war包,

就行了,然后把war包放到服务器上,不会给运维造成很大的困难,包括水平扩展,也是比较简单的,当我们应用的负载能力,

不行的时候,我们把相同的应用,我来复制上十几份,放在10几个服务器里边,那么我们十几个服务器,都来跑我们这个程序,

我们通过负载均衡机制,就可以来提高我们的并发能力,这个是我们以前单体应用,所有都在一个里面,他所带来的问题呢,

这个是牵一发而动全身的问题

有可能因为我们一个小小的修改,整个应用都得重新部署,都得重新运行,当然更大的挑战,是我们日益增长的

软件需求,我们现在随便一个应用,都有可能成为一个大型应用,而大型应用呢,不可能就一个应用,我们把它All

in one全写在里边,那这个应用有多大,该怎么维护,该怎么分工合作,这完全都是一些问题,所以接下来介绍微服务,

所谓的微服务,就是打破以前的传统方式,我们以前将所有的功能单元,放在一个应用里边,然后我们把整个应用,

部署到服务器上,如果负载能力不行,通过应用的水平复制,我把它扩展扩展,把同一份应用,复制过来,来进行访问,

但是我们微服务提倡的是什么呢,把每一个功能元素,应该独立出来,这独立出来以后呢,我们可以通过功能元素的

动态组合,比如我们这个功能元素,需要多一点,那我们在这个服务器里边,多放一点,这个少一点我们就少放一点,

通过这些元素的动态组合,包括某一些功能,只有在有需要的时候,才进行复制,我们只是功能元素级别的问题,没有

复制到整个应用,这样的话呢,一也是节省了我们的调用资源,我们把服务微化起来呢,每一个服务,都是一个可替换的,

可独立升级的

我们在这再说一下,每一个功能元素,最终都是一个可独立替换,和独立升级的软件代码,这就是我们说的,

这个微服务

服务到底有多微,Matin fowler在整个文章里面,也有谈及,他在这里与SOA进行了一个对比

https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa

从微服务的起源介绍,整个对比,对比介绍,包括服务我们要微化成什么样,这一块都会有提及,那我们详细

就不阅读了,包括这里也有一个中文的文档,大家来参照来阅读,服务微化其实是业内一直有争论的一个问题,

详细参照微服务文档,微服务最终架构起来的应用,应该向这个样子

微服务之间的组件该怎么工作呢,我们将每一个功能单元都独立出来,每一个功能单元,

比如这是结账,这是购物,这是用户模块,独立出来以后呢,接下来单元跟单元之间的互调,

通过HTTP方式,进行互联互调,这样我们整个功能单元,不断的微化,就形成了我们整个应用网,

那么这个应用网呢,功能单元和功能单元之间通过HTTP方式,进行轻量级通信,那么其实看到这个东西,

就感觉跟我们,大脑的神经元工作一样的,每一个神经元和神经元,连接起来,如果是这么一张连接网,

那我们后来可能会有一些问题,什么问题呢,那就是我们部署和运维,是相当不容易的,所以这就是一个

大型的分布式应用,对我们部署和运维,带来了非常大的挑战,更重要的呢,在这儿,我们每一个功能单元,

他都是一个完整的功能单元,比如这个功能单元,他来做一些缓存的,他需要来查缓存,他要连redis,这个功能

单元呢,他是需要练数据库的,那这个功能单元可能是连其他的,那怎么办呢,可能每一个功能单元,如果真让我们

来微化,创建这么多的项目,来微化这些服务的时候,那每一个项目呢,可能都是需要我们整合各种场景,如果按照

以前的方式,再来部建应用,那估计这么多模块,我们光创建项目,搭建环境,可能一个月都做不完,那接下来怎么办呢,

我们来到Springboot的官网,Spring的官网,Spring官网里面有一个经典的图,面对这么大型分布式的应用

我们怎么来构建一个应用,我们用Springboot,可以快速的来构建一个应用,然后这么大的分布式网之间,

该怎么互调呢,我们用SpringCloud,我们进行网状互联互调,我们整个分布式做出来,那包括在分布式中间,

要进行一些流式数据计算,Spring整个官方给我们想清楚了,应用的整个出路,从开始构建到大型分布式应用,

包括在SpringCloud里边,我们也有一些应用架构,都帮你考虑好了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值