跳转至

微服务与serverless架构

微服务架构是将大型应用拆分成一组独立小服务的架构风格,每个服务具有独立的业务功能和数据存储,便于独立部署、扩展和维护。Serverless架构则是一种无服务器计算架构,由事件触发,按需调用,开发者无需关心服务器等基础设施,只需关注业务逻辑,提高了开发效率和应用的可扩展性。

微服务架构

微服务架构的优点

  1. 易于扩展和维护:微服务架构将应用程序划分为多个小型、独立的服务,每个服务都可以独立部署和扩展。这使得系统能够轻松地根据需求进行扩展,同时也便于对单个服务进行维护和更新,而无需影响整个应用程序。
  2. 技术栈灵活:每个微服务都可以使用不同的编程语言、框架和技术栈来实现,这为开发人员提供了更大的灵活性。他们可以选择最适合任务的技术栈,从而提高开发效率和代码质量。
  3. 故障隔离:由于微服务是独立运行的,因此一个服务的故障不会影响到其他服务的正常运行。这提高了系统的可靠性和稳定性。

微服务架构的缺点

  1. 部署和运维复杂:微服务架构需要管理多个独立的服务,每个服务都需要进行部署、监控和运维。这增加了系统的复杂性,并需要专业的运维团队来确保系统的稳定运行。
  2. 网络通信开销:微服务之间需要通过网络通信来交换数据,这可能会引入网络延迟和通信开销。同时,网络通信也可能受到网络故障的影响,从而降低系统的可用性。
  3. 数据一致性挑战:在微服务架构中,数据通常被分散存储在多个服务中。这需要在服务之间保持数据一致性,可能需要使用复杂的分布式事务或事件驱动架构等技术手段来实现。

这里是一个包含常见组件的微服务架构图:

客户端层WebMobileThirdAPI Gateway微服务层用户服务订单服务支付服务商品服务库存中间件(by 361way.com)消息队列服务注册中心配置中心调用链追踪存储层MySQLRedisMongoDBElasticSearchS3

这里是包含以下主要组件的微服务架构图:

  1. 客户端层

    • Web 应用
    • 移动应用
    • 第三方系统
  2. API 网关层

    • 统一的 API Gateway
  3. 微服务层

    • 用户服务
    • 订单服务
    • 支付服务
    • 商品服务
    • 库存服务
  4. 中间件层

    • 消息队列(如 Kafka/RabbitMQ)
    • 服务注册中心(如 Eureka/Nacos)
    • 配置中心(如 Apollo/Nacos)
    • 调用链追踪(如 Zipkin/Jaeger)
  5. 存储层

    • MySQL(关系型数据库)
    • Redis(缓存)
    • MongoDB(文档数据库)
    • ElasticSearch(搜索引擎)

serverless架构

Serverless架构的优点

  1. 降低成本:Serverless架构采用按需付费的模式,只有在代码被调用时才会产生费用。这避免了无论使用与否都需要支付硬件资源费用的情况,从而降低了成本。
  2. 简化运维:Serverless架构无需管理服务器等基础设施,运维工作由服务提供商负责。这大大减轻了开发团队的负担,使他们能够更专注于核心业务逻辑的开发。
  3. 自动扩展:Serverless架构可以根据负载自动扩展和缩减资源,确保应用在高峰时能够稳定运行,在低谷时则不会浪费资源。

Serverless架构的缺点

  1. 冷启动延迟:Serverless架构在首次请求或长时间未请求后可能会遇到冷启动延迟问题。这是因为需要启动新的实例来处理请求,而启动过程可能会花费一些时间。
  2. 资源限制:Serverless架构通常对执行时间和内存等资源有一定的限制。这可能会影响到一些需要长时间运行或大量内存资源的任务。
  3. 调试和监控困难:由于代码是在云端执行的,因此调试和监控可能会变得更加困难。开发人员需要依靠服务提供商提供的工具来进行调试和监控,而这些工具可能不如本地开发环境那样直观和易用。

下图是一个通用的Serverless架构图,包含常见的Serverless组件和服务。

客户端 Web Mobile IoT API Gateway / CDN 函数计算层 (FaaS) 用户函数 业务函数 定时任务 数据处理 事件总线 (Event Bus) 托管服务 (BaaS) - by 361way.com 对象存储 数据库 消息队列 缓存 AI服务

这个Serverless架构图包含以下主要组件:

  1. 客户端层(浅蓝色)

    • Web应用
    • 移动应用
    • IoT设备
  2. API网关/CDN层(橙色)

    • 统一的API网关
    • 内容分发网络
  3. 函数计算层(FaaS)(绿色)

    • 用户函数
    • 业务函数
    • 定时任务
    • 数据处理
  4. 事件总线层(紫色)

    • 用于服务间的事件驱动通信,比如Amazon EventBridge、Azure EventGrid、Google Eventarc、阿里腾讯的云服务也叫EventBridge、华为云也叫EventGrid
  5. 托管服务层(BaaS)(粉色)

    • 对象存储
    • 数据库
    • 消息队列
    • 缓存
    • AI服务

连接线说明:

  • 实线表示同步调用
  • 虚线表示异步/事件驱动调用
  • 箭头指示数据流向

捐赠本站(Donate)

weixin_pay
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))