微服务简介和发展史

453 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

1 什么是微服务

  1. 微服务是由单一应用构成的小服务
  2. 拥有自己的进程并且做了一些轻量化处理。
  3. 服务依赖业务功能设计,并且是全自动的方式进行部署。
  4. 服务与服务之间是可以通过http服务进行通信的。
  5. 服务可以用不同的编程语言与数据库等组件实现。

2 服务的演变

2.1 单体架构

把所有的功能都集中在一个应用

  • 优点
    • 项目架构简单
    • 开发成本低
    • 项目都在一个节点上维护方便
  • 缺点
    • 模块紧凑耦合
    • 单点容错率低
    • 无法针对不同的模块进行独立优化和水平扩展

2.2 垂直架构

将单体架构拆分为多个应用来同时提供服务。

  • 优点
    • 实现了流量分担
    • 解决了一定的并发问题
    • 可以针对不同模块进行优化和水平扩展
    • 不同的系统之间不会互相影响,提高了容错率
  • 缺点
    • 系统之间互相独立存在,无法进行相互调用,例如同一个商城系统,则有用户系统,管理员系统
    • 系统之间相互独立,会造成一部分功能的冗余,每个系统都有登录功能,则多个登录功能冗余

2.3 分布式架构

随着业务的增加,垂直应用架构中的冗余代码越来越多,则需要将冗余的代码部分抽取出来,统一做成业务层单独处理,变成一个单独的服务。控制层调用不同的业务层服务就能完成不同的业务功能。

  • 优点
    • 提高了代码的复用
  • 缺点
    • 系统间耦合度变高
    • 调用关系复杂
    • 维护困难

2.4 SOA

治理中心SOA(Service Oriented Architecture),资源调度和治理

  • 优点
    • 服务间调用关系自动调节
  • 缺点
    • 服务间会相互依赖
    • 一个环节出错,影响较大
    • 服务关系复杂
    • 运维,测试部署困难

2.5 微服务架构

微服务强调服务的彻底拆分,目的是:提高效率每个服务独立部署互不影响架构更加轻巧轻量级

  • 优点
    • 服务原子化拆分
    • 独立打包部署和升级
    • 每个微服务有清晰的任务划分,利于扩展
  • 缺点
    • 开发成本高
    • 复杂性高
    • 模块间互相调用的时候比较麻烦

3 Spring Cloud Alibaba

3.1 主要功能

  • 服务限流降级 :默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
  • 服务注册与发现 :适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
  • 分布式配置管理 :支持分布式系统中的外部化配置,配置更改时自动刷新。
  • 消息驱动能力 :基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
  • 分布式事务 :使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
  • 阿里云对象存储 :阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • 分布式任务调度 :提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
  • 阿里云短信服务 :覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

3.2 组件

  • Sentinel :阿里巴巴源产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • Nacos :一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • RocketMQ :一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Dubbo :Apache Dubbo 是一款高性能 Java RPC 框架。
  • Seata :阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • Alibaba Cloud OSS : 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • Alibaba Cloud SchedulerX : 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
  • Alibaba Cloud SMS : 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。