微服务演进史

1.微服务介绍

微服务是一种架构模式,是面向服务的体系结构(SOA)软件架构模式的一种演变,
它提倡将单一应用程序划分成一组松散耦合的细粒度小型服务,辅助轻量级的协议,互相协调、互相配合,为用户提供最终价值
所以,微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。

2.微服务演进史

2.1 单体应用

也就是大家在早期所学习的SSM架构模式
优点:
1、系统的简易性:系统语言风格、业务结构,接口格式均具有一致性,服务都是耦合在一起的,不存在各个业务通信问题。
2、易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,简化了测试过程,无需额外测试服务间的依赖,测试均可在部署完成后开始。
3、易于部署与升级:相对于微服务架构中的每个服务独立部署,单体系统只需将单个目录下的服务程序统一部署和升级。
4、较低的维护成本:只需维护单个系统即可。运维主要包括配置、部署、监控与告警和日志收集四大方面。相对于单体系统,微服务架构中的每个服务都需要独立地配置、部署、监控和日志收集,成本呈指数级增长。
缺点:
1、复杂性高:由于是一个单体的系统,所以整个系统的模块是耦合在一起的,模块的边界比较模糊、依赖关系错综复杂。功能的调整,容易带来不可知的影响和潜在的bug风险。
2、服务性能问题:单体系统遇到性能瓶颈问题,只能横向扩展,增加服务实例,进行负载均衡分担压力。无法纵向扩展,做模块拆分。
3、扩缩容能力受限:单体应用只能作为一个整体进行扩展,影响范围大,无法根据业务模块的需要进行单个模块的伸缩。
4、无法做故障隔离:当所有的业务功能模块都聚集在一个程序集当中,如果其中的某一个小的功能模块出现问题(如某个请求堵塞),那么都有可能会造成整个系统的崩溃。
5、发布的影响范围较大:每次发布都是整个系统进行发布,发布会导致整个系统的重启,对于大型的综合系统挑战比较大,如果将各个模块拆分,哪个部分做了修改,只发布哪个部分所在的模块即可。

2.分布式架构

商品中心
供应商系统
出入库
货架管理

**概念:**分布式架构是一种系统设计方式,其中组件分布在不同的网络计算机上,这些组件通过通信协议协同工作,共同构成一个完整的应用程序。它强调的是系统组件在物理位置上的分离和独立性和稳定性.
**目标:**主要目标包括提高系统的可扩展性、容错性、性能和资源利用效率。通过将不同的服务部署在不同的服务器上,可以实现负载均衡、故障隔离和水平扩展。
**特点:**分布式系统可能包含多种架构风格,如微服务、SOA等,它更侧重于系统部署和资源管理的策略
该架构模式存在哪些优缺点:
优点: 可以实现解耦、如果某子系统宕机的情况下,不会影响其他的子系统,适合于多团队人数实现开发。
缺点:部署比较复杂的、开发难度比较大、需要有团队沟通成本。

3、SOA面向服务架构

**概念:**SOA是一种设计原则,它将应用程序构建为一系列相互独立的服务,每个服务都封装了一定的业务逻辑,服务之间通过定义良好的接口和协议相互通信,服务间的交互不涉及底层编程接口或通信协议的细节。
**目标:**SOA的核心目标是提高系统的灵活性、可重用性和可维护性。通过将业务功能抽象成服务,使得服务可以在不同的应用程序中复用,降低了系统的耦合度,便于系统升级和维护。
缺点: 采用SOAP协议实现通讯,xml传输非常重,效率比较低。服务化管理和治理设施不够完善,依赖与中心服务发现机制,不适合于前后分离架构模式.
SOA架构模式特点:
SOA架构通讯中,采用XML方式实现传输数据、在高并发下通讯过程中协议存在非常大冗余性,所以在最后微服务架构模式中使用JSON格式替代了XML。
SOA架构模式实现方案为Web Service或者是ESB企业服务总线 底层通讯协议SOAP协议(Http+XML)实现传输。
在这里插入图片描述

4、微服务架构

微服务架构产生的原因
微服务架构基于SOA架构演变过来的,在传统的WebService架构中有如下问题:
依赖中心化服务发现机制
使用Soap通讯协议,通常使用XML格式来序列化通讯数据,xml格式非常重,比较占宽带传输。
服务化管理和治理设施不完善
微服务架构与SOA架构的不同
微服务架构基于 SOA架构 演变过来,继承 SOA架构的优点,在微服务架构中去除 SOA 架构中的 ESB 企业服务总线,采用 http+json(restful)进行传输。
微服务架构比 SOA 架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。
SOA 架构中可能数据库存储会发生共享,微服务强调独每个服务都是单独数据库,保证每个服务于服务之间互不影响。
项目体现特征微服务架构比 SOA 架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。
微服务是一种架构模式,是面向服务的体系结构(SOA)软件架构模式的一种演变,
它提倡将单一应用程序划分成一组松散耦合的细粒度小型服务,辅助轻量级的协议,互相协调、互相配合,为用户提供最终价值
所以,微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常包含如下特点:

4.1 单一职责

微服务架构中的每个节点高度服务化,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,包括数据库和数据模型;
不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。

4.2 轻量级通信

通过REST API模式或者RPC框架,实现服务间互相协作的轻量级通信机制。

4.3 独立性

在微服务架构中,每个服务都是独立的业务单元,与其他服务高度解耦,只需要改变当前服务本身,就可以完成独立的开发、测试、部署、运维。

4.4 进程隔离

在微服务架构中,应用程序由多个服务组成,每个服务都是高度自治的独立业务实体,可以运行在独立的进程中,不同的服务能非常容易地部署到不同的主机上,实现高度自治和高度隔离。
进程的隔离,还能保证服务达到动态扩缩容的能力,业务高峰期自动增加服务资源以提升并发能力,业务低谷期则可自动释放服务资源以节省开销。

4.5 混合技术栈和混合部署方式

团队可以为不同的服务组件使用不同的技术栈和不同的部署方式(公有云、私有云、混合云)。

4.6 简化治理

组件可以彼此独立地进行扩缩容和治理,从而减少了因必须缩放整个应用程序而产生的浪费和成本,因为单个功能可能面临过多的负载。

4.7 安全可靠,可维护。

从架构上对运维提供友好的支撑,在安全、可维护的基础上规范化发布流程,支持数据存储容灾、业务模块隔离、访问权限控制、编码安全检测等。

3.常见微服务架构

  1. dubbo: zookeeper + SpringMVC/SpringBoot
    配套 通信方式:rpc
    注册中心:zookeeper / redis
    配置中心:diamond
    2.SpringCloud:全家桶+轻松嵌入第三方组件(Netflix)
    配套 通信方式:http restful
    注册中心:eruka / consul /nacos
    配置中心:config / nacos
    断 路 器:hystrix / Sentinel
    网关:zuul / GateWay
    分布式追踪系统:sleuth + zipkin
    4.Spring Cloud Alibaba 介绍
    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发微服务架构的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发微服务架构。
    依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。
    在这里插入图片描述
    https://spring.io/projects/spring-cloud-alibaba

既然说 Spring Cloud 是标准,那么自然少不了针对标准的实现。这里,为大家介绍下 Spring Cloud Alibaba 这套实现。先给出下面这张图帮助大家理解 Spring Cloud Alibaba 的定位:
在这里插入图片描述
Spring Cloud 作为一套标准,它的实现肯定不止一套,那么各套实现都有什么区别呢?我们来一起看一下下面这张图:
在这里插入图片描述
可以发现 Spring Cloud Alibaba 是所有的实现方案中功能最齐全的。尤其是在 Netflix 停止更新了以后,Spring Cloud Alibaba 依然在持续更新和迭代。
在这里插入图片描述
5.版本说明
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
在这里插入图片描述

<spring.boot.version>2.3.11.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>

6.脚手架
https://start.aliyun.com/bootstrap.html
在这里插入图片描述

相关推荐

  1. 1、架构-服务架构演进

    2024-04-24 16:46:01       10 阅读
  2. 服务架构 | 架构演进

    2024-04-24 16:46:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 16:46:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 16:46:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 16:46:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 16:46:01       20 阅读

热门阅读

  1. docker 故障解决

    2024-04-24 16:46:01       15 阅读
  2. bash test.sh 2>&1 &是什么意思?

    2024-04-24 16:46:01       38 阅读
  3. 国产系统注意事项

    2024-04-24 16:46:01       12 阅读
  4. centos常见命令及进阶命令

    2024-04-24 16:46:01       18 阅读
  5. IaC:实现持续交付和 DevOps 自动化的关键

    2024-04-24 16:46:01       51 阅读
  6. Docker搭建Mylar

    2024-04-24 16:46:01       16 阅读
  7. [docker] 多容器项目

    2024-04-24 16:46:01       49 阅读