微服务-开篇-个人对微服务的理解

从吃饭说起

个人理解新事物的时候喜欢将天上飞的理念转换成平常生活中的实践,对比理解这些高大上的名词,才能让我们减少恐慌的同时加深理解。废话不多说,我们从吃饭开始说起,逐渐类比出微服务的思想。
(个人见解,帮助掌握概念,有不对的地方请大神指出)
在这里插入图片描述
小明有一家餐馆,一开始餐馆很小,只有小明一个人。自己既要炒菜也要端碗还要打扫卫生。不过由于餐馆小,顾客不多也能忙的过来。
(单机模式,应用的数据、代码等全部运行在一台服务器上)

小明的手艺很好,不长时间他的饭馆在邻居中获得了口碑,大家都去他那吃饭。小明很开心,但是他发现他自己忙不过来了。。。
(业务量大了之后,由于单机的性能限制,服务无法满足需求)

在这里插入图片描述

想了一下以后,他决定招一名服务员,帮他承担端碗打杂的活。
(将部分功能拆开,比如将数据库分离,前后端分离,只是简单的做了拆分,不涉及微服务思想)

又过了一段时间,小明发现自己还是忙不过来,而且服务员也抱怨自己又要接待客人又要端碗还要打扫卫生,忙不过来了。
(在高并发的场景下,依旧无法满足需求)
在这里插入图片描述
于是,小明想了一下决定,再招一名厨师帮自己,另外再招一名服务员分解压力。随着小明的饭店生意越来越好,顾客越来越多,小明不停的招员工。
(不停的添加服务器,业务上逐渐拆分的更加细化。符合微服务理念,但是缺少微服务管理模块,会出现新的问题)

但是,新的问题来了:

  1. 员工偷懒,迟到、早退、缺勤等情况严重,无法及时发现和处理,导致客人有时候来到饭馆吃不到饭。(服务注册与发现)
  2. 客人感觉每次来了之后招待,端碗都乱哄哄的,没有统一的管事的人,用餐体验差,客人期望有专人对接服务。(网关服务)
  3. 员工都抱怨自己很忙,但是效率确上不去。(服务调用,负载均衡)
  4. 有时候餐馆用餐的人太多,自己点了很久也不上菜,并且没有人出来解释。(服务降级,服务熔断)
  5. 有时候服务员A收过钱了,但是服务员B不知道,还会问客人收钱。(数据一致性)

以上问题引出了讨论的主题,微服务和微服务的主要工具模块

问题解决:

  1. 招聘专业管理者,管理员工签到请假早退等。(Eureka、Zookeeper、Consul、Nacos)
  2. 招聘接待人员,专门接待客人用餐,客人只与接待人员沟通即可。(Zuul、gateway)
  3. 招聘专人根据具体的规则给每个员工安排合适的工作量。(Ribbon、OpenFeign)
  4. 招聘专人,在饭店坐满或者某个厨师、服务员工作压力过大、或者某个菜卖完了的时候,及时给客人提示。(Hystrix、sentinel)
  5. 招聘专人负责数据一致性(seate)

另外,还有链路追踪、服务配置等内容。随着饭店的变大,小明可以继续将自己的饭店业务细化,比如厨房分为配菜、切菜、炒菜、面点等服务。服务员分为传菜、接待、前台等等。每一个服务需要其他服务的配合时就互相调用。但是不是一对一的调用,不是直接两个人直接找到对方。而是通过对方的经理,找到对应的负责人对接。这样所有的服务都相当于一个整体,内部由很多个单体组成,但是对外只有一个接口,由经理负责统一调度。

在这里插入图片描述

这些加在一起,可以保证小明的饭馆在管理上和服务上都满足客人的需求。也保证在客流量大的时候,整个饭店的运营不会出现故障。

目前引出了微服务架构的概念和主要应用工具,但是还感觉在天上飘着,没有脚踏实地的感觉,不着急,下一篇整理一下我对Springclound的理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/188654.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计 基于Springboot的影院购票管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

考研分享第1期 | 末9生物跨专业考研北京大学电子信息404分经验分享

全文概览 一、个人信息 二、关于考研的经验分享 三、最后的小Tips 一、个人信息 姓名:Jackson 本科院校:某末流985生物专业 报考院校:北京大学电子信息专业 择校意向:北航计算机、人大高瓴、复旦软院、清华大学深研院、北…

HuggingFace模型头的自定义

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 在本文中我们将介绍如何使HuggingFace的模型适应你的任务,在Pytorch中建立自定义模型头并将其连接到HF模型的主体&#…

大数据Doris(二十一):数据导入演示

文章目录 数据导入演示 一、启动zookeeper集群(三台节点都启动) 二、启动hdfs集群

【Linux】语言层面缓冲区的刷新问题以及简易模拟实现

文章目录 前言一、缓冲区刷新方法分类a.无缓冲--直接刷新b.行缓冲--不刷新,直到碰到\n才刷新c.全缓冲--缓冲区满了才刷新 二、 缓冲区的常见刷新问题1.问题2.刷新本质 三、模拟实现1.Mystdio.h2.Mystdio.c3.main.c 前言 我们接下来要谈论的是我们语言层面的缓冲区&…

Spark的转换算子和操作算子

1 Transformation转换算子 1.1 Value类型 1)创建包名:com.shangjack.value 1.1.1 map()映射 参数f是一个函数可以写作匿名子类,它可以接收一个参数。当某个RDD执行map方法时,会遍历该RDD中的每一个数据项,并依次应用f函…

idea 一直卡在maven正在解析maven依赖

修改maven Importing的jvm参数 -Xms1024m -Xmx2048m

srs webrtc推拉流环境搭建

官方代码https://github.com/ossrs/srs 拉取代码: git clone https://github.com/ossrs/srs.gitcd ./configure make ./objs/srs -c conf/rtc.confconf/rtc.conf中,当推拉流浏览器在本地时,如果srs也在本地,那么可以使用官网默认…

VUE页面导出PDF方案

1,技术方案为:html2canvas把页面生成canvas图片,再通过jspdf生成PDF文件; 2,安装依赖: npm i html2canvas -S npm i jspdf -S 3,封装导出pdf方法exportPdf.js: // 页面导出为pdf格式 //titl…

STM32基础--NVIC中断控制器

一、NVIC是什么? NVIC是一种中断控制器。当一个中断正在处理时,另一个更高优先级的中断可以打断当前中断的执行,并立即得到处理。这种机制使得处理器在高速运行的同时,能够及时响应不同优先级的中断请求。 二、有哪些优先级&…

19 异步通知

一、异步通知 1. 异步通知简介 阻塞和非阻塞两种方式都是需要应用程序去主动查询设备的使用情况。 异步通知类似于驱动可以主动报告自己可以访问,应用程序获取信号后会从驱动设备中读取或写入数据。 异步通知最核心的就是信号: #define SIGHUP 1 /* 终…

Clickhouse学习笔记(5)—— ClickHouse 副本

Data Replication | ClickHouse Docs 副本的目的主要是保障数据的高可用性,即使一台 ClickHouse 节点宕机,那么也可以从其他服务器获得相同的数据 注意: clickhouse副本机制的实现要基于zookeeperclickhouse的副本机制只适用于MergeTree f…

API SIX系列-服务搭建(一)

APIsix简介 APISIX是一个微服务API网关,具有高性能、可扩展性等优点。它基于nginx(openresty)、Lua、etcd实现功能,借鉴了Kong的思路。和传统的API网关相比,APISIX具有较高的性能和较低的资源消耗,并且具有…

Lua更多语法与使用

文章目录 目的错误处理元表和元方法垃圾回收协程模块面向对象总结 目的 在前一篇文章: 《Lua入门使用与基础语法》 中介绍了一些基础的内容。这里将继续介绍Lua一些更多的内容。 同样的本文参考自官方手册: https://www.lua.org/manual/ 错误处理 下…

嵌入式养成计划-48----QT--信息管理系统:百川仓储管理

一百二十二、信息管理系统:百川仓储管理 122.1 UI界面 122.2 思路 客户端: 用户权限有两种类型,一种是用户权限,一种是管理员权限,登录时服务器端会根据数据库查询到的此用户名的权限返回不同的结果,客户…

学习c#的第五天

目录 C# 运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 C# 中的运算符优先级 C# 运算符 算术运算符 下表显示了 C# 支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则: 运算符描述实例…

JVM在线分析-解决问题的工具一(jinfo,jmap,jstack)

1. jinfo (base) PS C:\Users\zishi\Desktop> jinfo Usage:jinfo <option> <pid>(to connect to a running process)where <option> is one of:-flag <name> to print the value of the named VM flag #输出对应名称的参数-flag [|-]<n…

ElasticSearch7.x - HTTP 操作 - 文档操作

创建文档(添加数据) 索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数 据库中的表数据,添加的数据格式为 JSON 格式 向 ES 服务器发 POST 请求 :http://192.168.254.101:9200/shopping/_doc 请求体内容为: {"title":"小…

【Python 千题 —— 基础篇】账号登录

题目描述 题目描述 简易登录系统。你的账号密码分别是 “student”&#xff0c;“123456”&#xff1b;请使用 if-else 设计一个简易登录系统&#xff0c;输入账号密码。登陆成功输出 “Welcome !”&#xff0c;登录失败输出 “Login failed !” 输入描述 输入账号和密码。…

idea配置tomcat参数,防止nvarchar保存韩文、俄文、日文等乱码

描述下我的场景&#xff1a; 数据库服务器在远程机器上&#xff0c;数据库使用的Oracle&#xff0c;字符集是ZHS16GBK&#xff0c;但保存韩文、俄文、日文等字段A的数据类型是nvarchar(120)&#xff0c;而nvarchar使用的是Unicode 编码&#xff0c;有点乱。。 遇到的问题&…