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% 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值