架构演变

传统架构

传统的架构,也就是为单点应用,也就是大家在早期所学习的JavaEE知识SSH或者SSM架构模式,会采用分层架构模式:数据库访问层、业务逻辑层、控制层,从前端到后台所有的代码都是一个开发者去完成。
该架构模式没有对我们业务逻辑代码实现拆分,所有的代码都写入到同一个工程中里面,适合于小公司开发团队或者个人开发。
这种架构模式最大的缺点,如果该系统一个模块出现不可用、会导致整个系统无法使用。

架构演变_第1张图片

分布式架构

分布式架构模式是基于传统的架构模式演变过来,将传统的单点项目根据业务模块实现拆分、会拆分为会员系统、订单系统、支付系统、秒杀系统等。 从而降低我们项目的耦合度,这种架构模式开始慢慢的适合于互联网公司开发团队。

SOA面向服务架构

SOA面向服务架构就是基于我们的分布式架构演变过来的,俗称服务化,也就是面向于接口开发(服务开发)。
SOA架构模式也称作为:面向服务架构模式、俗称面向与接口开发,将共同存在的业务逻辑抽取成一个共同的服务,提供给其他的服务接口实现调用、服务与服务之间通讯采用rpc远程调用技术。

SOA架构模式特点:

  • SOA架构通讯中,采用XML方式实现通讯、在高并发下通讯过程中协议存在非常大冗余性,所以在最后微服务架构模式中使用JSON格式替代了XML。
  • SOA架构模式实现方案为WebService或者是ESB企业服务总线 底层通讯协议SOAP协议(Http+XML)实现传输。
    架构演变_第2张图片

ESB企业服务总线

解决多系统之间跨语言无法实现通讯的问题,数据协议的转换,提供可靠消息传输。

微服务架构

微服务架构产生的原因

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

  • 依赖中心化服务发现机制
  • 使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常喜欢重,比较占宽带传输。
  • 服务化管理和治理设施不完善
  • 不适合前后端分离架构模式
微服务架构基本概念

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

微服务架构倡导应用程序设计程多个独立、可配置、可运行和可微服务的子服务。
服务与服务通讯协议采用Http协议,使用restful风格API形式来进行通讯,数据交换格式轻量级json格式通讯,整个传输过程中,采用二进制,所以http协议可以跨语言平台,并且可以和其他不同的语言进行相互的通讯,所以很多开放平台都采用http协议接口。

架构演变_第3张图片
架构演变_第4张图片
微服务架构与SOA架构的不同

1.微服务架构基于 SOA架构 演变过来,继承 SOA架构的优点,在微服务架构中去除 SOA 架构中SOAP协议和 ESB 企业服务总线,采用 http+json(restful)进行传输。
2.微服务架构比 SOA 架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。
3.SOA 架构中可能数据库存储会发生共享,微服务强调独每个服务都是单独数据库,保证每个服务于服务之间互不影响。
4.项目体现特征微服务架构比 SOA 架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。

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

分布式事务解决方案(rabbitmq/rocketmq/lcn(已经淘汰)/ Seata)
分布式任务调度平台(XXL-Job、阿里Scheduler)
分布式日志采集系统ELK+Kafka
分布式服务注册中心 eureka、Zookeeper、consule、nacos等。
分布式服务追踪与调用链Zipkin等。
分布式服务配置中心(springcloud config/携程阿波罗/nacos/disconfig)

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

为什么我们要使用SpringCloud

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

SpringCloud第一代与第二代的区别

架构演变_第5张图片
SpringCloud第一代实际上都是用的Netflix开源的组件整合微服务解决方案。
  • SpringCloud Config 分布式配置中心
  • SpringCloud Netflix 核心组件
  • 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 分布式短信系统
为什么Alibaba要推出SpringCloud组件

目的就是为了对阿里云的产品实现扩展。

你可能感兴趣的:(分布式,java,数据库,大数据,编程语言)