什么是微服务?

目录

一、微服务的定义

二、为什么要用微服务?

单体架构的问题

微服务解决了什么?

三、微服务的核心特征

[1. 服务拆分](#1. 服务拆分)

[2. 独立部署](#2. 独立部署)

[3. 独立数据管理](#3. 独立数据管理)

[4. 服务间通信](#4. 服务间通信)

[5. 去中心化治理](#5. 去中心化治理)

四、微服务架构的典型技术组成

五、微服务并不适合所有场景

六、什么时候适合微服务?

[七、微服务 vs 单体架构](#七、微服务 vs 单体架构)

八、总结


在传统的 Java Web 开发中,我们通常会把所有功能写在一个应用里:用户模块、订单模块、支付模块、后台管理模块全部打包成一个系统,这种架构被称为单体架构

随着业务规模的扩大,单体架构逐渐暴露出一系列问题,于是微服务架构应运而生。

一、微服务的定义

微服务(Microservices) 是一种软件架构风格,它将一个复杂的应用拆分为多个小而独立的服务

每个服务:

  • 只关注一个业务能力
  • 独立开发、独立部署
  • 通过网络(通常是 HTTP / RPC)进行通信

一句话定义:微服务就是将系统按业务能力拆分成多个可独立运行的服务。

二、为什么要用微服务?

单体架构的问题

在单体架构中:

  • 代码量庞大,维护困难
  • 一个模块出问题,整个系统不可用
  • 发布一次功能,需要整体重新部署
  • 团队协作成本高

随着系统变大,这些问题会被无限放大。

微服务解决了什么?

微服务通过拆分系统,带来以下优势:

  • 模块解耦,职责清晰
  • 可以单独部署、单独扩容
  • 某个服务挂掉,不影响其他服务
  • 更适合团队并行开发

三、微服务的核心特征

1. 服务拆分

每个微服务围绕单一业务能力构建,例如:

  • 用户服务
  • 订单服务
  • 支付服务
  • 商品服务

一个服务只做一件事。

2. 独立部署

  • 每个服务都是一个独立应用
  • 拥有自己的代码仓库、构建流程、部署流程

发布互不影响。

3. 独立数据管理

  • 每个服务拥有自己的数据库
  • 服务之间不直接共享数据库

通过接口通信,而不是数据库通信。

4. 服务间通信

服务之间通过网络通信,常见方式包括:

  • RESTful API(HTTP + JSON)
  • RPC(如 Dubbo、gRPC)

5. 去中心化治理

微服务更强调:

  • 去中心化
  • 自动化
  • 服务自治

四、微服务架构的典型技术组成

在 Java 体系中,一个完整的微服务架构通常包含:

组件 作用
Spring Boot 构建微服务
Spring Cloud 微服务治理
注册中心 服务注册与发现
配置中心 集中配置管理
负载均衡 请求分发
熔断限流 系统稳定性
链路追踪 请求监控

Spring Boot 是基础,Spring Cloud 是生态。

五、微服务并不适合所有场景

虽然微服务有很多优点,但它也带来了新的复杂性:

  • 服务数量激增
  • 分布式事务复杂
  • 运维成本提升
  • 网络通信不可避免

因此:微服务不是所有系统的最佳选择。

六、什么时候适合微服务?

一般来说,微服务更适合:

  • 业务复杂、持续演进的系统
  • 多团队协作的大型项目
  • 对系统稳定性、扩展性要求高的场景

而对于:

  • 小型项目
  • 业务简单、变化少的系统

单体架构往往更合适。

七、微服务 vs 单体架构

对比项 单体架构 微服务
部署 整体部署 独立部署
扩展 整体扩展 按需扩展
技术选型 统一 可多样
运维 简单 复杂
容错性

八、总结

微服务是一种以业务为中心、强调服务自治和独立部署的软件架构风格。

相关推荐
天空属于哈夫克31 天前
企业微信二次开发:精准实现关键词自动回复
架构·企业微信
分布式存储与RustFS1 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
晨米酱1 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
codeejun1 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
码流子1 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
moMo1 天前
从固定流程到问题路由:让 LangGraph RAG 按需检索
架构
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
白远山1 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
LorryJovens1 天前
【LAAP科研】双系统具身AGI范式研究——基于LAAP认知架构与Jev概率决策模型的系统性技术调研与范式验证
人工智能·gpt·安全·架构