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

在公司用了1年的SpringCloud了,还是想系统化的深入了解下SpringCloud架构,前段时间看了下SpringBoot,感触非常深,想趁热打铁把SpringCloud的学习心得也写一写。

目前的项目呢用SpringCloud微服务框架,在开发之前呢,一般都要现学SpringBoot打好基础,那么Spring,SpringBoot,SpringCloud三者之间有什么关系呢,其实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. 扩展性不够,比如资金业务和商户业务其中一个使用多,一个使用少,你很难做到兼顾。

分布式定义:

旨在支持应用程序和服务的开发,可以利用物理架构由多个自治的处理元素,不共享主内存,但通过网络发送消息合作。

什么是多个自治的处理元素,就是多节点的意思。那么什么是分布式,什么是集群呢?举一个例子,一个厨房里面有两个厨师,一个炒菜,一个洗菜,这就是分布式,两个都炒菜,那么就是集群~

讲完这些定义后,我们看看一个图:

我们聊聊这个图里面的一些东西:

服务之间要通信,那么就必须要服务注册发现

服务网关:屏蔽后台细节,路由到具体微服务,限流,监控日志,安全,认证,授权,反爬虫,非常的关键!一个公司的系统好不好,只需要看服务网关如何就行了~

后端通用服务:也叫中间层服务。启动的时候会将服务注册到注册表里面去。

前端服务:也叫作边缘服务。通过查询注册表调用后端服务。它的主要作用是对后端的服务做聚合和裁剪后暴露给外端的服务。聚合:对多个API调用进行聚合,减少客户端对API的调用次数。什么是裁剪呢,比如说PC端和手机端在对服务进行调用的时候,返回的一些字段数量是不一样的。还有就是电脑上返回HTML,手机端返回JSON,这也是一种裁剪。银联的云闪付商户通APP在做查询交易的时候PC端和APP端的返回字段数量就是不一样的,这一点大家可以下载体验下。

从图中我们可以看到后端通用服务和前端服务是两个很大的模块,有没有办法帮他们瘦身呢?有的,目前国内有两大框架可以做到,一个是dubbo,还有一个就是我们接下来几篇文章要讲的核心东西SpringCloud。使用dubbo呢往往是做服务治理,zookeeper做注册中心。

SpringCloud是什么呢?它是一个开发工具集,包含了多个子项目,注意它不是自己开发这些子项目!这就是传说中的拿来主义吧。SpringCloud利用了SpringBoot的开发便利性,基于对NetFlix开源组件的进一步封装,简化了分布式的开发。NETFLIX这家公司呢,目前来说是公认在这方面做得最好的。

好了微服务的开端篇就讲到这里,有不足之处欢迎大家指正。

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值