第30周Java分布式入门 分布式基础

分布式基础课程笔记

一、什么是分布式?

1. 权威定义

分布式系统定义为:"利用物理架构形成多个自治的处理元素,不共享主内存,通过发送消息合作"。

2. 核心解释

  • 物理架构与处理元素

    🌟 多台独立服务器/电脑:类比不同员工各司其职。

  • 不共享主内存

    🌟 各服务器内存独立:如同员工各自记账本不共享。

  • 通过消息合作

    🌟 只能通过消息传递协作:类似员工间用对讲机沟通。

3. 架构演进案例(老板开店故事)

  • 单体架构
    小卖店模式:老板包揽所有工作(收银+补货+清洁)。

  • 集群架构
    分店模式:老板和老板娘各开相同功能的店铺(能力未拆分)。

  • 分布式架构
    专业分工模式:雇佣收银员/理货员/保洁员(能力拆分+合作)。

二、关键架构对比

单体架构 集群架构 分布式架构
特点 所有功能集中 完整功能复制 功能拆分+合作
类比 单人小卖店 连锁便利店 专业团队分工合作
优势 开发简单 高可用性 灵活扩展
劣势 单点故障风险高 资源浪费 系统复杂度高

分布式架构核心知识笔记

一、分布式架构的作用与演进

1. 单体应用的核心痛点

  • 🚫 速度变慢:编译部署像等待老式打印机(10分钟起),新人入职配置环境如同拼装乐高积木。
  • 🚫 耦合严重:代码像房间里的乱接电线(改一处可能烧毁整个系统)。
  • 🚫 技术债务:历史代码如同衣柜里的旧衣服(占地方却不敢扔)。
  • 🚫 协作困难:合并代码堪比多人同时编辑Excel表格(冲突频繁)。

2. 分布式架构的四大优势

优势维度 具体表现 生活化案例
⚡开发效率 微服务独立开发如同快餐店后厨分工 汉堡组、薯条组互不干扰
🔧技术升级 更新组件像更换手机APP 单独更新微信不影响支付宝
🛡️系统可用性 服务隔离如同轮船防水舱设计 一个船舱进水不影响其他舱
💰成本优化 资源调配像共享充电宝部署 商场多放,小区少放

二、架构对比分析表(单体 vs 分布式)

对比维度 单体架构 分布式架构 典型误解澄清
🏃启动速度 整装待发的装甲车(全量启动) 特种部队分散部署(独立启动) 分布式整体协调时间常被忽视
👥团队规模 家庭作坊(3-5人) 跨国公司(百人级) 团队规模决定架构选择
🛠️维护成本 考古式开发(不敢删旧代码) 模块化维护(独立升级) 分布式初始成本更高但长期收益大
💻代码清晰度 意大利面式代码 API契约式开发 分布式不代表绝对规范
🚨故障影响 多米诺骨牌效应 蜂巢式隔离 分布式故障排查更复杂
🎨设计难度 简笔画 清明上河图 需要架构师全局视野

分布式系统核心理论 CAP定理

一、CAP定理核心概念

1. 三要素定义

  • **一致性(Consistency)**🌟
    所有节点同时看到相同数据。如:节点1写入X=100后,节点2读取必须也是100。

  • **可用性(Availability)**🌟
    每次请求都能获得有效响应。如:购物网站必须即时显示商品库存(即使数据可能不是最新)。

  • **分区容错性(Partition Tolerance)**🌟
    网络故障时系统仍可运行。如:跨国服务器集群能容忍中美海底光缆中断。

2. 铁三角悖论 🚨

数学证明三者不可兼得:网络分区必然存在 → 必须在C/A中二选一。

二、实践应用案例

1. 典型场景选择

业务类型 选择方案 典型代表 牺牲项
内容分发网络 AP 阿里云CDN 一致性
银行转账系统 CP 支付宝余额宝 可用性
实时通讯软件 AP 微信消息漫游 一致性

集群、分布式与微服务核心知识点总结

一、核心概念对比

1. 集群 vs 分布式

维度 集群 分布式
部署内容 同一项目的多个副本 不同项目/模块部署
核心目的 分散压力、负载均衡 多节点协同工作
协作方式 无需业务协作 必须跨节点通信协作
🌟生活案例 麦当劳10个收银台同时服务 快递公司分拣中心+配送站协同工作

2. 集群 vs 微服务

维度 集群 微服务
关注点 部署方式 架构设计
能力特征 相同能力复制 独立业务能力
扩展方式 水平扩展 垂直拆分
🌟生活案例 银行开设5个相同业务的营业厅 医院分设挂号、检验、药房部门

3. 微服务 vs 分布式

维度 微服务 分布式
本质属性 架构设计方法论 系统部署方案
拆分维度 按业务垂直拆分 按功能/层次拆分
必然关系 微服务必须分布式部署 分布式不一定用微服务架构
🌟生活案例 电商拆分成用户/订单/商品服务 网站前端+API服务分开部署

二、分布式核心理论

1. CAP定理

维度 说明 选择策略
C一致性 所有节点数据实时一致 金融交易系统首选(如银行转账)
A可用性 每个请求都能获得响应 社交平台首选(如朋友圈点赞)
P分区容错 允许网络分区故障(必须保证) 必须满足的基础要求
🌟经典组合 CP组合(如ZooKeeper) AP组合(如Eureka)

2. 分布式 vs 单体架构

分布式优势

  • 故障隔离:单点故障不影响全局(如支付服务宕机不影响用户注册)。
  • 弹性扩展:按需扩展特定服务(如促销时单独扩容秒杀服务)。
  • 技术异构:不同服务使用不同技术栈(如推荐服务用Python,交易服务用Java)。

⚠️ 单体痛点

  • 牵一发而动全身:修改用户模块可能影响订单功能。
  • 扩展困难:必须整体扩容,即使只有部分模块负载高。
  • 技术栈固化:所有模块必须使用相同技术体系。
相关推荐
nqqcat~3 分钟前
容器C++ ——STL常用容器
开发语言·c++
申城异乡人9 分钟前
HttpClient使用方法总结及工具类封装
java
小林熬夜学编程11 分钟前
【高并发内存池】第七弹---释放内存过程联调测试与大于256KB内存申请全攻略
c语言·开发语言·数据结构·c++·算法·哈希算法
爱的叹息18 分钟前
Spring 约定编程案例与示例
java·后端·spring
lili-felicity19 分钟前
走进Java:学生管理系统进阶
java·开发语言
满怀101520 分钟前
Python入门(3):语句
开发语言·python
Seven9726 分钟前
【Guava】BiMap&Multimap&Multiset
java
a1800793108033 分钟前
软件工程面试题(六)
java·面试·软件工程
JIU_WW38 分钟前
JVM面试专题
java·jvm·面试·java虚拟机·垃圾回收