一只会飞的旺旺
文章152
标签131
分类7
SpringCloud的前世今生ᅳ微服务的来历

SpringCloud的前世今生ᅳ微服务的来历

小卖铺上新啦!ChatGPT账号大甩卖! 一键直达

微服务的演变史

1.单体应用架构

在项目体量小的时候,所有的功能都放在一个工程中,并且打包部署在一个Tomcat容器中的架构模式就是单体应用架构.

image-20230213212353363

优点:

  • 架构简单,开发节奏快,易于小团队快速迭代
  • 易于测试部署,只需要通过单元测试和打包单一的jar启动即可

缺点:

  • 随着功能扩展,团队扩大,单个项目代码混乱,不适合多人共同维护.
  • 新增业务难度大,需要了解整个项目的逻辑,并且业务直接耦合度高,容易互相影响

2.垂直应用架构

为了避免单体架构中的问题,便开始对项目进行模块的垂直划分,基于业务特性做分割,实现业务之间的互不影响.

image-20230213212857425

优点:

  • 系统拆分实现流量分担,解决了并发问题
  • 单个模块直接的更新互不影响,方便水平扩展,负载均衡,容错率高.

缺点:

  • 服务之间互相调用,若ip或端口变动,则需要调整配置
  • 建立集群之后,实现负载均衡比较复杂,机器迁移可能会导致线上故障
  • 服务之间调用方式不统一,如httpclient,webservice等
  • 服务监控不到位,如调用成功率,失败率,耗时等

3.SOA应用架构

在使用垂直应用架构之后,随之而来的问题就是服务之间调用的问题,比如接口协议不统一,无法监控到服务状态,服务的负载均衡处理等.

这个时候,阿里巴巴开源的Dubbo出现了,一款高性能,轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现.

SOA(Service-Oriented Architecture)架构,即面向服务的架构,根据实际业务,将系统拆分成独立的模块,模块之间通过Dubbo,WebService等技术通信.

优点:

  • 分布式,解耦合,可扩展,可重用

缺点:

  • 服务抽取粒度较大,服务调用方和提供方耦合度较高

image-20230213220441735

4.微服务应用架构

相比SOA架构,粒度更细致,强调组件化,服务化.以及引入了SpringCloud微服务技术.

image-20230213220704771

优点:

  • 微服务很小,每个服务聚焦于特定业务,方便上手,以及重用组装
  • 微服务很独立,每个微服务可以使用不同的语言开发,松耦合
  • 微服务下,我们更容易引入新技术,以及实现DevOps开发运维一体化

缺点:

  • 微服务架构下,分布式复杂难以管理,当服务数量增多时,管理更加复杂
  • 分布式链路跟踪难

同时,微服务也引入了一些新的概念:

  • 服务注册与发现: 服务提供者提供服务的信息(服务器ip端口,访问协议等)注册到注册中心,而服务消费者则从注册中心获取到服务进行访问

image-20230213221422573

  • 负载均衡: 即将请求分配到多个服务器,数据库等.以此来提高服务的性能,可靠性

image-20230213221508509

  • 熔断: 即断路保护,当请求压力过大或者响应变慢失败时,上游服务为了保护系统整体可用性,可以暂时切断对下游服务的调用

image-20230213221614326

  • 链路追踪:当一次请求跨越多个服务时,我们只有详细的日志记录,性能监控,才能够在出现问题时进行排查解决.

image-20230213221733695

  • API网关: 为客户端调用微服务提供统一的地址,由API网关实现请求统一调用,流量控制,安全防护等功能.

image-20230213221857411

SpringCloud核心组件

Spring Cloud是⼀个微服务相关规范,这个规范意图为搭建微服务架构 提供⼀站式服务,采⽤组件(框架)化机制定义⼀系列组件,各类组件针对性的处 理微服务中的特定问题,这些组件共同来构成Spring Cloud微服务技术栈。

image-20230219141945960

image-20230219143020076

微服务架构面临的问题

  • 服务管理:⾃动注册与发现、状态监管
  • 服务负载均衡
  • 熔断
  • 远程过程调⽤
  • ⽹关拦截、路由转发
  • 统⼀认证
  • 集中式配置管理,配置信息实时⾃动更新
微信支付码 微信支付
支付宝支付码 支付宝支付