持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
1 什么是微服务
- 微服务是由单一应用构成的小服务
- 拥有自己的进程并且做了一些轻量化处理。
- 服务依赖业务功能设计,并且是全自动的方式进行部署。
- 服务与服务之间是可以通过http服务进行通信的。
- 服务可以用不同的编程语言与数据库等组件实现。
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 : 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。