Java面试高频问题(31-33)
三十一、服务网格:东西向流量治理与故障注入
服务网格架构分层
mermaid
graph BT
subgraph Control Plane
APilot --> BEnvoy Sidecar
CMixer --> B
DCitadel --> B
end
subgraph Data Plane
B --> E服务A
B --> F服务B
B --> G服务C
end
核心能力矩阵
功能维度 Istio实现方案 Linkerd方案 技术选型点
流量路由 VirtualService+DestinationRule ServiceProfile 细粒度权重控制
可观测性 Prometheus+Grafana+Jaeger Prometheus+TraceID 指标采集开销对比
安全通信 mTLS双向认证+RBAC 自动mTLS 证书轮转机制
故障注入 HTTPFaultInjection Chaos Mesh集成 灰度故障注入能力
流量染色与金丝雀发布
java
// Istio VirtualService配置示例
VirtualService userVs = new VirtualServiceBuilder()
.withHost("user-service")
.addHttpRoute(new HTTPRoute()
.withMatch(new HTTPMatchRequest()
.setHeaders(Collections.singletonMap("x-version", "v2")))
.setRoute(Collections.singletonList(
new HTTPRouteDestination()
.setSubset("v2")
.setWeight(30))))
.addHttpRoute(new HTTPRoute()
.setRoute(Collections.singletonList(
new HTTPRouteDestination()
.setSubset("v1")
.setWeight(70))))
.build();
三十二、分布式事务:Saga模式与TCC模式对比
Saga事务执行流程
mermaid
sequenceDiagram
participant Order
participant Inventory
participant Payment
Order->>Inventory: 预扣库存(Try)
Inventory-->>Order: 库存锁定
Order->>Payment: 预授权支付(Try)
Payment-->>Order: 支付冻结
Note right of Order: 正常流程提交
Order->>Inventory: 提交库存
Inventory-->>Order: 扣减完成
Order->>Payment: 提交支付
Payment-->>Order: 支付完成
rect rgba(255,0,0,0.1)
Note left of Order: 异常补偿流程
Order->>Payment: 取消支付(Cancel)
Payment-->>Order: 释放冻结
Order->>Inventory: 回滚库存(Cancel)
Inventory-->>Order: 库存恢复
end
Seata AT模式核心机制
java
@GlobalTransactional
public void createOrder(Order order) {
// 本地事务
inventoryDao.deductStock(order.getProductId());
paymentDao.freezeBalance(order.getUserId(), order.getAmount());
// 记录全局事务日志(TC协调)
GlobalTransaction tx = GlobalTransactionManager.begin();
BranchTransaction tx1 = BranchTransactionManager.register(
"inventory",
"deductStock",
order.getId()
);
BranchTransaction tx2 = BranchTransactionManager.register(
"payment",
"freezeBalance",
order.getId()
);
}
事务模式对比分析
模式 数据一致性 补偿复杂度 适用场景
Saga 最终一致 高(需逆向操作) 长事务跨多个微服务
TCC 最终一致 中(需Try/Confirm/Cancel) 高并发强隔离场景
XA 强一致 低(数据库原生支持) 金融核心交易系统
三十三、混沌工程:故障注入策略与容错验证
混沌工程成熟度模型
mermaid
graph LR
A稳定态假设 --> B故障注入
B --> C故障传播分析
C --> D自愈能力验证
D --> E架构韧性优化
混沌实验设计模板
yaml
ChaosBlade网络故障注入配置
apiVersion: chaosblade.io/v1alpha1
kind: ChaosBlade
metadata:
name: network-latency
spec:
experiments:
- scope: pod
target: network
action: delay
desc: "模拟服务间网络延迟"
matchers:
- name: names
value:
- "order-service-.*"
- name: namespace
value: "production"
- name: delay
value: "300ms"
- name: correlation
value: "100%"
容错能力评估指标
指标类别 监控项 健康阈值
故障检测速度 熔断触发时间 < 500ms
服务降级效果 错误率波动幅度 < 5%
自愈恢复能力 平均恢复时间(MTTR) < 30s
资源隔离性 跨服务错误传播率 0%