SpringCloud学习之旅1.微服务介绍

  在公司用了1年的SpringCloud了,还是想系统化的深入了解下SpringCloud架构,前段时间看了下SpringBoot,感触非常深,想趁热打铁把SpringCloud的学习心得也写一写。
  目前的项目用SpringCloud微服务框架,在开发之前呢,一般都要先学SpringBoot打好基础,那么Spring,SpringBootSpringCloud三者之间有什么关系呢,其实Spring作为JAVA EE的开发基石,一直很火热。SpringBoot对Spring做了很好的简化,提高了开发人员的开发效率,能够快速构建Spring应用,而且当时也在公司使用SpringBoot参加了编程比赛。SpringCloud建立在SpringBoot之上,它利用SpringBoot简化构建分布式应用。

什么是微服务

  2014年James和马丁两位大神提出了微服务,微服务是一种架构风格,就像restful一样,既然是一种架构风格,说明没有强制性,没有唯一的答案。

微服务的特性:

  1.一系列微小的服务共同组成
  2.跑在自己的进程里
  3.每个服务为独立的业务开发
  4.独立部署
  5.分布式的管理

在微服务之前,架构的演变

单体架构

  All in One就是一种单体架构,单体架构不是说他们不能分布式,而是说他的业务全部在一个项目工程里面,比如一个war包里面,它没有外部依赖,这个外部依赖不是指的maven的依赖,而是说业务逻辑的依赖,比如你的系统里面有资金业务,有商户业务,两种业务放在一个系统里面,那么就是一种单体架构。

 单体架构优点:

  1.容易测试,因为在本地就可以直接启动,不需要外部依赖
  2.容易部署,因为你可以把它打成一个war包直接放到tomcat容器中运行

 单体架构缺点:

  1.开发效率低,所有开发人员在一个项目里面开发
  2.代码维护难,等到新人来开发的时候就呵呵哒了
  3.部署不够灵活,这里说的部署和上面优点中说的部署不是一个概念, 而是说,你的代码修改一点,那么就要重新构建,还记得以前在阿里实习的时候一个工程改一点要构建15分钟,吓死人!为什么这里我还是要用部署这个词语呢,是想告诫入门者,在开发中,你总会遇到很多人把同一个词语用到不同的上下文,以后别人跟你说部署的时候,要分清语境。
  4.稳定性不高,因为一个大家族里面谁出了问题,直接团灭。
  5.扩展性不够,比如资金业务和商户业务其中一个使用多,一个使用少,你很难做到兼顾。

分布式定义:

  旨在支持应用程序和服务的开发,可以利用物理架构由多个自治的处理元素,不共享主内存,但通过网络发送消息合作。什么是多个自治的处理元素,就是多节点的意思。那么什么是分布式,什么是集群呢?举一个例子,一个厨房里面有两个厨师,一个炒菜,一个洗菜,这就是分布式,两个都炒菜,那么就是集群~
  讲完这些定义后,我们看看一个图:


我们聊聊这个图里面的一些东西:
  1.服务之间要通信,那么就必须要服务注册发现。

  2.服务网关:屏蔽后台细节,路由到具体微服务,限流,监控日志,安全,认证,授权,反爬虫,非常的关键!一个公司的系统好不好,只需要看服务网关如何就行了~
  3.后端通用服务:也叫中间层服务。启动的时候会将服务注册到注册表里面去。
  4.前端服务:也叫作边缘服务。通过查询注册表调用后端服务。它的主要作用是对后端的服务做聚合和裁剪后暴露给外端的服务。聚合:对多个API调用进行聚合,减少客户端对API的调用次数。什么是裁剪呢,比如说PC端和手机端在对服务进行调用的时候,返回的一些字段数量是不一样的。还有就是电脑上返回HTML,手机端返回JSON,这也是一种裁剪。银联的云闪付商户通APP在做查询交易的时候PC端和APP端的返回字段数量就是不一样的,这一点大家可以下载体验下。
  从图中我们可以看到后端通用服务和前端服务是两个很大的模块,有没有办法帮他们瘦身呢?有的,目前国内有两大框架可以做到,一个是dubbo,还有一个就是我们接下来几篇文章要讲的核心东西SpringCloud。使用dubbo呢往往是做服务治理,zookeeper做注册中心。

SpringCloud是什么

  它是一个开发工具集,包含了多个子项目,注意它不是自己开发这些子项目!这就是传说中的拿来主义吧。SpringCloud利用了SpringBoot的开发便利性,基于对NetFlix开源组件的进一步封装,简化了分布式的开发。NETFLIX这家公司呢,目前来说是公认在这方面做得最好的。
  好了微服务的开端篇就讲到这里,未来的时间里我们将重点介绍SpringCloud的以下模块,有不足之处欢迎大家指正。


你可能感兴趣的:(SpringCloud学习之旅1.微服务介绍)