微服务架构演变过程(下) | 带你读《Spring Cloud Alibaba(2019)》之二

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 本节主要介绍了微服务架构演变过程:传统单体架构——分布式架构——SOA面向服务架构——微服务架构模式。

上一篇:微服务架构演变过程(上) | 带你读《Spring Cloud Alibaba(2019)》之一
下一篇:详解Nacos的产生与应用 | 带你读《Spring Cloud Alibaba(2019)》之三

本文来自于《精通Spring Cloud Alibaba》课程的整理,讲师为余胜军,点击查看视频内容
本文系志愿者整理,供配合学习中心课程使用,不做商业用途。

微服务架构演变过程

微服务架构

微服务架构产生的原因

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

  1. 依赖中心化服务发现机制
  2. 使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常喜欢重,比较占宽带传输。
  3. 服务化管理和治理设施不完善

微服务架构模式

SOA架构模式存在哪些缺点:
1、采用SOAP协议实现通讯,xml传输非常重,效率比较低。
2、服务化管理和治理设施不够完善
3、依赖与中心服务发现机制
4、不适合于前后分离架构模式

前端分离技术就是对我们控制层和业务层逻辑实现区分,前端控制可以采用vue调用我们后端接口(http+json)。

微服务架构基本概念

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

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

image.png
image.png

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

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

ESB企业服务总线:解决多系统之间跨语言无法实现通讯的问题,对我们数据协议实现转换,可以提供可靠的消息传输,第三方框架实现。
一般情况下都是采用Http+JSON格式传输,所以没有必要使用ESB企业服务总线。

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

分布式事务解决方案(rabbitmq、rocketmq事务消息、lcn(已经淘汰) 、setata)最终一致性概念。
分布式任务调度平台(XXL-Job、Alibaba Cloud Scheduler、elastic-job) .
分布式服务注册与发现(eureka、consul、zookeeper、Nacos)
分布式日志采集系统elk+kafka
分布式服务追踪与调用链系统Zipkin。
分布式服务配置中心(springcloud config/携程阿波罗/nacos/disconfig)

在微服务架构中非常重要的概念:独立部署、可配置、动态化

为什么我们要使用SpringCloud

SpringCloud并不是rpc远程调用框架,而是一套全家桶的微服务解决框架,理念就是解决我们在微服务架构中遇到的任何问题。
服务治理:eureka
分布式配置:config
客户端调用工具rest/feign客户端 rpc远程调用

注意:大家如果去一些比较大型的互联网公司中,整个公司内部实现rpc通讯的框架、服务治理都是内部自己研发。

Rpc远程调用框架有哪些?
Httpclient、dubbo、feign、grpc、基于netty手写rpc

SpringCloud第一代与第二代的区别

image.png

SpringCloud第一代:
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组件

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

SpringCloud与Spring Cloud Alibaba的区别

Spring Cloud Alibaba实际上对SpringCloud实现了拓展组件能够完美整合到SpringCloud rpc远程调用整合。
1、nacos分布式注册中心,分布式配置中心SpringCloudEureka+Config组合
2、目的是为了推广阿里云产品,如果使用了Spring Cloud Alibaba建议最好使用Alibaba Mq rocketmq
如果进行分布式任务调度,采用Alibaba Cloud SchedulerX

总结:Spring Cloud Alibaba实际上对我们的SpringCloud做拓展组件开发naoocs、setata分布式解决框架、SchedulerX、Alibaba Cloud OSS等,目的推广阿里云产品。

相关文章
|
12天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
12天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
116 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
9天前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
118 13
Spring Cloud Alibaba:一站式微服务解决方案
|
14天前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
45 8
|
16天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
59 5
|
18天前
|
消息中间件 运维 Kubernetes
后端架构演进:从单体到微服务####
本文将探讨后端架构的演变过程,重点分析从传统的单体架构向现代微服务架构的转变。通过实际案例和理论解析,揭示这一转变背后的技术驱动力、挑战及最佳实践。文章还将讨论在采用微服务架构时需考虑的关键因素,包括服务划分、通信机制、数据管理以及部署策略,旨在为读者提供一个全面的架构转型视角。 ####
31 1
|
21天前
|
弹性计算 运维 开发者
后端架构优化:微服务与容器化的协同进化
在现代软件开发中,后端架构的优化是提高系统性能和可维护性的关键。本文探讨了微服务架构与容器化技术如何相辅相成,共同推动后端系统的高效运行。通过分析两者的优势和挑战,我们提出了一系列最佳实践策略,旨在帮助开发者构建更加灵活、可扩展的后端服务。
|
21天前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####
|
11天前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
26 0
|
19天前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
47 0