AlibabaCloud笔记 第⼀章 微服务概念

该系列笔记配套视频地址: https://www.bilibili.com/video/BV19T411M787

1.1 单体、分布式、集群

单体
⼀个系统业务量很⼩的时候所有的代码都放在⼀个项⽬中就好了,然后这个项⽬部署在⼀台服务器上就好了。整个项⽬所有的服务都由这台服务器提供。这就是单机结构。

单体应⽤开发简单 , 部署测试简单 . 但是存在⼀些问题 , ⽐如 : 单点问题 , 单机处理能⼒有限 , 当你的业务增⻓到
⼀定程度的时候,单机的硬件资源将⽆法满⾜你的业务需求。
分布式
由于整个系统运⾏需要使⽤到 Tomcat MySQL ,单台服务器处理的能⼒有限 ,2G 的内存需要分配给Tomcat和 MySQL 使⽤,随着业务越来越复杂,请求越来越多 . 内存越来越不够⽤了,所以这时候我们就需要进⾏分布式的部署.
我们进⾏⼀个评论的请求,这个请求是需要依赖 分布 在两台不同的服务器的组件 [Tomat MySQL], 才能 完成的. 所以叫做分布式的系统 .
集群
在上⾯的图解中其实是存在问题的,⽐如 Tomcat 存在单点故障问题,⼀旦 Tomcat 所在的服务器宕机不可⽤了,我们就⽆法提供服务了, 所以针对单点故障问题,我们会使⽤集群来解决 . 那什么是集群模式呢 ?
单机处理到达瓶颈的时候,你就把单机复制⼏份,这样就构成了⼀个 集群 。集群中每台服务器就叫做这个集群的⼀个“ 节点 ,所有节点构成了⼀个集群。每个节点都提供相同的服务,那么这样系统的处理能⼒就相当于提升了好⼏倍(有⼏个节点就相当于提升了这么多倍)。
但问题是⽤户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较⼩的节点来处理,这样使得每个节点的压⼒都⽐较平均。要实现这个功能,就需要在所有节点之前增加⼀个“ 调度者 的⻆⾊,⽤户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者 有个⽜逼了名字 —— 负载均衡服务器.

我们在上⾯的图中仅展示了Tomcat的集群,如果MySQL压⼒⽐较⼤的情况下,我们也是可以对MySQL进⾏集群的.

1.2 系统架构演变

随着互联⽹的发展,⽹站应⽤的规模也不断的扩⼤,进⽽导致系统架构也在不断的变化。
从互联⽹早起到现在,系统架构⼤体经历了下⾯⼏个过程 : 单体应⽤架构 ---> 垂直应⽤架构 ---> 分布
式架构 --->SOA 架构 ---> 微服务架构。
接下来我们就来了解⼀下每种系统架构是什么样⼦的, 以及各有什么优缺点。
1.2.1 单体应⽤架构
互联⽹早期,⼀般的⽹站应⽤流量较⼩,只需⼀个应⽤,将所有功能代码都部署在⼀起就可以,这
样可以减少开发、部署和维护的成本。
⽐如说⼀个电商系统,⾥⾯会包含很多⽤户管理,商品管理,订单管理,物流管理等等很多模块,
我们会把它们做成⼀个 web 项⽬,然后部署到⼀台 tomcat 服务器上。

优点:
  • 项⽬架构简单,⼩型项⽬的话, 开发成本低
  • 项⽬部署在⼀个节点上, 维护⽅便
缺点:
  • 全部功能集成在⼀个⼯程中,对于⼤型项⽬来讲不易开发和维护
  • 项⽬模块之间紧密耦合,单点容错率低
  • ⽆法针对不同模块进⾏针对性优化和⽔平扩展
1.2.2 垂直应⽤架构
        随着访问量的逐渐增⼤,单⼀应⽤只能依靠增加节点来应对,但是这时候会发现并不是所有的模块
都会有⽐较⼤的访问量 .
        还是以上⾯的电商为例⼦, ⽤户访问量的增加可能影响的只是⽤户和订单模块, 但是对消息模块的影响就⽐较⼩. 那么此时我们希望只多增加⼏个订单模块, ⽽不增加消息模块 . 此时单体应⽤就做不到了, 垂直应⽤就应运⽽⽣了.
        所谓的垂直应⽤架构,就是将原来的⼀个应⽤拆成互不相⼲的⼏个应⽤,以提升效率。⽐如我们可以将上⾯电商的单体应⽤拆分成 :
  • 电商系统(⽤户管理 商品管理 订单管理)
  • 后台系统(⽤户管理 订单管理 客户管理)
  • CMS系统(⼴告管理 营销管理)
这样拆分完毕之后,⼀旦⽤户访问量变⼤,只需要增加电商系统的节点就可以了,⽽⽆需增加后台
CMS 的节点。
优点:
  • 系统拆分实现了流量分担,解决了并发问题,⽽且可以针对不同模块进⾏优化和⽔平扩展
  • ⼀个系统的问题不会影响到其他系统,提⾼容错率
缺点:
  • 系统之间相互独⽴, ⽆法进⾏相互调⽤
  • 系统之间相互独⽴, 会有重复的开发任务
1.2.3 分布式架构
        当垂直应⽤越来越多, 重复的业务代码就会越来越多. 这时候, 我们就思考可不可以将重复的代码抽取出来, 做成统⼀的业务层作为独⽴的服务, 然后由前端控制层调⽤不同的业务层服务呢? 这就产⽣了新的分布式系统架构. 它将把⼯程拆分成表现层和服务层两个部分, 服务层中包含业务逻辑, 表现层只需要处理和⻚⾯的交互, 业务逻辑都是调⽤服务层的服务来实现.

 

优点
  • 抽取公共的功能为服务层,提⾼代码复⽤性
缺点
  • 系统间耦合度变⾼,调⽤关系错综复杂,难以维护
1.2.4 SOA 架构
        在分布式架构下,当服务越来越多,容量的评估,⼩服务资源的浪费等问题逐渐显现,此时需增加⼀个调度中⼼对集群进⾏实时管理。此时,⽤于资源调度和治理中⼼(SOA Service Oriented
Architecture ,⾯向服务的架构 ) 是关键。

优点 :
  • 使⽤注册中⼼解决了服务间调⽤关系的⾃动调节
缺点 :
  • 服务间会有依赖关系,⼀旦某个环节出错会影响较⼤( 服务雪崩 )
  • 服务关系复杂,运维、测试部署困难
1.2.5 微服务架构
        微服务架构在某种程度上是⾯向服务的架构SOA 继续发展的下⼀步,它更加强调服务的 "彻底拆分"

优点
  • 服务原⼦化拆分,独⽴打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
  • 微服务之间采⽤RESTful等轻量级Http协议相互调⽤
缺点
  • 分布式系统开发的技术成本⾼(容错、分布式事务等)

1.3 微服务架构介绍

        微服务架构, 简单的说就是将单体应⽤进⼀步拆分,拆分成更⼩的服务,每个服务都是⼀个可以独⽴运⾏的项⽬。
微服务架构的常⻅问题
⼀旦采⽤微服务系统架构,就势必会遇到这样⼏个问题:
  • 这么多⼩服务,如何管理他们?
  • 这么多⼩服务,他们之间如何通讯?
  • 这么多⼩服务,客户端怎么访问他们?
  • 这么多⼩服务,⼀旦出现问题了,应该如何⾃处理?
  • 这么多⼩服务,⼀旦出现问题了,应该如何排错?
对于上⾯的问题,是任何⼀个微服务设计者都不能绕过去的,因此⼤部分的微服务产品都针对每⼀
个问题提供了相应的组件来解决它们。

1.4 SpringCloud介绍

        Spring Cloud是⼀系列框架的集合。它利⽤ Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施 的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤SpringBoot的开发⻛格做到⼀键启动和部署。
        Spring Cloud并没有重复制造轮⼦,它只是将⽬前各家公司开发的⽐较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot ⻛格进⾏再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了⼀套简单易懂、易部署和易维护的分布式系统开发⼯具包。
1.4.1 SpringBoot SpringCloud 有啥关系 ?
  • SpringBoot专注于快速⽅便的开发单个个体微服务。
  • SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的⼀个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、事件总线、分布式事务、等等集成服务。
总结 : SpringBoot 专注于快速、⽅便的开发单个微服务个体, SpringCloud 关注全局的服务治理组件的集合。
1.4.2 SpringCloud 版本名称 ?
        
        因为Spring Cloud不同其他独⽴项⽬,它是拥有很多⼦项⽬的⼤项⽬。所以它是的版本是
版本名 + 版本号 (如Greenwich.SR6 )。
版本名:是伦敦的地铁名
版本号: SR Service Releases )是固定的 , ⼤概意思是稳定版本。后⾯会有⼀个递增的数字。
所以 Greenwich.SR6 就是 Greenwich 的第 6 Release 版本。
1.4.3 为什么选择 SpringCloud Alibaba
        我们这⾥为什么选择SpringCloud Alibaba 呢,主要因为 SpringCloud Netflix 的组件:服务注册与发现的Eureka、服务限流降级的 Hystrix 、⽹关 Zuul 都已经停⽌更新了,当然继续使⽤是没问题的,只是出现问题,官⽅不维护,需要⾃⾏解决.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值