三分钟读懂tt猫分布式微服务和集群之路

author author     2022-09-23     303

关键词:

针对新手入门的普及,有过大型网站技术架构牛人路过,别耽误浪费了时间,阅读之前,请确保有一定的网络基础,熟练使用Linux,浏览大概需要3-5分钟的时间,结尾有彩蛋。

分布式

小马正在经营一个在线购物网站,名叫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存储用户状态数据。

本文出自 “小柒2015” 博客,请务必保留此出处http://itstyle.blog.51cto.com/2205083/1972470

一片非常有趣的文章三分钟读懂tt猫分布式微服务和集群之路

...确保有一定的网络基础,熟练使用Linux,浏览大概需要3-5分钟的时间,结尾有彩蛋。目录分布式微服务负载均衡集群高可用集群弹性云故障转移总结分布式小马正在经营一个在线购物网站,名叫TT猫,有商品管理、订单管理、用... 查看详情

上周热点回顾(9.11-9.17)

...集合:IDE、分析、自动化工具等(Sweet-Tang)· 三分钟读懂TT猫分布式、微服务和集群之路(小柒2012)· 大龄程序员肉翻记录【一】(JavaNerd)· SSH端口转发(s 查看详情

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

....net/qq_37788067/article/details/79250623概念:集群是个物理形态,分布式是个工作方式。1.分布式:一个业务分拆多个子业务,部署在不同的服务器上2.集群:同一个业务,部署在多个服务器上分布式是指将不同的业务分布在不同的地方... 查看详情

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

概念:集群是个物理形态,分布式是个工作方式。1.分布式:一个业务分拆多个子业务,部署在不同的服务器上2.集群:同一个业务,部署在多个服务器上分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集... 查看详情

集群与分布式微服务

简明扼要分布式:一个业务分拆多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器上解释:集群每一台服务器实现的功能【没有什么差别】。分布式每一台实现的功能是【有差异】集群是同一个业务部署... 查看详情

分布式微服务集群概念梳理

分布式、微服务、集群概念梳理分布式从本质上讲分布式表明的是一种解决方案,即由传统的单体应用,扩展成多体结构。它的实施基础就是将可以独立出来的功能模块放在不同的服务器上,然后通过REST,RPC,消息中间件等方式... 查看详情

大型企业分布式微服务云架构服务组件

大型企业分布式微服务云架构服务组件实现模块化、微服务化、原子化、灰度发布、持续集成SpringCloudBusSpring事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与SpringCloudConfig联合实现热部署。HystrixNetflix... 查看详情

分布式微服务云架构

分布式、微服务、云架构JAVA语言开发、跨平台、高性能、高可用、安全、服务化、模块化、組件化、驱动式开发模式commonserviceeurekaNetflix云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转... 查看详情

分布式微服务云架构

分布式、微服务、云架构JAVA语言开发、跨平台、高性能、高可用、安全、服务化、模块化、組件化、驱动式开发模式commonserviceeurekaNetflix云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转... 查看详情

springcloud分布式微服务云架构构建

大型企业分布式微服务云架构服务组件实现模块化、微服务化、原子化、灰度发布、持续集成commonserviceeurekaNetflix云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。commonserviceconfigSpring... 查看详情

分布式微服务云架构构建电子商务平台

大型企业分布式微服务云架构服务组件实现模块化、微服务化、原子化、灰度发布、持续集成commonserviceeurekaNetflix云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。commonserviceconfigSpring... 查看详情

互联网分布式微服务云平台规划分析--平台整体规划

...、消息的及时性、业务的制动化处理,我们选择鸿鹄cloud分布式云架构平台作为公司产品核心企业架构。产品平台规划微服务注册中心(分布式集群部署)、微服务配置中心(分布式集群部署)、服务网关平台(分布式集群部署... 查看详情

springcloud分布式微服务架构—集成项目简介

SpringCloud集成项目有很多,下面我们列举一下和SpringCloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的。在学习SpringCloud之前大家必须了解一下相关项目,希望可以帮助到大... 查看详情

单体架构,集群架构,soa架构,分布式微服务架构

演变过程一.单体应用架构为什么要用单体架构?单体架构的特点就是:所有的业务功能都在一个项目里面逻辑也简单还不贵适合于小型项目。在以前计算机才刚刚普及的时候,那个时候基本上都是单体项目架构,... 查看详情

springcloud互联网分布式微服务云平台规划分析--springcloud平台整体规

...、消息的及时性、业务的制动化处理,我们选择鸿鹄cloud分布式云架构平台作为公司产品核心企业架构。产品平台规划微服务注册中心(分布式集群部署)、微服务配置中心(分布式集群部署)、服务网关平台(分布式集群部署... 查看详情

springcloud互联网分布式微服务云平台规划分析--springcloud平台整体规

...、消息的及时性、业务的制动化处理,我们选择鸿鹄cloud分布式云架构平台作为公司产品核心企业架构。产品平台规划微服务注册中心(分布式集群部署)、微服务配置中心(分布式集群部署)、服务网关平台(分布式集群部署... 查看详情

互联网分布式微服务云平台规划分析--平台整体规划

个人分类:微服务分布式SpringCloud编辑导语近期公司孵化了一个互联网产品,随着业务发展,产品运营后用户数据量(过亿)、业务数据量(过100亿)较大,技术团队配合产品、运营快速定制化开发,还要考虑产品涉及的资金安... 查看详情

企业分布式微服务云springcloudspringbootmybatis断路器(hystrix)

在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在SpringCloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不... 查看详情