微服务架构演变过程

微服务架构演变过程

传统单体架构——分布式架构——SOA面向服务架构——微服务架构模式

1、传统架构

传统的架构,也就是为单点应用,也就是大家在早期所学习的JavaEE知识SSH或者SSM架构模式,会采用分层架构模式:

  • com.wu.controller -->视图层
  • con.wu.dao/mapper --> 数据库访问层
  • com.wu.service --> 业务逻辑层

从前端到后台所有的代码都是一个开发者去完成。

该架构模式没有对我们业务逻辑代码实现拆分,所有的代码都写入到同一个工程中里面,适合于小公司开发团队或者个人开发。

该架构模式存在哪些优缺点:

  • 优点:开发简单、运维简单

  • 缺点:该架构模式没有对我们的业务逻辑实现拆分,所有的代码都写入到同一个项目中,只适合小团队或者个人形式开发,不适合团队模式协同工作开发。该架构模式最大的缺点,如果该系统一个模块出现不可用、会导致整个系统无法使用。

应用场景:政府项目、管理系统、crm、oa适合于个人小团队开发。

2、分布式架构

分布式架构模式是基于传统架构模式演变过来,将传统的单点项目根据业务模块实现拆分,会根据不同的业务实现拆分n多个不同子系统:

  • 会员系统
  • 订单系统
  • 支付系统
  • 秒杀系统
  • 交易系统

案例:京东官网

每个子系统中都有自己的团队来实现开发,具有独立数据库、独立缓存、独立mq。

从而降低我们项目的耦合度,这种架构模式开始慢慢的适合于互联网公司开发团队。

该架构模式存在哪些优缺点:

  • 优点: 可以实现解耦、如果某子系统宕机的情况下,不会影响其他的子系统,适合于多团队人数实现开发。

  • 缺点:部署比较复杂的、开发难度比较大、需要有团队沟通成本。

3、SOA面向服务架构

SOA架构模式也称作为:面向服务架构模式、俗称面向接口开发,将共同存在的业务逻辑抽取成一个共同的服务,提供给其他的服务接口实现调用、服务与服务之间通讯采RPC远程调用技术。

该架构模式的优缺点

  • 优点

    • 减少我们代码冗余性问题。
  • 缺点

    • 采用SOAP协议实现通讯,xml传输非常重,效率比较低。
    • 服务化管理和治理设施不够完善
    • 依赖与中心服务发现机制
    • 不适合于前后分离架构模式

SOA架构模式特点:

  • SOA架构通讯中,采用XML方式实现传输数据、在高并发下通讯过程中协议存在非常大冗余性,所以在最后微服务架构模式中使用JSON格式替代了XML。

  • SOA架构模式实现方案为Web Service或者是ESB企业服务总线 底层通讯协议SOAP协议(Http+XML)实现传输。

在这里插入图片描述

4、微服务架构

微服务架构产生的原因

微服务架构基于SOA架构演变过来的,在传统的WebService架构中有如下问题:

  • 依赖中心化服务发现机制

  • 使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常喜欢重,比较占宽带传输。

  • 服务化管理和治理设施不完善

微服务架构基本概念

  • 1.项目架构模式

    • 前后端分离
  • 2.粒度拆分:

    • 微服务架构模式是从SOA架构模式演变过来, 比SOA架构模式粒度更加精细,让专业的人去做专业的事情,目的是提高效率,每个服务与服务之间互不影响,微服务架构中
    • 每个服务必须独立部署、互不影响,微服务架构模式体现轻巧、轻量级、适合于互联网公司开发模式。
  • 3.协议:

    • 服务与服务通讯协议采用Http协议,使用restful风格API形式来进行通讯,数据交换格式轻量级json格式通讯,整个传输过程中,采用json,所以http协议可以跨语言平台,并且可以和其他不同的语言进行相互的通讯,所以很多开放平台都采用http协议接口。

在这里插入图片描述

微服务架构与SOA架构的不同

  • 微服务架构基于 SOA架构 演变过来,继承 SOA架构的优点,在微服务架构中去除 SOA 架构中的 ESB 企业服务总线,采用 http+json(restful)进行传输。

  • 微服务架构比 SOA 架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。

  • SOA 架构中可能数据库存储会发生共享,微服务强调独每个服务都是单独数据库,保证每个服务于服务之间互不影响。

  • 项目体现特征微服务架构比 SOA 架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。

微服务架构会产生哪些问题

优点:

  • 让专业的人做专业的事情,前后端分离架构模式,可以提高效率 适合于互联网敏捷开发模式。

缺点:

  • 部署、运维、管理非常复杂。

分布式事务解决方案(rabbitmq/rocketmq/lcn(已经淘汰)/ Seata)

分布式任务调度平台(XXL-Job、阿里Scheduler)

分布式日志采集系统ELk+Kafka

分布式服务注册中心 eureka、Zookeeper、consule、nacos等。

分布式服务追踪与调用链Zipkin等。

非常重要的概念:独立部署、docker/k8s/可配置、动态化

为什么我们要使用SpringCloud

SpringCloud并不是rpc远程调用框架,而是一套全家桶的微服务解决框架,理念就是解决我们在微服务架构中遇到的任何问题。

SpringCloud第一代与第二代的区别

SpringCloud第一代

  • SpringCloud Config 分布式配置中心

  • SpringCloud Netflix 核心5大组件

    • Eureka:服务治理
    • Hystrix:服务保护框架
    • Ribbon:客户端负载均衡器
    • Feign:基于ribbon和hystrix的声明式服务调用组件
    • Zuul: 网关组件,提供智能路由、访问过滤等功能。

SpringCloud第二代

  • Spring Cloud Gateway 网关

  • Spring Cloud Loadbalancer 客户端负载均衡器

  • Spring Cloud r4j(Resilience4J) 服务保护

  • Spring Cloud Alibaba Nacos 服务注册

  • Spring Cloud Alibaba Nacos 分布式配置中心

  • Spring Cloud Alibaba Sentinel服务保护

  • SpringCloud Alibaba Seata分布式事务解决框架

  • Alibaba Cloud OSS 阿里云存储

  • Alibaba Cloud SchedulerX 分布式任务调度平台

  • Alibaba Cloud SMS 分布式短信系统


版权声明:本文为wulei2921625957原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。