从小饭馆客流量变大论云原生负载均衡

目录
  • 一、前言
  • 二、从路边摊说起
  • 三、开饭馆与负载均衡
    • 说说客户端负载均衡与服务端负载均衡
    • 利与弊:
  • 四、饭后沟通

一、前言

这是《大话云原生》系列的第二篇,第一篇《煮饺子与docker、kubernetes之间的关系》推出之后受到大家的欢迎,很多朋友联系到我给我加油打气,还得到了CSDN头部博主哪吒大佬的支持,感谢!我会继续写下去!

书接上回介绍了《煮饺子与docker、kubernetes之间的关系》之后,小娜同学(我老婆)问:为什么不把服务统一开发成一个应用?搞什么分布式?这样感觉很庞大,很复杂啊?为什么要这么搞?所以大话云原生第二篇-负载均衡篇,现在开始!

二、从路边摊说起

周五晚上加了班,下班的时候已经很晚了,打电话给小娜打算去吃烧烤,就去我们经常去的那家“夫妻摊位”烧烤。到了之后才发现“夫妻摊位”升级了,现在变成了“夫妻饭馆”。由于已经比较晚了,店里人并不多,就和老板娘聊了起来。聊聊小饭馆的昨天、今天和明天!

老板娘介绍到:“以前路边摊的时候我俩刚结婚,手里资金有限,就想着开一个路边烧烤摊。我老公负责烤串做菜,我呢、负责服务收银及上菜。挣点小钱!”。老板娘谦虚,等我年纪大了没准也搞个烤串的营生,谁让我爱吃呢!老板娘说之所以能走到今天,主要是因为以下几点:

她的摊位很少会出现长时间的等菜的现象。因为摊位的桌椅板凳的容量通常是有限的,通常也没那么多客人,食品总的需求量的上限也基本是固定的,相对好协调。

沟通顺畅、快速,这头点菜点串吼一嗓子、那边就开始做上了。做好了再吼一嗓子,就上菜了。

短小精悍、容易掉头。夫妻俩之所以选择从路边摊开始,是因为船小好掉头。有可能干一阵发现这个位置客流少,就可以立刻停止经营或者换个地方经营。

哎,别说,夫妻俩这个阶段就有点像一些软件服务创业公司,刚开始创业的时候,一般做的应用服务都是单体应用。笔者也见过一些小型创业公司上来就想搞微服务云原生,我觉得这不太现实。企业的架构都是一步一步衍进的,不要总想着一口吃一个胖子。如果京东淘宝从第一天做应用服务的时候就想做成今天的样子,他们一定活不到今天。就像一个没开过饭店的人第一次创业就要开五星级饭店,等待他的十有八九就是失败!

这里我所说的单体应用的特点,其实和路边摊的特点是差不多的:

能够接纳的请求数量时有限的,一是从需求上没那么多用户,二是创业公司资源限制,服务器的内存、CPU配置是有限的。

单体应用的视图层、控制层、持久层全都在一个应用里面,调用方便、响应快速。服务间没有远程调用RPC,响应速度更快一些,具体到某个服务请求的响应结果更快。

开发简单、上手快、三五个人团队好管好用。老板决定不干了,随时可以掉头,基本不太肉疼。

还是要祝贺老板娘啊,生财有道,还会总结经验!

三、开饭馆与负载均衡

前一段时间就已经有人愿意为了吃他们夫妻做的烧烤排队了,这夫妻俩一想,我们这俩人也干不过来啊,怎么办?招人吧、扩大规模吧。

招什么人?当然是厨师啊、端菜收银的妻子自己还能干得过来,主要是丈夫的活挺不住了,对,那就招厨师。

不能让多出来的客人站着吃吧?租一个附近的门市、添置更多的桌椅板凳。

同样的道理,软件应用中的单体应用服务扛不住用户需求了怎么办,加服务器啊,多部署几个服务啊,负载均衡啊。

说说客户端负载均衡与服务端负载均衡

小夫妻两一口气为饭馆配置了三个厨师(含丈夫),这下可够用了。妻子将单号订单给张厨师、双号订单给李厨师,两人都干不过来了,再将订单给丈夫。反正外人不用白不用,自己家人能歇会就歇会。她说给谁就给谁,她有自己的一套算法。这种模式就是“客户端负载均衡”,妻子作为客户端调用“厨师”服务,会记得总共有几个厨师,然后按照自己的算法将用户请求转发给其中一个厨师。我们常见的Spring Cloud每个服务请求其他微服务的时候,都在其内部维护一个微服务列表,然后根据请求目标及算法从微服务中选择一个服务进行远程服务调用。

有一天这俩厨师提出意见:这么干太累了没有闲着时候,要么丈夫多出力,要么涨工资。夫妻俩一合计现在实力也不是很雄厚,还是丈夫多出力吧。那妻子也就没有必要记住“订单的单双号”了,就使用一款app输入顾客订单,该app可以实现订单的均衡分配给厨师。“这种模式就是“服务端负载均衡””。对于软件架构而言该app就是负载均衡器,常用的软件负载均衡器有nginx、haproxy等。还有一些硬件的负载均衡器,性能上要更好一些,当然收费也更“好”。架构如下图所示:

利与弊:

“利”就是应用的处理能力增加了,能够处理更多的订单。

“弊”就是沟通成本增加了,原来吼一嗓子解决的问题,现在需要靠app转发了(负载均衡器)。无论是远程服务调用,还是请求转发转发都是耗时的。

也就是说:饭店(应用服务)现在处理请求吞吐量上的能力增强了,但是在单个请求的处理速度上实际上是下降了。实际上这就是服务拆分的结果,服务拆分就是在 “用时间换空间” 。各位细品!

四、饭后沟通

吃完烤串之后,我将上面的一套理论将给了小娜,她很感兴趣:“软件架构真是脱离不开实际生活啊,到处都是活生生的例子”。我趁势吹起了牛逼:“这才哪到哪,下回带你去个大饭店见见世面,有微服务的大饭店!”。

以上就是从小饭馆客流量变大论云原生负载均衡的详细内容,更多关于论云原生负载均衡的资料请关注我们其它相关文章!

(0)

相关推荐

  • 云原生技术kubernetes(K8S)简介

    目录 01 kubernetes是什么? 02 kubernetes和Compost+Swarm之间的区别 03 一点总结 今天我们看看kubernetes技术的介绍,最近在极客时间上看张磊老师的深入kubernetes技术,讲的非常好,有兴趣的同学可以去收听一下,对于理解kubernetes技术非常有帮助,这里我会按照自己的进度,分享一下学习的笔记. 今天站的角度比较高,概念性质的东西会多一点. 01 kubernetes是什么? 曾经我认为这个问题很好回答,直到不断的去理解kubernete

  • 从小饭馆客流量变大论云原生负载均衡

    目录 一.前言 二.从路边摊说起 三.开饭馆与负载均衡 说说客户端负载均衡与服务端负载均衡 利与弊: 四.饭后沟通 一.前言 这是<大话云原生>系列的第二篇,第一篇<煮饺子与docker.kubernetes之间的关系>推出之后受到大家的欢迎,很多朋友联系到我给我加油打气,还得到了CSDN头部博主哪吒大佬的支持,感谢!我会继续写下去! 书接上回介绍了<煮饺子与docker.kubernetes之间的关系>之后,小娜同学(我老婆)问:为什么不把服务统一开发成一个应用?搞什

  • 阿里云负载均衡SLB安装SSL证书的方法

    获取证书文件 1.登陆用户中心(如何登陆用户中心?)获取SSL证书(证书管理系统现在有2个版本并存[根据购买SSL证书品牌,类型等随机分配],证书管理系统版本不同,获取证书方式略有差异,最终得到的证书是没有区别的,请按照您现行使用的证书系统版本获取证书文件.) 1-1. 版本1-如何获取SSL证书文件:点击这里 ,找到如下图所示页面,请把SSL证书文件(包括"-----BEGIN CERTIFICATE-----"和"-----END CERTIFICATE-----&quo

  • 煮饺子论云原生docker与kubernetes之间的关系

    目录 前言 一.周末煮饺子聊到容器问题 二.说说docker与煮饺子的容器 三.聊聊集群煮饺子(k8s) 前言 云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈.看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡. 所以笔者就有了写<大话云原生>系列文章的想法,期望用最通俗.简单的语言说明白云原生生态系统内的组成及应用关系.那么,开始吧,这是第一篇! 这真的是一篇讲架构技术的文章,不是小说!建议您看下去! 一.周末煮饺子聊到容器问题 周末和老婆一起包了顿饺子,“老公,我去买瓶醋,你把

  • Rainbond云原生快捷部署生产可用的Gitlab步骤详解

    目录 Gitlab简介 准备工作 部署步骤 部署Postgresql组件 部署Redis组件 部署Gitlab-Server组件 配置网关访问策略 FAQ Gitlab简介 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.同时Gitlab集成了一系列的CI功能.不得不说,Gitlab在企业中是的使用率非常高. Rainbond非常推荐

  • Rainbond云原生部署开源社区Discourse的配置过程

    目录 概述 基于应用市场快速安装 Discourse应用如何制作 获取镜像 环境的要求 获取discourse_docker 配置模版 自定义配置 构建数据库镜像 redis 部署 postgresql部署 部署Discourse_web 建立依赖 访问 一些踩过的坑 邮件配置 数据恢复 概述 Discourse 是一个完全开源的论坛平台.具有丰富的插件库与主题库,适用于开源社区的构建.Rainbond官方社区就是基于Discourse搭建的实际案例. Rainbond官方社区建立之初就已经使用

  • 云原生技术kubernetes调度单位pod的使用详解

    k8s中的最小调度单位---pod 之前的文章中,我们对k8s能够解决的问题做了简单介绍,简单来说,它解决的问题是容器的编排与调度,它的核心价值在于:运行在大规模集群的任务之间,实际上存在着各种各样的关系,这些关系的处理,才是任务编排和系统管理最困难的地方,k8s就是为了这个问题而生的. 这句话比较难理解,我们从已有的知识入手,抽丝剥茧,慢慢理解它.我们已经知道,容器的本质是一个进程,它包含三个部分: 如果说容器是云环境的一个进程,那么你可以将k8s理解成云环境中的一个操作系统. 在一个操作系统

  • Quarkus云原生开篇java框架简介

    目录 前言 什么是quarkus? 为什么用quarkus? 专为开发人员而设计 容器优先 命令式和响应式代码 结语 前言 Quarkus 是小红帽开源的专门针对云容器环境优化的云原生java框架,目前已迭代到1.6.0版本,已完成了大部分的框架库的集成扩展,为了让你低成本迁移到Quarkus来,它兼容主流的框架开发模式api,如spring web. Quarkus已具备企业级应用开发能力.而且未来容器云肯定是主流了,可以预见,未来的软件都是运行在k8s这样的容器集群里.而容器环境需要应用具备

  • 云原生技术持久化存储PV与PVC

    目录 1.PV与PVC PV: PVC: 2.PV资源回收 Retain:保留资源 Delete:删除数据 Recycle:回收(弃用) 3.访问模式 4.存储分类 文件存储(Filesystem): 块存储(block): 对象存储: 5.创建PV卷 5.1.实例:创建NAS/NFS类型的PV 创建一个PV 5.2.实例:创建一个hostPath类型的PV 6.PVC 6.1.Pod与PVC与PV的关系 6.2.创建一个PVC挂载到Pod 1.PV与PVC PV: 持久卷(Persistent

  • 云原生自动化应用于docker仓库私有凭据secret创建

    目录 Secret Secret的创建 应用于docker私有仓库的secret 其他 Secret Secret 是一种包含少量敏感信息例如密码.令牌或密钥的对象. 这样的信息可能会被放在 Pod 规约中或者镜像中. 使用 Secret 意味着你不需要在应用程序代码中包含机密数据.(这段话来自官网) 使用过程与ConfigMap类似 与ConfigMap不同的是: ConfigMap用于明文,Secret用于加密文件,如:密码 ConfigMap是没有类型的,但是Secret有类型(type)

随机推荐