什么是微服务?

目录

一、微服务的定义

二、为什么要用微服务?

单体架构的问题

微服务解决了什么?

三、微服务的核心特征

[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 单体架构

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

八、总结

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

相关推荐
JicasdC123asd1 小时前
并行双分支瓶颈架构改进YOLOv26异构卷积核协同特征提取与残差学习双重突破
学习·yolo·架构
老毛肚1 小时前
八股微服务
微服务·云原生·架构
2501_941149502 小时前
2026年云原生架构演进全景录:从单体拆解到 Serverless 落地,深度复盘百亿级中台的重构之路
云原生·架构·serverless
imuliuliang2 小时前
MySQL的底层原理与架构
数据库·mysql·架构
正宗咸豆花2 小时前
端到端AI决策架构如何重塑实时协作体验?
人工智能·架构
gyx_这个杀手不太冷静2 小时前
OpenCode 深度解析:架构设计、工具链集成与工程化实践
前端·架构·ai编程
liangshanbo12153 小时前
大模型 RAG 向量数据工程全链路架构笔记
笔记·架构
@土豆3 小时前
k8s环境部署promethus及周边监控组件(复制粘贴就可完成部署)
云原生·容器·kubernetes
掘根3 小时前
【微服务即时通讯】环境搭建10——Curl实现邮件通知服务
微服务·云原生·架构
孤影过客3 小时前
X86架构黎明:从0xFFFFFFF0开始的内存空间重构与寻址深潜
单片机·重构·架构