第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)。

⚠️ 单体痛点

  • 牵一发而动全身:修改用户模块可能影响订单功能。
  • 扩展困难:必须整体扩容,即使只有部分模块负载高。
  • 技术栈固化:所有模块必须使用相同技术体系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vuex状态管理

Vuex Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。(类似于在前端的数据库,这里的数据存储在内存当中) 一、安装并配置 在项目的…

从代码学习深度学习 - 使用块的网络(VGG)PyTorch版

文章目录 前言一、VGG网络简介1.1 VGG的核心特点1.2 VGG的典型结构1.3 优点与局限性1.4 本文的实现目标二、搭建VGG网络2.1 数据准备2.2 定义VGG块2.3 构建VGG网络2.4 辅助工具2.4.1 计时器和累加器2.4.2 准确率计算2.4.3 可视化工具2.5 训练模型2.6 运行实验总结前言 深度学习…

Baklib激活企业知识管理新动能

Baklib核心技术架构解析 Baklib的底层架构以模块化设计为核心,融合知识中台的核心理念,通过分布式存储引擎与智能语义分析系统构建三层技术体系。数据层采用多源异构数据接入协议,支持文档、音视频、代码片段等非结构化数据的实时解析与分类…

小智机器人中的部分关键函数,FreeRTOS中`xEventGroupWaitBits`函数的详细解析

以下是对FreeRTOS中xEventGroupWaitBits函数的详细解析: 函数功能 xEventGroupWaitBits用于在事件组中等待指定的位被设置。它可以配置为等待任意一个位或所有位,并支持超时机制。 注意:该函数不能在中断中调用。 函数原型 EventBits_t xEv…

关注分离(Separation of Concerns)在前端开发中的实践演进:从 XMLHttpRequest 到 Fetch API

关注分离(Separation of Concerns)在前端开发中的实践演进:从 XMLHttpRequest 到 Fetch API 一、关注分离的核心价值 关注分离(SoC)是软件工程领域的重要设计原则,强调将系统分解为不同维度的功能模块&am…

C之(16)scan-build与clang-tidy使用

C之(16)scan-build与clang-tidy使用 Author: Once Day Date: 2025年3月29日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: Linux实践记录_Once_da…

在 Vue 项目中快速集成 Vant 组件库

目录 引言一、找到 src 下的App.js 写入代码。二、安装Vant三、解决 polyfill 问题四、查看依赖五、配置webpack六、引入 Vant七、在组件中使用 Vant八、在浏览器中查看样式总结 引言 在开发移动端 Vue 项目时,选择一个高效、轻量且功能丰富的组件库是提升开发效率…

“GPU 挤不动了?”——聊聊基于 GPU 的计算资源管理

“GPU 挤不动了?”——聊聊基于 GPU 的计算资源管理 作者:Echo_Wish “老板:为什么 GPU 服务器卡得跟 PPT 一样?” “运维:我们任务队列爆炸了,得优化资源管理!” 在 AI 训练、深度学习、科学计算的场景下,GPU 计算资源已经成为香饽饽。但 GPU 服务器贵得离谱,一台 A…

AI渗透测试:网络安全的“黑魔法”还是“白魔法”?

引言:AI渗透测试,安全圈的“新魔法师” 想象一下,你是个网络安全新手,手里攥着一堆工具,正准备硬着头皮上阵。这时,AI蹦出来,拍着胸脯说:“别慌,我3秒扫完漏洞&#xff0…

(二)GEE基础学习初探及案例详解【20250330】

Google Earth Engine(GEE)是由谷歌公司开发的众多应用之一。借助谷歌公司超强的服务器运算能力以及与NASA的合作关系,GEE平台将Landsat、MODIS、Sentinel等可以公开获取的遥感图像数据存储在谷歌的磁盘阵列中,使得GEE用户可以方便的提取、调用和分析海量…

redhat认证是永久的吗

​认证有效期 ​红帽认证一般有效期为3年​(如RHCSA、RHCE、RHCA等),从通过考试之日起计算。 ​例外:部分基础或工程师认证(如Red Hat Certified Engineer)有效期为三年时间,以官方最新政策为准…

git --- cherry pick

git --- cherry pick cherry pick cherry pick Cherry Pick 是 Git 中的一个操作,它允许你选择某个分支的某次(或多次)提交,并将其应用到当前分支,而不会合并整个分支的所有更改。 cherry pick 的作用 只提取某个特定的…

妙用《甄嬛传》中的选妃来记忆概率论中的乘法公式

强烈推荐最近在看的不错的B站概率论课程 《概率统计》正课,零废话,超精讲!【孔祥仁】 《概率统计》正课,零废话,超精讲!【孔祥仁】_哔哩哔哩_bilibili 其中概率论中的乘法公式,老师用了《甄嬛传…

AI 的出现是否能替代 IT 从业者?

AI 的出现是否能替代 IT 从业者? AI 的快速发展正在深刻改变各行各业,IT 行业也不例外。然而,AI 并非完全替代 IT 从业者,而是与其形成互补关系。本文将从 AI 的优势、IT 从业者的不可替代性、未来趋势等方面,探讨 AI…

【leetcode100】有效的括号

1、题目描述 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的…

为什么使用Flask + uWSGI + Nginx 部署服务?

概述 在Python开发的web应用中,我们通常能够看到flask、uWSGI、Nginx出现在一起,他们之间的关系是什么?为什么总是被应用在一起?  三者共同使用为了实现一个目的:客户端向服务端发送数据请求,服…

接口等幂处理

介绍 ✅ 什么是等幂(Idempotency)? 等幂 无论这个操作被执行多少次,结果都是一样的,不会因为多次执行而产生副作用。 通俗一点说:“点一次和点一百次,效果是一样的。” ✅ 在接口中&#xff0…

P1090合并果子(优先队列)

洛谷题目 这里使用的是优先队列&#xff0c;非常简单 首先让我们一起来学习一下优先队列&#xff08;默认是从大到小来排列&#xff09; 首先要使用头文件 #include<queue> using namespace std; 然后声明有限队列 priority_queue<int> a; priority_queue&…

蓝桥杯备考---->并查集之 Lake Counting

这道题就统计有多少个连通块就行了 这时候我们又需要把二维转成一维了&#xff0c;也就是把每一个格子都给一个编号 当我们合并连通块的时候&#xff0c;其实是只需要四个方向的 因为我们是从上往下遍历的&#xff0c;我们遍历到某个位置的时候&#xff0c;它已经和上面部分…

React受控表单绑定

受控表单绑定 在 React 中&#xff0c;受控组件&#xff08;Controlled Component&#xff09;是指表单元素的值由 React 组件的 state 管理&#xff0c;React 通过 onChange 事件监听输入变化&#xff0c;并实时更新 state&#xff0c;从而控制表单输入值。 为什么要使用受控…