分布式、微服务、集群

对微服务、集群、SOA、分布式的理解 一、微服务 1、什么是微服务 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想 2、通俗理解 由于业务间的逻辑越来越复... 阅读详情

一、分布式

小马正在经营一个在线购物网站,名叫TT猫,有商品管理、订单管理、用户管理、支付管理、购物车等模块,每个模块部署到独立的云服务主机。

现在,程序员小明同学浏览TT猫,想买一款牛逼的cherry机械键盘来提升自己的工作效率。于是他打开TT猫首页、搜索商品、浏览详情以及评论、添加购物车、下单、支付等一系列操作。小明同学一气呵成,流畅地完成了购物,当然也花费了不少银子。

但系统又是如何进行这一系列操作,如下图错综复杂的调用关系(自行忽略部分细节)。用户看不见、摸不着,但整个下单过程却行走在网络之间。

TT猫把所有功能模块分布部署在不同的地方,最终完成了用户一系列的请求,这大概就是一个分布式系统吧。

二、微服务

博主认为微服务是一种架构,也是在分布式范畴之内的。多微才叫微?在分布式系统中,微服务更加强调单一职责、轻量级通信(HTTP)、独立性并且进程隔离。好了,没什么好说的了,实践出真知,建议大家多多了解 Spring-Cloud相关微服务组件。

TT猫,每年都会搞一些活动,比如女生最爱的光棍节(双11),夜深人静的时候会瞬间涌入大量用户,指不定就会把某个服务打趴下。

这时候,问题来了用户下单超时,或者直接500错误,如何去解决?

三、负载均衡集群

这种事情怎么可以在如此重要的活动中出现?其实马爸爸提前购买了多台服务器,工程师们已分别把各个业务功能模块复制部署了多份。

每个相同功能的模块,它们构成了一个组,并以单一系统的模式加以管理。当妹子进行下单操作时,实际上是跟一个集群组发生关系,但系统会确保只跟其中一个发生了关系,具体跟谁,集群组有自己的调度算法,不要担心跟妹子发生不了关系。

举个古代猥琐而不淫荡的例子吧,如果你生活在古代,年18,未婚,高富帅,急需解决个人生理问题。故,你来到了传说中的风月场,咳咳,这个古代可是合法的。这时候老鸨或者大茶壶过来招呼你了,如果没有特殊要求,你会被带进一个屋里,里面有个风尘女子......

画风一转,有没有闪瞎自己的程序员万年钛合金狗眼。你可以这么理解,老鸨就是负载均衡器,内置调度算法,风尘女子就是集组其中的一个。

好了,言归正传,省略号自行脑补,小伙伴们看到这里可能会问了,平时生产环境中我们都用什么做负载均衡器?

财大气粗的用硬件F5

不差钱的使用DNS负载均衡

技术牛逼的用LVS

苦逼的创业型小公司只能使用Nginx

当然,负载均衡器不止以上几种,有兴趣的同学自行谷歌了解。

《论知行》篇中说:知其然知其所以然,简单说下这几种负载均衡器到底是如何行走于网络中的吧,学过网络的朋友大概都清楚七层网络模型。

首先一张图,让大家重温一下大学基础课程。

有没有瞬间课堂书本的感觉,不过瘾?再来一张TCP/IP五层模型。

在每一层都工作着不同的设备,比如财大气粗,不差钱的国企使用的F5工作在4-7层,一般互联网企业使用的LVS工作在传输层,使用最广泛的Nginx工作在应用层。

最后来聊一下DNS负载均衡,虽然DNS最原始也是最简单的方法,但是DNS负载均衡的控制权在域名服务商手里,NDS存在多级解析,缓存A记录的问题,以及网站自身无法做更多的管理。这样导致了一般中小公司很少使用。

当然,自身实力够硬,DNS负载均衡也是个不错的选择。下图是检测TT猫域名的A记录得到的部分信息,仅供参考,自行领悟。

四、高可用集群

既然是集群,就不能够出现单点故障,如果大家关注云服务,可能会接触到以下词汇,“双机热备”,“两地三中心”等等词汇。

双机热备是高可用的一种体现形式,如上图所示,生产环境中我们存在两个负载均衡节点,主节点处于激活状态,另一个节点处于备用状态,当主节点意外宕机,可以通过keepalived检测并迅速切换到备用服务,保障业务正常运转。至于两地三中心,下图可能会让大家理解得更加透彻,图片源于网络。

五、弹性云

小马哥为了准备双十一,购置了大量服务器,但活动一过,平时的用户访问量并不能满足服务器的接客能力,导致大量服务器处于空窗期。

这还了得,不能闲着啊,精明的小马哥一拍脑袋,组建了TT云团队。通过多年的努力开发了按量付费云、弹性IP、共享带宽等等产品为中小企业开源节流。

六、故障转移

小明同学觉得这款键盘不错,美滋滋的点击购买按钮,突然跳到了登陆页面。

什么鬼,裤子我都脱了,你就给我看这个?普通用户可能不会觉得有什么问题,重新登陆一次就是了。但小明作为一只严谨的程序猿,他想弄明白其中到底发生了什么。

经过仔细的查阅资料分析,小明得出了以下结论:

发生以上故障,小明以为自己下单的那台服务挂机了,请求被分发到另一台服务上,但为什么会跳到登陆页面呢?作为一名程序员,小明清楚的知道服务分为有状态和无状态的,尽管我们平时的HTTP请求是无状态的,但是一般会通过cookie或者session来确定用户状态。

到这里,各位看官应该明白到底是个什么鬼了吧。就拿我们比较熟悉的Tomcat来说,我们的用户信息一般存储在session中,而session存储在Tomcat内存中。浏览器通过cookie中的JSESSIONID来与服务器进行认证。

然而服务器挂了,下单请求被分发到另一台服务,自然小明再也找不到他的session了。

小明同学把问题反馈给了TT猫,小马哥一看这还得了,集群都做了还差这点,于是赶紧叫工程师们拿出解决方案。

工程师最终提出了两种方案:

服务器用户状态复制(成本大,需要软硬件支持,有延迟,存在失败的风险)

统一存储用户状态(我不说话,我就笑笑)

最终,工程师们采用第二种方案,使用Redis存储用户状态数据。

知识补充

最近接触并使用了阿里云的负载均衡SLB ,大体了解了一下TT猫的负载均衡实现,以下架构实现源于TT猫。

负载均衡采用集群部署,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳定性。阿里云当前提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡服务。

四层采用开源软件LVS(Linux Virtual Server)+ keepalived的方式实现负载均衡。

七层采用Tengine实现负载均衡。

如下图所示,各个地域的四层负载均衡实际上是由多台LVS机器部署成一个LVS集群来运行的。采用集群部署模式极大地保证了异常情况下负载均衡服务的可用性、稳定性与可扩展性。

LVS集群内的每台LVS都会进行会话,通过组播报文同步到该集群内的其它LVS机器上,从而实现LVS集群内各台机器间的会话同步。如下图所示,当客户端向服务端传输三个数据包后,在LVS1上建立的会话A开始同步到其它LVS机器上。图中实线表示现有的连接,图中虚线表示当LVS1出现故障或进行维护时,这部分流量会走到一台可以正常运行的机器LVS2上。因而负载均衡集群支持热升级,并且在机器故障和集群维护时最大程度对用户透明,不影响用户业务。

集群、分布式及微服务间的区别与联系 集群更适合用于需要高度可用性和负载均衡的场景,且集群内的节点通常比较相似,便于管理,但扩展性和灵活性较差。 分布式系统具有较强的扩展性和灵活性,适合处理大规模和分布式任务,但由于涉及到多个自治节点,系统的复杂度较高,维护和一致性保障也更具挑战性。 在实际应用中,集群和分布式系统往往可以结合使用,以弥补各自的不足。 阅读详情

相关推荐

告别ArcGIS小红叉:从‘无法验证登录信息’到成功连接在线资源的完整排错记录

本文详细记录了从Windows便签的网络错误到ArcGIS连接问题的完整排错过程。通过分析代理服务器、DNS配置和系统网络设置,解决了ArcGIS无法验证登录信息的问题,提供了实用的网络优化方案和技术排错思路。

weixin_26800111的博客 390

计算机软件架构发展史

IOC就是将创建对象的传递交给spring容器,如果要获取,就从容器中获取对象

weixin_43965193的博客 743

HFSS螺旋线圈的设计与仿真

undefined.全局变量在这里进行设置:Project/Project Properties, browse and setup the global variables.undefined.方程中的局部变量设置:HFSS/Design Properties, browse and setup the local variables。按照下图填写曲线的方程内容:fill the parameters according to the setup in the following picture。

johnboat的专栏 3845

什么是微服务、分布式?

文章目录前言1.什么是微服务?2.什么是分布式?3.Spring Cloud是个毛?4.Spring Cloud Alibaba是个毛? 前言   盼望着,盼望着,春天来了。万物复苏,我也该从安逸的工作和生活中苏醒了。机会总是留给有准备的人,我也该成为一个时刻能抓住机会的“有准备的人”。从今天起,开始学习微服务,复习/补习基础知识吧! 1.什么是微服务?   微服务是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用

weixin_45027051的博客 5975

逆向实战:360加固DEX解密全流程解析(附Frida脚本与SoFixer修复技巧)

本文深入解析360加固DEX解密的全流程,涵盖动态Hook技术、Frida脚本应用及SoFixer修复技巧。通过实战案例详细展示如何识别加固特征、定位关键函数、实现ELF文件修复,并解析RC4和zlib解密算法,为逆向工程师提供全面的技术指导。

weixin_29323551的博客 609

6种常用数据分析方法详解:从描述统计到时间序列

数据分析是连接数据与业务决策的桥梁。面对海量数据,掌握描述性统计与对比分析可快速了解现状与差距;相关分析与回归分析能揭示变量间的关联与影响大小;聚类分析用于用户分群,时间序列分析则预测未来走势。这些方法广泛应用于用户画像、销量预测、活动效果评估等场景,是数据分析师和运营人员必备的技能。系统掌握这6种核心方法的使用场景、原理逻辑与实操步骤,能够帮助读者建立完整分析框架,真正用数据驱动业务增长。

weixin_34405354的博客 335

什么是分布式和微服务?

综上所述,分布式系统和微服务架构都是现代软件开发中的重要概念和技术手段。分布式系统强调系统的分布性和协作性,而微服务架构则是一种实现分布式系统的具体方法和技术手段。在实际应用中,需要根据具体的需求和场景来选择合适的技术方案。

cuishujian_2003的博客 1534

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 331

分布式和微服务是什么?二者的区别又是什么?

文章目录一、分布式系统二、微服务架构三、分布式和微服务的区别 一、分布式系统 在《分布式系统原理与范型》一书中有如下定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”; 分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。 分布式系统(distributed system)是建立在网络之上的软件系统。 首先需要明确

一只黑猩猩 1万+

Python爬虫实战:实时监控美国SEC官网文件更新,助你第一时间掌握市场动态

在资本市场中,信息就是财富。美国证券交易委员会(SEC)官网公开了大量公司披露文件,涵盖财报、招股说明书、内幕交易等重要信息。对投资者、分析师及法律合规人员来说,实时监控这些公开文件具有重要价值。

2201_76125261的博客 594

AutoCAD中圆弧折线化方法与实现

在AutoCAD中,圆弧折线化是将圆弧曲线转换为由一系列线段组成的折线曲线的过程。本文将介绍如何使用LISP编写代码来实现圆弧折线化,并提供相应的源代码。上述示例代码将生成一个以坐标原点为圆心、起点为(5.0, 0.0, 0.0)、终点为(0.0, 5.0, 0.0)、半径为5.0、角度为90度的圆弧的折线表示。通过使用上述的LISP代码,你可以在AutoCAD中实现将圆弧转换为折线的功能。你可以根据需要修改代码中的参数来适应不同的圆弧转换需求。函数,并传入圆弧的起点、终点、圆心、半径和角度参数。

VcuOcaml的博客 1417

分布式|微服务,看这一篇就够了

分布式,微服务的概念微服务主要是面对现在技术发展后,业务复杂度提升、用户量激增,单体项目很难再在这种高并发的场景下发挥作用。且业务的复杂度的提升,代码量几何倍数增长,在一个系统,一个项目下放置所有代码,对于代码的维护与解耦,都是很大的挑战。所以我们使用微服务的架构,将一个大的项目,拆分成多个独立的的系统,使用网络通信来让他们相互协调与合作,达到形如一个系统的效果。

rivers_cheng的博客 1697

蓝牙EDR模式中GFSK调制如何过渡到DPSK调制

这两份文档片段揭示了蓝牙Modem设计中非常精深的部分。它的核心思想是:通过精心的脉冲形状设计和重叠,来保证幅度连续;通过在保护间隔内执行一套复杂的“相位平滑算法”(重复、斜率保持、寻找基准点、冻结),来保证相位连续。Figure 3-2 则是将这个思想用图形化的方式展现出来,说明了脉冲在时间轴上的对齐和叠加关系。这种设计确保了发射机能够严格符合蓝牙规范的要求,实现不同调制方式之间的平滑、无毛刺切换,从而保障了通信的可靠性和高效的频谱利用率。

m0_49540263的博客 283

集群、微服务与分布式

集群、微服务与分布式

weixin_58473601的博客 3844

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

集群、分布式、微服务的区别

写在开始:本文不是原创,而是对网上多个大佬们回答的个人总结,如有雷同,就是copy。 一、集群 指同一种组件的多个实例,形成的逻辑上的整体。 单机处理到达瓶颈的时候,你就把单机复制几份,这样就构成了一个“集群”。集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。 但问题是用户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较小的节点来处理,这样使得每个节点的压力都比.

桔子大大 950

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

集群/微服务/分布式

定义:集群是指将多个计算机节点(服务器)通过网络连接在一起,协同工作以提供更高的性能、可用性和可扩展性。这些节点通常运行相同的软件或服务,对外呈现为一个统一的系统。特点高可用性:通过冗余的节点部署,当部分节点出现故障时,其他节点可以接管其工作,确保服务不中断。可扩展性:可以根据业务需求方便地添加新的节点到集群中,以提高整体性能和处理能力。负载均衡:能够将工作负载均匀地分配到各个节点上,避免单个节点负载过高,充分利用集群资源。应用场景:广泛应用于各种大规模计算、数据处理、网络服务等领域。

sv 2209

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

集群、分布式、微服务的区别和介绍

集群、分布式、微服务 区别与介绍

大道至简,持之以恒! 5791

微服务,分布式和集群区别(彻底搞懂)

从概念理解,分布式服务架构强调的是服务化以及服务的分散化,微服务则更强调服务的专业化和精细分工;从实践的角度来看,微服务架构通常是分布式服务架构,反之则未必成立。所以,选择微服务通常意味着需要解决分布式架构的各种难题。微服务和分布式区别 面试回答微服务是系统架构的一个设计方式,它是将复杂的业务拆分成多个微小的服,每个服务可单独运行和部署,服务与服务之前一个可以采用RPC来通信。分布式是一种系统的部署方式,主要是将同一个服务,拆分成可以去部署到多台机器。集群实质是将几台服务器集中在一起,实现同一业务。

weixin_44030143的博客 4100

分布式,微服务,集群的概念区别

概念: 集群是个物理形态,分布式是个工作方式。 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 1:分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。 分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。 举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器...

从放弃到开始 2155

集群、分布式、微服务

集群 在网站的用户量比较小、并发量不高的情况下,我们可以只用一个服务器来对外提供服务。但随着网站的发展,用户量可能会变得越来越大,并发量也随之增高,这个时候我们的单体服务器压力就会很大,可能会导致服务响应缓慢甚至是服务不可用。 大家都是程序员,那就拿程序员举个例子,比如我们公司某个团队接外包项目,而这个团队的成员只有一个人。。。UI设计、前端开发、后端开发、测试、数据库管理、运维等等都是这个苦逼老...

To be a great coder 588

集群,分布式和微服务的区别

一.概念 集群: 同一个业务,部署在多个服务器上 分布式: 同一个业务,拆分成多个子业务,部署在不同的服务器上 微服务: 同一个业务,按照功能模块拆分,每一个服务只对应一个功能模块 二.区别 集群是多台服务器一起处理同一个业务,可以使用负载均衡使得每一个服务器的负载相对平衡,集群中的一台服务器出现问题,该服务器所负责的业务可以由其他的服务器代为处理.集群是一种物理形态. 分布式是把一个业务拆分成多个子...

bakelFF的博客 2322

微服务、集群、分布式概念及区别

微服务、集群、分布式概念及区别定义二级目录三级目录 定义 微服务:微服务是一种架构风格,讲一个复杂系统拆分为多个子系统(微服务),有自己的独立进程,可单独部署,只关注自己的业务功能。 集群:同一个功能的项目(系统)部署到不同的服务器上,提高可用性。物理层面的设计。 分布式:将大系统拆分为多个子系统,分别部署到不同的服务器上。 二级目录 三级目录 ...

翩翩一叶扁舟 868

微服务、分布式概念-以及集群部署 vs 分布式部署

微服务架构和分布式系统是现代软件架构的两个重要概念。微服务强调将应用按业务功能拆分为独立的小型服务,每个服务可独立开发部署;分布式系统则关注将不同模块部署到多台服务器上,通过网络协作。两者常结合使用,微服务通常采用分布式部署。集群部署则是将相同应用实例部署多份,通过负载均衡提高可用性和性能。实际项目中,这三种方式往往结合应用,如微服务按业务拆分后分布式部署,关键服务再采用集群部署,共同构建高可用、可扩展的系统架构。

Yan的博客 1420

集群,分布式,微服务

转载自:集群,分布式,微服务概念和区别理解 1、概念 集群是个物理形态,分布式是个工作方式。 集群:同一个业务,部署在多个服务器上 分布式:一个业务分拆多个子业务,部署在不同的服务器上 微服务:是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 2、理解 1:分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中.

R的博客 184

浅谈集群,分布式和微服务的区别

是把一个业务中的各种功能模块进行拆分,给不同的服务去处理,每个服务只处理一个功能模块,该服务可以是单个服务器也可以是多个服务器集群,每个服务之间都是低耦合的.微服务是一种架构风格.微服务是系统架构上的一种设计风格,主旨是将一个原本独立的系统拆分成对各小型的服务,这些小型服务都可以独自在进程中运行,服务之间通过基于HTTP的RESTFUL API进行通信协助。分布式上的节点都能看作是一个集群。分布式,是将一个巨大的系统划分成多个小模块,这点跟微服务是一样的,都是将系统进行拆分,部署到不同的机器上。

qq_34246965的博客 2410

浅谈集群、分布式、微服务的异同

什么是集群集群是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。但是每台服务器并不是缺一不可,存在的作用主要是缓解并发压力和单点故障转移问题。我们可以...

运维派 964
上一篇: 面试之Session,Token相关区别
下一篇: 面试之SpringMVC与Struts2区别与比较总结
GoldWashing
博客等级 码龄8年 18粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值