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

news2025/2/22 13:06:13

从吃饭说起

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

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

在这里插入图片描述

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

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

但是,新的问题来了:

  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.coloradmin.cn/o/1191474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计蒜客详解合集(1)期

以后对于简单题目,大致6道题目出一期,稍有难度的才单独一期发布~ 目录 T1266——出勤记录 T1170——人民币支付 T1122——最长最短单词 T1115——字符串判等 T1116——验证子串 T1118——删除单词后缀 T1266——出勤记录 小蒜的算法课老师每次…

任正非说:段到段而不是端到端的变革,一定会局部优秀了,而全局灾难了。

你好!这是华研荟【任正非说】系列的第34篇文章,让我们聆听任正非先生的真知灼见,学习华为的管理思想和管理理念。 一、执行一个良好的流程和建立一个良好的流程同样重要。业务部门的一把手要担负起建设和优化流程的责任,而不是流程…

NFS服务器的搭建

架设一台NFS服务器,并按照以下要求配置 准备阶段:准备两台虚拟机,一台作为服务端,一台作为客户端 服务端(Server):192.168.75.139 客户端(Client):192.168.75.160 两…

【Java 进阶篇】Java Filter 执行流程及生命周期详解

引言 在 Java Web 开发中,Filter 是一种强大的组件,它允许我们在请求到达 Servlet 之前或者响应返回给客户端之前执行一些操作。Filter 的应用场景非常广泛,例如日志记录、权限验证、字符编码转换等。本文将深入讨论 Java Filter 的执行流程…

element-Cascader级联选择器用法?

html <el-form-item label"行业选择" :label-width"formLabelWidth"><div class"m-4"><el-cascader v-model"form.tradeid" :options"options" :props"props" /></div></el-form-ite…

【仿真动画】人机协作机器人自动化产线仿真动画欣赏

人机协作机器人自动化产线仿真动画 动画部分思维导图 机器人自动化产线仿真动画是利用三维动画技术对机器人自动化产线进行仿真模拟&#xff0c;以直观、形象的方式展示产线的运行情况。它具有以下作用&#xff1a; 提高沟通效率 机器人自动化产线的设计、实施和维护涉及多个部…

19.9 Boost Asio 同步字典传输

这里所代指的字典是Python中的样子&#xff0c;本节内容我们将通过使用Boost中自带的Tokenizer分词器实现对特定字符串的切割功能&#xff0c;使用Boost Tokenizer&#xff0c;可以通过构建一个分隔符或正则表达式的实例来初始化tokenizer。然后&#xff0c;可以使用该实例对输…

阿里云服务器u1和e实例有什么区别?哪个比较好?

阿里云服务器u1和e实例有什么区别&#xff1f;哪个比较好&#xff1f;通用算力型u1比较好&#xff0c;因为u1服务器是独享型云服务器&#xff0c;e实例是共享型。 阿里云服务器ECS经济型e实例和通用算力型u1实例有什么区别&#xff1f;如何选择&#xff1f;ECS经济型e实例是共…

Modern C++ 转换构造函数和类型转换函数

在 C/C 中&#xff0c;不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换&#xff08;隐式类型转换&#xff09;&#xff0c;需要用户显式地指明如何转换的称为强制类型转换。 不管是自动类型转换还是强制类型转换&#xff0c;前提必须是编译器知道如何…

U盘插在电脑上显示要格式化磁盘怎么办

U盘是一种便携式存储设备&#xff0c;广泛应用于各种场合。然而&#xff0c;有时候我们可能会遇到一些问题&#xff0c;比如将U盘插入电脑后显示要格式化磁盘&#xff0c;这通常意味着U盘的分区出现了问题或者U盘的文件系统已经损坏。这种情况下&#xff0c;我们应该如何解决呢…

linux 显卡驱动 cuda 离线安装

1、 安装显卡驱动&#xff1a; Download NVIDIA, GeForce, Quadro, and Tesla Drivers &#xff08;1&#xff09;注意选择对应的cuda版本&#xff0c;和系统版本&#xff0c;并下载 &#xff08;2&#xff09;

client-go controller-runtime kubebuilder

背景 这半年一直做k8s相关的工作&#xff0c;一直接触client-go controller-runtime kubebuilder&#xff0c;但是很少有文章将这三个的区别说明白&#xff0c;直接用框架是简单&#xff0c;但是出了问题就是黑盒&#xff0c;这不符合我的理念&#xff0c;所以这篇文章从头说起…

【C语言 | 预处理】C语言预处理详解(一) —— #define、#under、#if、#else、#elif、#endif、#include、#error

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Python基础教程之十八:Python字典交集–比较两个字典

Python示例&#xff0c;用于查找2个或更多词典之间的常见项目&#xff0c;即字典相交项目。 1.使用“&#xff06;”运算符的字典交集 最简单的方法是查找键&#xff0c;值或项的交集&#xff0c;即 & 在两个字典之间使用运算符。 example.pya { x : 1, y : 2, z : 3 }…

OCR技术狂潮:揭秘最新发展现状,引爆未来智能时代

OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术自20世纪以来经历了长足的发展&#xff0c;随着计算机视觉、人工智能和深度学习等领域的进步&#xff0c;OCR技术在准确性、速度和适用范围上都取得了显著的进展。以下是OCR技术发展的现…

Verilog 之 initial 模块与always 模块的用法与差异

文章目录 initial语法和用法特点和注意事项用途 always语法和用法特点和注意事项用途 二者差异 initial 在 Verilog 中&#xff0c;initial 块是用来在模拟开始时执行一次性初始化操作的一种建模方式。它通常用于模拟初始条件或进行一次性的初始化设置&#xff0c;而且只会在模…

深度学习(生成式模型)——Classifier Free Guidance Diffusion

文章目录 前言推导流程训练流程测试流程 前言 在上一节中&#xff0c;我们总结了Classifier Guidance Diffusion&#xff0c;其有两个弊端&#xff0c;一是需要额外训练一个分类头&#xff0c;引入了额外的训练开销。二是要噪声图像通常难以分类&#xff0c;分类头通常难以学习…

聊聊模板引擎<Template engine>

模板引擎是什么 模板引擎是一种用于生成动态内容的工具&#xff0c;通常用于Web开发中。它能够将静态的模板文件和动态数据结合起来&#xff0c;生成最终的HTML、XML或其他文档类型。模板引擎通过向模板文件中插入变量、条件语句、循环结构等控制语句&#xff0c;从而实现根据…

Node.js中的文件系统(file system)模块

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

VS2015模块库交接出现环境报错 error MSB8031 和 error C1189

问题报错 1.错误 MSB8031 Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. 错误 MSB8031不赞成为非Unicode字符集生成MFC项目。您必须将项目属性更改为Unicode&…