呼和浩特网站网站建设,怎么用flash做游戏下载网站,注册代理公司需要什么条件,小型网站开发 论文戳蓝字“CSDN云计算”关注我们哦#xff01;麦当劳作为世界快餐业的巨头之一#xff0c;可以说是风靡全球圈粉无数。小编个人也是麦当劳的忠实粉丝之一。今天的文章主要就是从餐饮店的角度来讲讲的互联网技术架构发展故事。为了方便故事的讲解#xff0c;我们假定创始人名称… 戳蓝字“CSDN云计算”关注我们哦麦当劳作为世界快餐业的巨头之一可以说是风靡全球圈粉无数。小编个人也是麦当劳的忠实粉丝之一。今天的文章主要就是从餐饮店的角度来讲讲的互联网技术架构发展故事。为了方便故事的讲解我们假定创始人名称为王小二和赵铁柱。 以下故事纯属虚构如有雷同不胜荣幸。 数据源单独存储王小二和赵铁柱拿到了家里人给的第一笔资金后计划在村里开启一家快销食品的饮食店但是却发现缺少了食材供应商。图片来源网络赵铁柱我认识一个朋友他那边提供有大量的食物材料他叫MySQL。于是乎王小二就和赵铁柱一起去寻找MySQL厂商一起签订食材提供合作协议食材供应不足的问题暂时告一段落了。这就叫MySQL数据源存储。图片来源网络这属于最原始的单机版架构通常将业务服务器和数据库服务器进行分离开来在对于请求量较小的业务场景时可以这么进行架构设计。比较经典的搭配就是将所有的核心代码都封装在一个mvc模块中用些常见的ssh、ssm、springboot等框架技术进行封装然后数据库部分使用MySQL。 前后端分离随着王小二和赵铁柱的不断努力饮食店光顾的客人越来越多发现光靠两个人根本忙不过来两个人而且既要做招待客人又要烹饪食材质量很难保证。图片来源网络王小二我发现我们没有规划好分工经常会忙到一起去职责很乱效率很低下。赵铁柱是的所以我有个想法。我口才好我来招待客人你的厨艺厉害负责后台的食物烹饪如何这样子的话我们前后台分离职责划分一致更加能发挥各自的长处。王小二有道理那我们就这样试试吧。就这样在接下来的一周里面王小二和赵铁柱分工变得明确了起来工作起来不亦乐乎。这就叫前后端分离。图片来源网络前后端分离的主要目的是将前端开发人员的职务和后端开发人员的职务进行明确划分同时也有利于代码进行解耦和维护拓展性也会加强许多通常选择这种架构进行开发的技术方案需要有前端开发人员和后端开发人员常用的技术框架搭配可以是vue、react…… 结合ssh、ssm、springboot系列进行搭配。但是这样的搭配仍然是有很大的性能局限性。 负载均衡渐渐的两人发现客人来的越来越多光靠一个人烹饪的话进度实在是赶不上。于是乎二人又开始琢磨对策了。图片来源网络王小二现在光靠我一个人来处理每天客人的订单实在是太累了需要多找几个人来帮忙才行。赵铁柱ok我帮你找下。打开了手机联系了好几个以前认识的朋友....到了下午来了好几个帮忙的新人分别是Nginx、Tomcat1、Tomcat2和Tomcat3然后逐一进行了自我介绍。图片来源网络Nginx你好我是出生于俄罗斯那边的Nginx来自隔壁C语言村我们对于客户的需求处理效率极高可以快速做出反馈通知给后台这边。所以我觉得我可以胜任这边的店小二一职。Tomcat1、Tomcat2和Tomcat3我们是来自对面JAVA村的人处理前台的信息一直都以稳定、高效著称相信我们的加入会帮你减轻很多负担。于是大家一起商量好了对策Nginx负责接收客人的点菜请求信息然后通过一个上菜窗口来传递信息给后台然后后台进行食物的准备。那么Nginx是如何将订单消息传输给后台的呢现在有三个Tomcat厨师每次下单之后应该通知哪位厨师做菜呢王小二灵机一动指定了几条策略轮询访问按照Tomcat1--Tomcat2--Tomcat3的顺序轮流访问通知不同的厨师来做菜。随机访问每次有客人下单Nginx都通过抽签的形式来进行随机指明厨师做菜。最少链接法谁的需求单最少就指令相应的厨师做菜。响应最快法哪位厨师的做菜效率高就选择哪位厨师。哈希法下单的顾客如果是小孩就交给Tomcat1如果是年轻人就交给Tomcat2如果是中年人或者老人就交给Tomcat3。这就是前后端分离负载均衡。图片来源网络当随着客户请求的次数增加我们通常会采用这种模式的架构进行搭建项目将前端页面放置在nginx服务器上边进行加载然后通过在nginx里面进行upstream的配置定制相应的负载均衡策略在后端业务模块通过使用Tomcat来进行横向扩展提高性能的承载能力。MySQL的主从架构王小二和赵铁柱两个人因为请了员工的帮忙现在已经开始过上了小老板的生活了。但是渐渐的随着的客人光顾的次数不断增加又遇到了一个新的难题MySQL那边开始出现供不应求的情况了。终于有一天MySQL那边的生产机器坏了导致该日一整天的生意都中断了。图片来源网络MySQL:你们店铺现在的生意实在是太火爆了光靠我一个厂在做食材输出压力实在是太大了。我认识个我的同乡兄弟slave我把他叫来一起帮忙生产吧。王小二那如果你这边再次出现生产中断你的那个兄弟会怎么处理啊MySQL放心如果后边我的生产在遇到了问题slave会立马跑来顶替我的任务这样就能解决之前压力中断导致的问题了。王小二有道理那就这样安排吧。这就叫做MySQL的主从架构。图片来源网络随着系统应用访问量逐渐增大单台数据库读写访问压力也随之增大。当读写访问达到一定瓶颈时 数据库的读写效率骤然下降甚至不可用。为了解决此类问题通常会采用mysql集群方式。当主库宕机后集群会自动将一个从库升级为主库继续对外提供服务。Master主机将数据操作记录在指定的日志文件里面然后Slave主机之间通过IO线程来读取日志内容同步操作到本机上去。一旦出现了故障通过配置的keepalived信息可以自动实现主从的切换。分库分表突然有一天有个大客户光顾了餐饮店一次定下了一大笔的订单导致MySQL 厂生产食材的压力趋于极限。王小二和赵铁柱看到MySQL厂商连夜生产食物已经喘不过气了于是某天晚上大伙们又一起坐下来进行商量了。图片来源网络MySQL这次这笔订单的数目实在是太大了光靠我们两厂根本忙不过来。需要叫上我的另一个兄弟MyCat和其余MySQL厂来帮忙才行。于是生产方的策略进行了改变由MyCat作为接单队长然后下令给多个MySQL厂商每个(MySQL)厂商也叫上自己的(salve)小弟进行协助熬了好几个通宵很快这笔大订单就搞定了。这就叫做基于MyCat中间件的分库分表方案。图片来源网络使用MyCAT这种中间件的核心功能点就是分库分表将一个大表水平划分为了N个小表。MyCAT的原理可以用“拦截”一词来形容。它拦截了用户发送过来的SQL语句首先对SQL语句做了一些特定的分析如分片分析、路由分析、读写分离分析和缓存分析等然后将此SQL发往后端的真实数据库并将返回的结果做适当处理最终返回给用户。微服务架构由于之前接下了一大笔订单店铺的经济一下子好了许多。于是王小二和赵铁柱开始扩大了店铺的面积请了更加多的Tomcat厨师来干活。但是渐渐地又遇到了新的问题。图片来源网络王小二你有没有发现这些订单有一定的规律啊就是通常薯条的下单量比汉堡的需求量要大雪糕甜筒类的需求量比汽水饮料的需求量要高。Tomcat1他炸的薯条特别好吃适合分配去负责薯条领域Tomcat2做汉堡的能力很出众适合分配去负责汉堡区域Tomcat3做甜点和冷饮的能力很厉害适合去负责这些部分。赵铁柱嗯嗯我觉得你说的很有道理那就让他们分别带些小弟负责不同的食物模块吧。等等一个模块里面有多个厨师干活那该怎么进行模块内的任务分配呢王小二你之前不是给每个模块都指定了一个负责人嘛例如薯条部分就由负责人扮演消费者一角色其余厨师扮演服务提供者一角色。负责人采用你之前制定的策略负载均衡策略来进行指派任务即可。所有的厨师都必须在Zookeeper员工报道系统上进行报道这样我们可以统一查看工作详细信息。于是没过几天后台那边的厨师分配结构又发生了一次组织调整。经过几周的演练两位老板发现生产效率大大提升。这就叫做微服务架构。图片来源网络“微服务架构”一词大概也是近些年来才出现它将整体的业务模块拆分成了多个小而独立的子模块然后每个子模块之间都会进行基于不同协议的相应通信。互联网公司里面经常会有微服务技术的身影比较著名的微服务框架有Dubbo和SpringCloud。消息中间件随着厨房的模块划分仔细之后渐渐的两位老板又发现了相应的问题情况了。炸薯条的厨师想要和负责汉堡模块的厨师进行沟通的话需要通过隔空喊话的形式来进行信息交流。由于厨房的环境嘈杂经常会出现传输无效或是无法确认是否传输到位的情况。图片来源网络于是机智的王小二找到了厨师们进行讨论然后有人提出建议去找隔壁村的朋友RocetMQ进行帮忙。后来RocetMQ加入了饮食店工作主要负责帮各个厨师之间的进行消息的传递大大提升了各个厨房模块之间工作的效率。这个叫做消息中间件传输数据。图片来源网络MQ消息队列主要是在各个微服务模块之间进行相应的数据中转能够起到系统解耦、削峰等作用因此这种技术成为了微服务架构中非常受欢迎的技术中间件。常见的MQ消息队列中间件有RabbitMQ、ActiveMQ、RocketMQ和Kafka。缓存设计由于雪糕等冷饮的需求量急剧上升店铺经常需要去找食材厂商那边领取相应食材原料然后运输过来店铺这边运输的形式太慢了加上店铺本身能存储食材的室内空间有限王小二和赵铁柱又要开始头疼了这时候nginx和他们提了个建议。图片来源网络nginx我们每次从厂房那边运输食材过来但是店铺的室内仓库太小了一次能保存的食材也是有限不妨试试在店铺后院搭建一个临时仓库增加我们的食材存储能力王小二你有什么好的人选和方案吗nginx我认识一个叫做Redis的朋友他能帮上忙。第二天Redis就过来了然后在店铺的周边设置了几个临时仓库点进行食材的临时存储。这样就可以保证不需要每次都去厂商那边拿食材了提高了厨师们的工作效率。Redis为了保证仓库存储的食材能尽可能的足够因此搭建了多个仓库临时点由于每个仓库都有自己独立的发电机为了防止某间仓库的发电机崩溃之后食材不能得以保鲜因此每间仓库都有相应的备用子仓库。这就是分布式Redis缓存分片架构。图片来源网络上图中的redis图标描述的redis cluster方案架构通过对数据进行哈希计算之后放在不同的槽点然后每个槽点都设置主从模式增强其容错性采用分片模式的缓存架构可以增加系统的缓存数据量。或许理想的微服务架构是比较清晰明确的各个模块负责各个模块的内容但往往现实中却很难做到完美无暇。理想 vs 现实图片来源网络王小二和赵铁柱开店铺的模式纯属虚构如有雷同不胜荣幸......图片来源网络戳下面有惊喜哟???福利扫描添加小编微信备注“姓名公司职位”加入【云计算学习交流群】和志同道合的朋友们共同打卡学习推荐阅读5大必知的图算法附Python代码实现适合小团队作战奖金招聘绿色通道这一届算法大赛关注下顶配 12699 元、没有 5G“浴霸三摄”的 iPhone 到底长什么样备受期待的原子交换将如何对中心化交易所构成威胁谷歌NIPS论文Transformer模型解读只要Attention就够了马云淡出「理想国」真香朕在看了