共计 2230 个字符,预计需要花费 6 分钟才能阅读完成。
架构演进对比
主流架构模式对比
| 维度 | 单体架构 | SOA | 微服务架构 |
|---|---|---|---|
| 部署效率 | 简单但全量部署耗时 | 模块独立部署 | 服务独立部署,效率最高 |
| 技术异构性 | 技术栈统一 | 可部分异构(ESB 适配) | 完全异构(容器化支持) |
| 拆分粒度 | 无拆分 | 按功能模块拆分 | 按业务能力拆分 |
| 数据存储 | 共享数据库 | 共享数据库为主 | 独立数据库,强边界 |
| 典型通信方式 | 本地方法调用 | SOAP/ESB | REST/gRPC |
微服务与 SOA 核心差异
- 拆分原则
- SOA:按技术功能(如用户服务、订单服务)
-
微服务:按业务能力(电商场景拆分为库存、支付、物流服务)

-
数据管理
- SOA:共享数据库常见,需处理复杂 join
- 微服务:每个服务独占数据库,通过 API 聚合数据
graph TD
A[单体架构] -->| 拆分功能 | B(SOA)
B -->| 业务能力重组 | C[微服务]
C --> D{独立部署}
D --> E[容器化]
核心组件实战
1. Nacos 服务注册发现
集群配置示例 :
# application.yml
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.1.10:8848,192.168.1.11:8848 # 集群节点
namespace: dev-env # 环境隔离
ephemeral: false # 持久化实例(应对网络分区)# 高可用建议:# - 生产环境至少 3 节点
# - 搭配 MySQL 持久化元数据
2. Feign 声明式调用
@FeignClient(
name = "order-service",
fallback = OrderServiceFallback.class, // 熔断降级
configuration = FeignConfig.class // 自定义配置
)
public interface OrderServiceClient {@GetMapping("/orders/{id}")
Order getOrder(@PathVariable Long id);
}
// 负载均衡配置
@Bean
public IRule ribbonRule() {return new WeightedResponseTimeRule(); // 响应时间权重
}
3. Sentinel 熔断控制
控制台规则配置 :
{
"resource": "/api/orders",
"limitApp": "default",
"grade": 1, // 慢调用比例
"count": 500, // 阈值 500ms
"timeWindow": 10, // 统计窗口 10s
"slowRatioThreshold": 0.5 // 比例超 50% 触发熔断
}
生产级考量
服务通信安全
-
HTTPS 配置
// FeignConfig.java @Bean public Client feignClient() { return new Client.Default(SSLContexts.custom() .loadTrustMaterial(trustStore) .build().getSocketFactory(), NoopHostnameVerifier.INSTANCE ); } -
认证拦截器
public class AuthRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) {template.header("X-Auth", JWTToken.get()); } }
分布式事务方案
| 模式 | 适用场景 | 实现复杂度 |
|---|---|---|
| SeataAT | 简单业务,跨库单表操作 | 低 |
| TCC | 高一致性要求(资金交易) | 高 |
AT 模式配置要点 :
# seata.conf
transport.type=TCP
service.vgroup-mapping.order-service-tx-group=default
避坑指南
- 拆分边界
- 单个微服务建议维护 3 - 8 个表
-
跨服务事务尽量通过 Saga 模式替代强一致
-
注册中心调优
# 心跳间隔与故障检测 spring.cloud.nacos.discovery: heart-beat-interval: 5000 # 默认 5 秒 heart-beat-timeout: 15000 # 15 秒超时 ip-delete-timeout: 30000 # 30 秒移除失效实例
动手实验
# docker-compose.yml
version: '3'
services:
nacos:
image: nacos/nacos-server:2.0.3
ports:
- "8848:8848"
environment:
- MODE=standalone
sentinel:
image: bladex/sentinel-dashboard:1.8.2
ports:
- "8080:8080"
# 启动命令
docker-compose up -d
实验步骤
- 访问 Nacos 控制台:http://localhost:8848/nacos
- 登录 Sentinel(账号 sentinel/sentinel)
- 在 Sentinel 控制台配置流控规则
- 通过 Postman 触发熔断测试
总结建议
微服务架构的实施需要平衡拆分粒度与运维复杂度。建议从核心业务开始试点,逐步积累监控和治理经验。Spring Cloud Alibaba 生态提供了开箱即用的解决方案,但生产落地仍需关注:
- 服务契约管理(OpenAPI 规范)
- 渐进式拆分策略
- 基础设施自动化(CI/CD 流水线)
技术选型上,中小团队可优先采用 Nacos+Feign+Sentinel 组合,大规模场景建议引入 Service Mesh 进行通信治理。
正文完
发表至: 未分类
近三天内

