趣谈分布式与集群

面试趣谈:互联网大厂Java面试的那些技术与业务场景 通过电商订单处理、内容社区和微服务云原生三个典型业务场景,我们不仅考察了Java核心技术栈,还深入理解了技术背后的业务需求。希望这次面试趣谈能帮你轻松掌握复杂技术点,提升面试自信!🚀标签:Java,Spring Boot,微服务,电商,内容社区,Kafka,容器化,Kubernetes,JWT,Redis。 阅读详情

在这里插入图片描述

单体架构:

家里生小宝宝啦,由于自己没有照顾小宝宝的经验,所以请了位经验丰富的月嫂。
这位月嫂从买菜,到做饭,洗衣,拖地,喂奶,哄睡,洗澡,换纸尿裤,擦屁股,做排气操,夜间陪护,给奶妈做月子餐等等,全部都做。 这种叫做单体架构。


集群:

什么都做,一个月嫂怎么够呢,肯定忙不过来呀,那就请两个月嫂吧,这叫做集群。
高可用:
有一个月嫂过生日,想请假回去和亲戚打一天麻将。如果只有一个月嫂,她走了,就叫做服务中断了。 但是因为做了集群,有两个月嫂,走了一个,另一个还是能用,虽然相比较吃力一些,但是毕竟还是能用的,这个现象叫做高可用。


分布式:

一个月嫂,一个月的费用基本上都要1万多,还有房贷,还有车贷,生活费用还高,实在是请不起两位啊,那就还是请一位吧。 可是事情那么多,她实在忙不过来,怎么办呢? 那就把爷爷请过来买菜,把奶奶请过来做饭。 这样服务本来仅仅是由月嫂一人提供的,变成了和宝宝相关的由月嫂负责,采购由爷爷负责,餐饮由奶奶负责。 这就叫做分布式了。


低耦合:

做宝宝服务的月嫂去打麻将了,不影响做饭的奶奶。 做采购的爷爷去喝酒了,也不影响月嫂的宝宝服务,这叫做低耦合。
高内聚:
和宝宝相关的事情都是月嫂在做,月嫂兑奶方式快慢,只会影响自己,对爷爷和奶奶的服务没影响. 这叫做高内聚。


集群+分布式:

奶奶一个人做饭,做久了也烦啊,也累啊,也想打麻将呀。 那么就把姥姥也请过来吧。 这样做饭这个服务,就由奶奶和姥姥这个集群来承担啦。她们俩,谁想去汗蒸了,都有另一位继续提供做饭服务。 这就叫做集群+分布式。

在这里插入图片描述

分布式和集群都是为了解决两个问题:

  • 高吞吐量(throughput)
  • 高可用(availability)

那既然他们俩都能解决这两个问题,那择其一为我所用就好啦,可为什么我们的架构通常既是分布式,又是集群呢?这不矛盾了吗?

慢慢看下去一切自然就明了

首先咱们聊聊集群

什么是集群,举个列子就是我开饭店,雇了好多个水平一模一样的厨师,既可以同时帮我做菜(高吞吐量),而且万一有一个厨师回家娶媳妇了,我饭店里还有别的厨师(他们可能会比平时忙),不至于要关门停业(高可用)我们常用的缓存服务器,比如Memcached和Redis,都是集群架构,以Memcached为例,一开始我们只有一个Memcached节点:

在这里插入图片描述

Client把一些数据放到Memcached中,省的每次都是数据库查,如果只有一个Memcached,那一旦请求压力大了,Memcached很快就忙不过来(虽然Memcached是多线程),而且一旦Memcached挂了,那就没有缓存可以用了,全部请求都会走数据库,数据库的压力会骤然增加!所以我们加多了两个Memcached节点,形成Memcached集群:

在这里插入图片描述

Memcached集群实现了开头提到的两个特性:

高吞吐量:通过负载均衡算法(通常是借助一致性Hash和虚拟节点),我们把Client的请求均匀分配到三台Memcached服务器上,不至于只让一台Memcached疲于处理全部请求。

高可用:一旦一台Memcached节点挂了,比如说Memcached1,那借助一致性Hash算法和它的虚拟节点机制,我们可以将原本发给Client的Memcached1的请求均匀分配到Memcached2和3上,缓存功能依旧可用。

有人说,请求会被分布到各个Memcached节点,这不就是分布式吗?

严格来说,这只能算是“分布的”(distributed),正如Memcached官网的介绍说的:

memcached is a high-performance, distributed memory object caching system

那什么才算是分布式呢?(承上启下,自然而然的引出下面对分布式的介绍,加5分 —— 语文老师评)

还是我开饭店的例子,饭店不能只有厨师啊,总不能让客人来了直接跑到后厨跟厨师说他要吃什么吧?所以还要前台负责接待,要服务员负责送菜,还要收银员负责结账… 这样一个各司其职,最后共同完成一件大事的系统,就形成了分布式。

还是上面那张图,换个角度去看,就是分布式了,之前我们只看到了三台Memcached节点,上面说了,这只是集群,那要怎么看才是分布式呢?把眼睛睁大!看整张图!

在这里插入图片描述

为什么说整张图就是分布式了?因为这些节点各司其职,有专门负责数据持久化存储的(Database),有对外提供业务访问的(Client,姑且认为是一个商品查询服务吧),也有负责数据缓存的(Memcached)什么?你说这样还不够分布式?那就这样吧(画的有点ugly…):

在这里插入图片描述

够分布式了吧 ( ̄▽ ̄)~*

分布式同样实现了开头提到的两个特性:

高吞吐量:我们把不同业务拆分到不同的机器上,比如用户信息查询和订单信息查询都是非常频繁的业务操作,现在我们拆成了UserService和OrderService,放在不同的机子上运行,自然比都放在一台机器上,吞吐量要高得多。
高可用:我改了一行UserService的代码,部署过去,编译失败,节点挂掉了,最多就影响需要依赖UserService的业务,不会影响其他的,整个系统整体上还是可用的,而如果所有业务都放在一起,那就危险多了!一行代码编译失败,整个系统垮掉,整段垮掉!

可能有同学觉得这样的分布式,和之前提到的Memcached将请求分散给各个节点进行处理,不都一样吗?Memcached集群也是每个节点各司其职,每个节点负责一小部分请求,共同实现缓存这个功能,这不也是分布式吗?

再啰嗦一句你们就清楚了。

我们常说的分布式,或者说分布式(Distribution)这个术语,指的是各个异构的节点形成的系统,所谓异构,就是结构不同、功能不同的节点。

而Memcached集群的各个节点呢?他们是同构的,一个缓存的请求过来,比如说Set xxKey xxValue,那这个请求最终只会被一个Memcached节点处理,不会需要多个节点来共同完成这个请求。

而分布式呢,假设我有一个下单的请求,请求发给了OrderService,OrderService需要根据请求里头的userId补充用户信息,那就需要调用UserService提供的接口,然后我还要查询这比订单里头的商品信息,所以又得去调用GoodService接口,最后,才能完成下单这个操作。

OrderService、UserService和GoodService共同完成了下单这件事,这才是分布式(Distribution),而Memcached集群最多只能算是“分布的”(Distributed)。

【面试趣谈】从电商订单到互联网医疗,Java全栈面试大揭秘! 李小梅,今天的问题涵盖了从电商订单到医疗安全,再到内容社区的多个技术点。基础你掌握得不错,复杂问题需要加强理解。回去好好准备,我们后续会有通知。保持好心态,技术和业务同样重要! 阅读详情

相关推荐

使用Python开发TreeATE的测试脚本常见问题

ImportError: No module named py_compile 找不到 DevLangPython3.dll 以上2个问题都是没有安装正确的Python,当前TreeATE依赖32位Python 2.7版本,暂时不支持Python 3以上版本

蓝白云的专栏 1032

什么是分布式和集群?它们有什么区别

例如:客人点菜,需要买菜,炒菜,上菜三个子任务完成,那么由3个人分别完成这三个任务,一个人买菜,一个人炒菜,一个人上菜,这就是分布式。例如:客人点菜,店里有三个人,他们每个人都会买菜炒菜和上菜,他们共同完成任务,一个人炒青菜,一个人炖汤,一个人卤肉,这就是集群。集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。

qq_49948651的博客 5442

OrthoFinder功能、流程和文件注释

OrthoFinder 的标准输出包括:直系同源组,直系同源基因,有根基因树,解析基因树,无根物种树、有根物种树,基因重复事件以及相关的统计数据。

hs6605015的博客 3046

互联网软件架构演变——集群与分布式的区别

使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署。

General_zy的博客 2366

自动化测试与AI的结合应用

自动化测试,人工智能,机器学习,深度学习,测试用例生成,缺陷预测,测试优化 1. 背景介绍 在软件开发领域,自动化测试已成为不可或缺的一部分,它可以提高测试效率、降低测试成本,并确保软件质量。然而,传统的自动化测试方法往往依赖于人工编写的测试用例,这不仅耗时费力,而且难以应对复杂软件

AI架构师小马 2246

6-2 GPU GART 绑定机制与 TLB 失效

本文详细解析了AMD GPU的GART(Graphics Address Remapping Table)绑定机制实现。主要内容包括: 绑定流程:从ttm_tt_bind()到硬件PTE更新的完整调用链,重点分析amdgpu_gart_bind()函数实现。 关键函数: amdgpu_gart_bind():执行安全检查、记录映射关系、更新页表等操作 amdgpu_gart_map():将CPU页映射为多个GPU页并填充PTE amdgpu_gmc_set_pte_pde():处理硬件特定的PTE格式 内存

图形/计算GPU的驱动与虚拟化技术分享园地 2646

分布式与集群傻傻分不清?生动形象只需一文全搞通!

看书之类的种种概念生涩难懂,让我来换一种通俗易懂的比喻来给大家举列子,包大家一看就懂! 滑稽至上 单体架构: 家里生小宝宝啦,由于自己没有照顾小宝宝的经验,所以请了位经验丰富的月嫂。 这位月嫂从买菜,到做饭,洗衣,拖地,喂奶,哄睡,洗澡,换纸尿裤,擦屁股,做排气操,夜间陪护,给奶妈做月子餐等等,全部都做。 这种叫做单体架构。 集群: 什么都做,一个月嫂怎么够呢,肯定忙不过来呀,那就请两个月嫂吧,这叫做集群。 高可用: 有一个月嫂过生日,想请假回去和亲戚打一天麻将。如果只有一个月嫂,她走了,就叫做服务中

S11035762的博客 6087

基于Simulink的新能源汽车热管理系统设计与仿真详细介绍

新能源汽车(如纯电动汽车和混合动力汽车)的热管理系统是确保电池、电机和电控系统高效运行的关键。通过合理设计热管理系统,可以提高车辆的续航里程、延长电池寿命并提升整体性能。以下是如何在 MATLAB 和 Simulink 中设计并仿真一个新能源汽车热管理系统的详细步骤。通过上述步骤,我们成功设计并实现了基于 Simulink 的新能源汽车热管理系统。该系统能够根据目标温度和实际反馈,通过 PID 控制器或模糊控制器调整冷却液流量、风扇转速等参数,实现对电池、电机和车内的精确温度控制。

xiaoheshang_123的博客 383

【分布式】什么是分布式,分布式和集群的区别又是什么?答案在正文。

分布式系统一定是由多个节点组成的系统。其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。这些连通的节点上部署了我们的节点,并且相互的操作会有协同。分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统,因此分布式系统看起来像是一个超级计算机一样。

DreamSun的博客 3693

信奥赛C++提高组csp-s之数论基础专题课:从同余到分数模运算1(知识地图:同余、裴蜀定理、扩展欧几里得、乘法逆元、分数模运算)

信奥赛C++提高组csp-s之数论基础专题课:从同余到分数模运算1(知识地图:同余、裴蜀定理、扩展欧几里得、乘法逆元、分数模运算)

王老师青少年编程 790

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象

在 UG NX中,有时需要批量删除某文件夹下多个.prt文件中固定一些图层中的体对象和曲线对象,这时如果采用手动逐个打开模型,并选择针对的图层删除,即耗时也容易遗漏,因此采用外部模式来处理比较方便。本文介绍批量删除某些图层中的体对象和曲线对象。

GimiGimmy 3035

什么是集群?什么是分布式?集群与分布式的区别,集群和分布式的关系。

什么是集群 假如你开发了一个程序供大家使用,当然会把开发好的程序放到应用服务器中,刚开始用户量不大,用户访问的正常,服务器压力小。 但是随着用户量的增大,一台服务器不足以支撑系统的正常运行。 于是你决定把程序放在多个服务器上,通过增加服务器的数量来减少服务器的压力。每台服务器是没有区别的,每台服务器中的程序也是完全一样的,这样一来,减少了对服务器的压力。 但是现在又了新的问题,这样确实可以减少服务器的压力但是用户每次访问的服务器是不确定的,没办法保证用户访问的是哪台服务器,如果用户全部随机到服

Java_web12138667的博客 5530

DAMMFND: Domain-Aware Multimodal Multi-view Fake News Detection

虚假新闻的泛滥不仅严重阻碍了互联网社交媒体的健康发展,还在政治、经济和社会层面造成了实际危害,凸显了自动化虚假新闻检测的重要性(Zhou 等,2015;Cui 等,2019;Zhu 等,2022a;Li 等,2024c,b,a)。现有的虚假新闻检测方法通常聚焦于特定领域的新闻,例如健康或政治领域。然而,在现实世界中,社交媒体上的新闻往往跨越多个领域,这就要求现有的虚假新闻检测方法必须考虑多域泛化(Nan 等,2021;Qi 等,2019;Zhu 等,2022b)。

qq_52053775的博客 337

云计算底层技术之高性能集群趣谈

本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。 在孙悟空的七十二变中,我觉得最厉害的是分身能力,这也是他百试不得其爽的终极大招,每每都能打得妖怪摸不着北。 集群,学名叫 Cluster,可以翻译为簇...

weixin_34295316的博客 373

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【科普】集群趣谈:孙悟空分身术

本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,号内有大量书籍和视频资源,后台回复**「1024」**即可领取,欢迎大家关注,二维码文末可以扫。 在孙悟空的七十二变中,我觉得最厉害的是分身能力,这也是他百试不得其爽的终极大招,每每都能打得妖怪摸不着北。 集群,学名叫 Cluster,可以翻译为簇、聚类、集群等多种意思,不同的翻译,在技术世界里...

638

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

趣谈Greenplum一些故事【转】

有时候真的感叹人生岁月匆匆,特别是当一个IT人沉浸于某个技术领域十来年后,蓦然回首,总有说不出的万千感慨。 笔者有幸从04年就开始从事大规模数据计算的相关工作,08年作为Greenplum 早期员工加入Greenplum团队(当时的工牌是“005”,哈哈),记得当时看了一眼Greenplum的架构(嗯,就是现在大家耳熟能详的那个好多个X86框框的图),就义无反顾地加入了,转眼之间,已经到了...

murkey的专栏 322

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

趣说GBase 8a数据库集群(一)

GBASE

qq_33800672的博客 280

终于有网易大牛把我在大学没学会的《计算机网络协议》讲清楚了

网上有很多关于网络协议的文章,看的时候感觉别人说得很有道理,自己好像理解了,但是经不住问,一问就会发现,大概的流程明白了,可是很多细节还是不知道。主要内容包括:通信协议概述、从二层到三层、重要的传输层、常用的应用层、陌生的数据中心、云计算中的网络、容器技术中的网络、微服务相关协议、网络协议知识串讲等等。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

m0_63437643的博客 86

【复盘】2023年终总结

【复盘】2023年终总结

芝兰生于深谷,不以无人而不芳 1808

2023年总结与2024年展望

2023年是极度不平凡的一年。这一年个人主动换岗位2次,从华为计算昇腾转到了华为云的开源小组,又从开源小组转到了autopilot小组。每天都基本是23点以后到家(做到了9236)。其人有道,于志于坚!按照惯例,还是要每年总结一下,以便记录,分析和提高。

zishen的专栏 1258

Kubernetes 凭什么成了大厂标配?

过去几年,以 Docker、Kubernetes 为代表的容器技术已发展为一项通用技术,BAT、滴滴、京东、头条等大厂,都争相把容器和 K8S 项目作为技术重心,试图“放长线钓大鱼”。就...

k8s 生态 198

分布式系统架构设计实战:从理论到落地的10个关键步骤

分布式系统架构设计是现代后端开发的核心挑战之一,涉及高可用、一致性、可扩展性等关键问题。本文将结合极客时间系列课程中的实战经验,带你掌握从理论到落地的完整流程,帮助你构建稳定可靠的分布式系统。 ## 1. 需求分析与场景建模 📋 在开始架构设计前,首先需要明确业务需求和技术边界。推荐参考[《从0开始学架构》](https://link.gitcode.com/i/1ecad6283fb44c

gitblog_01047的博客 409

数据中心的操作系统——kubernets

有了 Kubernetes,我们就能像管理一台 Linux 服务器那样,去管理数据中心了。

key_3_feng的博客 515

分布式事务详解

最近很多公司都是在使用分布式架构,比如dubbo+zookeeper的或者是springcloud全家桶的,不管是什么技术,一般都会涉及到分布式事务.今天我们来谈谈分布式事务. 首先什么是分布式:图片就是百度知道里面的: 个人理解分布式简单的说就是原本由一台机子完成,现在由很多机子一起完成.得到结果是一个整体.好比以前单体项目就是部署在一个tomcat容器里面,放在一台电脑上面,连接一个数据库...

你就像甜甜的益达 479

初学Hadoop

初识Hadoop 概述 大数据时代,数据的存储和挖掘至关重要。 大数据处理平台追求高可靠性、高扩展性、高容错性和低成本。 Hadoop的优势: (1).Hadoop底层的分布式文件系统具有高拓展性,通过数据冗余保证数据不丢失和提高计算率,同时存储各种格式的数据。有多种计算框架,即可离线计算也可以进行在线实时计算。 (2).Hadoop是架构在廉价的硬件服务器上。产品开源免费,开发维护成本低。 (3).Hadoop具有成熟的生态圈,有许多辅助系统对数据进行处理。 什么是大数据 大数据就是对数据的加工能力

weixin_44401081的博客 231

​系列文章分类汇总202307

总结归纳排查线上问题的9种方式系统设计的11个考虑系统架构的11条原则四种常用的微服务架构拆分方式开发者必装的软件工具总结写出结构优雅代码的4个技巧工作中沟通的4点感悟技术境界的二三四工作中常见的五种技术leader管理者的四种不同授权风格代码评审的三怕项目改进的四个抓手程序员工作中的三个锦囊源码元宇宙mybatis的本质和原理手撕spring核心源码,彻底搞懂spring流程手撕Spring源码...

xiexiaojing的博客 2086
上一篇: MYSQL索引查询问题质疑
下一篇: 【MySQL运行原理篇】底层运行结构
_Romeo
_Romeo 优质创作者: 后端开发技术领域 优质创作者: 后端开发技术领域
博客等级 码龄8年 2万+粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Romeo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值