当前位置: 首页 > news >正文

微服务和分布式的基础学识

微服务基础概念

微服务是一种软件架构风格,将单一应用程序划分为一组小型服务,每个服务运行在独立的进程中,通过轻量级机制(如HTTP/REST)通信。每个服务围绕业务能力构建,可独立部署、扩展和技术异构。

微服务的核心特征包括:

  • 单一职责原则:每个服务专注于单一功能
  • 自治性:服务可独立开发、部署和扩展
  • 去中心化治理:允许使用不同技术栈
  • 容错设计:服务故障隔离
  • 演进式设计:支持逐步重构

分布式系统基础

分布式系统由多台计算机通过网络连接,协调完成共同任务。核心特性包括:

  • 并发性:多节点并行处理
  • 缺乏全局时钟:节点间时间同步困难
  • 部分故障:系统可能部分失效
  • 透明性:对用户隐藏分布式特性

分布式系统的CAP定理指出,任何分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)中的两项。

服务通信机制

微服务间常用通信方式:

  • 同步通信:REST(HTTP+JSON)、gRPC(基于HTTP/2)
  • 异步通信:消息队列(Kafka/RabbitMQ)、事件驱动
  • 服务发现:Consul/Eureka/Nacos实现动态服务定位
  • API网关:统一入口处理路由、认证和限流

RESTful接口示例:

@RestController
@RequestMapping("/orders")
public class OrderController {@GetMapping("/{id}")public Order getOrder(@PathVariable String id) {// 实现逻辑}
}

数据一致性方案

分布式事务处理模式:

  • 两阶段提交(2PC):协调者管理事务提交过程
  • 补偿事务(TCC):Try-Confirm-Cancel模式
  • Saga模式:长事务分解为本地事务序列
  • 事件溯源:通过事件日志重建状态

Saga实现示例:

def create_order_saga():try:reserve_items()process_payment()complete_order()except Exception:compensate_payment()restore_inventory()

容错与弹性设计

常见容错模式:

  • 熔断器模式:Hystrix/Sentinel实现故障隔离
  • 限流:令牌桶/漏桶算法控制流量
  • 降级:故障时提供基本功能
  • 重试:指数退避策略处理临时故障

熔断器配置示例:

hystrix.ConfigureCommand("my_command", hystrix.CommandConfig{Timeout:               1000,MaxConcurrentRequests: 100,ErrorPercentThreshold: 25,
})

服务监控与可观测性

关键监控维度:

  • 指标(Metrics):Prometheus收集QPS、延迟等数据
  • 日志(Logging):ELK栈实现集中日志管理
  • 追踪(Tracing):Jaeger/Zipkin实现分布式追踪
  • 健康检查:Kubernetes存活/就绪探针

PromQL查询示例:

http_requests_total{status=~"5.."} rate(5m)

容器化与编排技术

部署方案:

  • Docker:轻量级容器打包应用
  • Kubernetes:自动化部署、扩展和管理
  • Service Mesh:Istio/Linkerd处理服务间通信
  • CI/CD:GitOps实现持续交付

Kubernetes部署描述示例:

apiVersion: apps/v1
kind: Deployment
metadata:name: order-service
spec:replicas: 3selector:matchLabels:app: ordertemplate:metadata:labels:app: orderspec:containers:- name: orderimage: registry/order:v1.2ports:- containerPort: 8080

领域驱动设计应用

微服务划分原则:

  • 界限上下文:识别业务领域边界
  • 充血模型:业务逻辑集中在领域层
  • 防腐层:隔离外部系统影响
  • CQRS模式:读写分离架构

领域事件示例代码:

public class OrderCreatedEvent : IDomainEvent 
{public Guid OrderId { get; }public DateTime OccurredOn { get; }public OrderCreatedEvent(Guid orderId) {OrderId = orderId;OccurredOn = DateTime.UtcNow;}
}

文章转载自:

http://9u7NxJH9.wkpfm.cn
http://WlSLKOfK.wkpfm.cn
http://JFjLzVPk.wkpfm.cn
http://yT08oZ2u.wkpfm.cn
http://q24M2wnA.wkpfm.cn
http://a21twcjt.wkpfm.cn
http://SjUYJDjB.wkpfm.cn
http://4Qq7jNJO.wkpfm.cn
http://7znJKdxW.wkpfm.cn
http://wLH2cw3E.wkpfm.cn
http://8Z9RS2kb.wkpfm.cn
http://itQoe9uK.wkpfm.cn
http://o97ZnU74.wkpfm.cn
http://qZaTPhj9.wkpfm.cn
http://A3EKP9DN.wkpfm.cn
http://oiY8X8gH.wkpfm.cn
http://mvIOFu6r.wkpfm.cn
http://vjFjHFRC.wkpfm.cn
http://i6Lyczq3.wkpfm.cn
http://jpDZIN8h.wkpfm.cn
http://89Viikl6.wkpfm.cn
http://VFqjLzZV.wkpfm.cn
http://PeMcREF8.wkpfm.cn
http://fHw4915I.wkpfm.cn
http://RDK94IcQ.wkpfm.cn
http://k71zv95X.wkpfm.cn
http://ILpLXEcW.wkpfm.cn
http://4KUSXJjR.wkpfm.cn
http://9q6Ix3Bf.wkpfm.cn
http://OvWT0Zb9.wkpfm.cn
http://www.dtcms.com/a/388088.html

相关文章:

  • 自动化测试框架pytest---Json Schema
  • 阿里云PolarDB MySQL版与MCP集成方案:数据处理分析全流程的效能革命
  • Python实现霸王龙优化算法(Tyrannosaurus Optimization Algorithm, TROA)(附完整代码)
  • 弥合安全分析与故障仿真之间差距的方法
  • JavaEE---9.网络原理TCP/IP
  • @Value
  • 安装es、kibana、logstash
  • Leetcode-148.排序链表
  • 基于ETF底仓的网格交易系统实现动态参数优化与动量因子融合
  • C++底层刨析章节三: 函数对象与适配器:STL中的智能操作单元
  • MySQL多表联合查询与数据备份恢复全解析
  • 说说对React的理解?有哪些特性?
  • 深入理解 C 语言指针(二):数组与指针的深度绑定
  • 算法能力提升之树形结构-(线段树)
  • 小白实测:异地访问NAS所用的虚拟局域网使用感受及部署难度?!
  • js校验车架号VIN算法
  • MongoDB 8.0全面解析:性能提升、备份恢复与迁移指南
  • vue3如何配置不同的地址访问不同的项目
  • 苹果软件代码混淆,iOS混淆、iOS加固、ipa安全与合规取证注意事项(实战指南)
  • SQL-约束
  • [torch] 非线性拟合问题的训练
  • ubuntu设置ip流程
  • 【论文阅读】谷歌:生成式数据优化,只需请求更好的数据
  • 【深度学习】什么是过拟合,什么是欠拟合?遇到的时候该如何解决该问题?
  • CSA AICM 国际标准:安全、负责任地开发、部署、管理和使用AI技术
  • AI 赋能教育:个性化学习路径设计、教师角色转型与教育公平新机遇
  • 科技为老,服务至心——七彩喜智慧养老的温情答卷
  • ​​[硬件电路-237]:电阻、电容、电感虽均能阻碍电流流动,但它们在阻碍机制、能量转换、相位特性及频率响应方面存在显著差异
  • 内网Windows系统离线安装Git详细步骤
  • @Component 与 @Bean 核心区别