【微服务】什么是微服务?-- 全面了解微服务架构

bca1b226e21eb979959e85096fd7505b.png

What is Microservices — Edureka

您有没有想过,什么是微服务以及扩展行业如何与它们集成,同时构建应用程序以满足客户的期望?


要了解什么是微服务,您必须了解如何将单体应用程序分解为独立打包和部署的小型微型应用程序。本文将让您清楚了解开发人员如何使用微服务根据需要扩展其应用程序。


在本文中,您将了解以下内容:

  • 为什么是微服务?

  • 什么是微服务?

  • 微服务架构的特点

  • 微服务架构的优势

  • 设计微服务的最佳实践

  • 使用微服务的公司

为什么是微服务?


现在,在我告诉你微服务之前,让我们看看在微服务之前流行的架构,即单体架构。
用外行的话来说,你可以说它类似于一个大容器,其中应用程序的所有软件组件都组装在一起并紧密打包。
列出了单体架构的挑战:

e869bdb83706f74ce8a3a0a088d5d090.png

Challenges of Monolithic Architecture — What is Microservices

不灵活——无法使用不同的技术构建单体应用程序
不可靠——即使系统的一个功能不起作用,那么整个系统也不起作用
不可扩展——应用程序无法轻松扩展,因为每次需要更新应用程序时,都必须重新构建整个系统
阻碍持续开发——应用程序的许多功能不能同时构建和部署
开发缓慢——单体应用程序的开发需要大量时间来构建,因为每个特性都必须一个接一个地构建
不适合复杂应用程序——复杂应用程序的特性具有紧密耦合的依赖关系


上述挑战是导致微服务发展的主要原因。


什么是微服务?


微服务,又名微服务架构,是一种架构风格,它将应用程序构建为围绕业务领域建模的小型自治服务的集合。

f7a18a66d916729c38970488a2c1a1f4.png

Microservices Representation —What Is Microservices

在微服务架构中,每个服务都是自包含的,并且实现了单一的业务能力。


传统架构与微服务的区别


将电子商务应用程序视为一个用例,以了解它们之间的区别。

我们在上图中观察到的主要区别在于,所有功能最初都在共享单个数据库的单个实例下。但是,对于微服务,每个特性都被分配了一个不同的微服务,处理它们自己的数据,并执行不同的功能。
现在,让我们通过查看其架构来更多地了解微服务。参考下图:

6118bd8bc847527b0212c732a2b58c5e.png

Differences Between Monolithic Architecture and Microservices - What is Microservices

微服务架构

897c3c2e9400d93f15067c828c49e157.png

Microservice Architecture - What is Microservices

  • 来自不同设备的不同客户端尝试使用不同的服务,例如搜索、构建、配置和其他管理功能。

  • 所有服务都根据其域和功能进行分离,并进一步分配给各个微服务。

  • 这些微服务有自己的负载均衡器和执行环境来执行它们的功能,同时在自己的数据库中捕获数据。

  • 所有微服务都通过无状态服务器(REST 或消息总线)相互通信。

  • 微服务借助服务发现了解其通信路径,并执行自动化、监控等操作功能。

  • 然后,微服务执行的所有功能都通过 API 网关与客户端通信。

  • 所有内部点都从 API 网关连接。因此,任何连接到 API 网关的人都会自动连接到整个系统。


现在,让我们通过查看其特性来了解更多关于微服务的信息。

微服务功能

e57042bd455e9a5b2e3f6b1a061df572.png

Features Of Microservices — What is Microservices

  • 解耦——系统内的服务在很大程度上是解耦的。因此,整个应用程序可以轻松构建、更改和扩展。

  • 组件化——微服务被视为可以轻松更换和升级的独立组件。

  • 业务能力——微服务非常简单,专注于单一能力。

  • 自治——开发人员和团队可以彼此独立工作,从而提高速度。

  • 持续交付——通过软件创建、测试和批准的系统自动化,允许频繁发布软件。

  • 责任——微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品

  • 去中心化治理——重点是为正确的工作使用正确的工具。这意味着没有标准化的模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题

  • 敏捷性——微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃

微服务的优势

518206a7ab90e07c80bcf5b2ca7eee7e.png

Advantages of Microservices - What is Microservices

  • 独立开发——所有微服务都可以根据各自的功能轻松开发

  • 独立部署——根据他们的服务,他们可以单独部署在任何应用程序中

  • 故障隔离——即使应用程序的一项服务不工作,系统仍然继续运行

  • 混合技术栈——不同的语言和技术可用于构建同一应用程序的不同服务

  • 粒度缩放——单个组件可以根据需要进行缩放,无需将所有组件一起缩放


设计微服务的最佳实践


在当今世界,复杂性已成功渗透到产品中。微服务架构承诺让团队保持扩展并更好地运作。
以下是设计微服务的最佳实践:

09dc4091a0a8cef85266d40cb6a6cc78.png

Best Practices To Design Microservices - What is Microservices

现在,让我们看一个用例来更好地理解微服务。


用例:购物车应用程序


让我们看一个购物车应用程序的经典用例。
当您打开购物车应用程序时,您看到的只是一个网站。但是,在幕后,购物车应用程序具有接受付款的服务、客户服务等。
假设这个应用程序的开发人员已经在一个整体框架中创建了它。请参考下图:

f6acdc3e69990e259da7a8598d5a5ce6.png

Monolithic Framework Of Shopping Cart Application — What is Microservices

因此,所有功能都放在一个代码库中,并位于一个底层数据库下。
现在,让我们假设市场上出现了一个新品牌,开发人员希望将即将推出的品牌的所有细节都放在这个应用程序中。
然后,他们不仅需要为新标签重新设计服务,还必须重新构建整个系统并相应地进行部署。
为了避免此类挑战,该应用程序的开发人员决定将他们的应用程序从单体架构转变为微服务。参考下图了解购物车应用的微服务架构。

f8ffdd22a1a3cfc88e50269eafb4765e.png

Microservice Architecture of Shopping Cart Application — What is Microservices

这意味着开发人员不会创建 Web 微服务、逻辑微服务或数据库微服务。相反,他们为搜索、推荐、客户服务等创建单独的微服务。
这种类型的应用程序架构不仅可以帮助开发人员克服以前架构面临的所有挑战,还可以帮助购物车应用程序轻松构建、部署和扩展。


使用微服务的公司


有很多公司使用微服务来构建应用程序,这些只是仅举几例:

27901aaee93a72eb0fcb86f905253a1f.png

Companies using Microservices - What is Microservices

这将我们带到关于什么是微服务的文章的结尾。我希望您发现这篇文章内容丰富,并为您的知识增加了价值。

本文 :https://jiagoushi.pro/what-microservices-learn-all-about-microservice-architecture
讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】
公众号

【jiagoushipro】
【超级架构师】
精彩图文详解架构方法论,架构实践,技术原理,技术趋势。
我们在等你,赶快扫描关注吧。
7c6799199b7b4ee70be35fbf8c58e32b.jpeg
微信小号

【ca_cea】
50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.

fc501e42b3e834fbd439ddcb60c9ba08.jpeg

QQ群

【285069459】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。
加QQ群,有珍贵的报告和干货资料分享。

10cb822c91e03e77d2d1f4cbae9834b4.jpeg

视频号【超级架构师】
1分钟快速了解架构相关的基本概念,模型,方法,经验。
每天1分钟,架构心中熟。

2208598fef00ed02e4312902736b1dc8.jpeg

知识星球【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。

466f0bec0de3f63cde877f0ae009690d.jpeg

喜马拉雅【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。【智能时刻,架构君和你聊黑科技】
知识星球认识更多朋友,职场和技术闲聊。知识星球【职场和技术】
领英Harryhttps://www.linkedin.com/in/architect-harry/
领英群组领英架构群组
https://www.linkedin.com/groups/14209750/
微博‍‍【超级架构师】智能时刻‍
哔哩哔哩【超级架构师】

bda443249e64151ffc7966cb639b0f6a.jpeg

抖音【cea_cio】超级架构师

37c2e4c4bd7e782a09dca61951ecca8d.jpeg

快手【cea_cio_cto】超级架构师

b0ced39c695f53d09368f5e949ab29bc.jpeg

小红书【cea_csa_cto】超级架构师

6ef4907000403dba22eba5f6ceefb5a2.jpeg

网站CIO(首席信息官)https://cio.ceo
网站CIO,CTO和CDOhttps://cioctocdo.com
网站架构师实战分享https://architect.pub   
网站程序员云开发分享https://pgmr.cloud
网站首席架构师社区https://jiagoushi.pro
网站应用开发和开发平台https://apaas.dev
网站开发信息网https://xinxi.dev
网站超级架构师https://jiagou.dev
网站企业技术培训https://peixun.dev
网站程序员宝典https://pgmr.pub    
网站开发者闲谈https://blog.developer.chat
网站CPO宝典https://cpo.work
网站首席安全官https://cso.pub    ‍
网站CIO酷https://cio.cool
网站CDO信息https://cdo.fyi
网站CXO信息https://cxo.pub

谢谢大家关注,转发,点赞和点在看。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】基于jib插件,实现Docker部署springboot项目

文章目录 创建springboot项目jib插件介绍使用打tar包 Docker部署springboot项目 在工作中,作为一名后端开发人员,项目部署运维的事我们可能都要同时干,今天想跟大家聊聊关于springboot项目使用docker部署相关操作。后期还会跟大家分享docker-…

服务器垃圾怎样清理?C盘垃圾如何清理?

好多人都在问电脑垃圾如何清理?服务器的垃圾清理是系统维护中必不可少的一项任务,而C盘垃圾的清理同样也是必须要做的任务之一。那么,如何一键清理服务器垃圾,C盘垃圾如何清理呢?今天,我会以服务器助手为例…

动态ip与静态ip的概念、区别、应用场景

动态ip与静态ip的区别 前言一、介绍IP地址的概念和作用1.1、IP地址的定义1.2、IP地址的作用 二、动态IP和静态IP的区别2.1、动态IP和静态IP的定义2.2、动态IP和静态IP的特点2.3、动态IP和静态IP的优缺点比较 三、动态IP和静态IP的应用场景3.1. 动态IP的应用场景3.2. 静态IP的应…

【Spring Boot】Spring Boot配置文件详情

前言 Spring Boot是一个开源的Java框架,用于快速构建应用程序和微服务。它基于Spring Framework,通过自动化配置和约定优于配置的方式,使开发人员可以更快地启动和运行应用程序。Spring Boot提供了许多开箱即用的功能和插件,包括嵌…

LeetCode 75 —— 62. 不同路径

LeetCode 75 —— 62. 不同路径 一、题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &…

【图像处理】去雾源码收集(halcon、python、C#、VB、matlab)

【图像处理】去雾代码收集(附halcon、python、C#、VB、matlab源码) 一、halcon算法1.1 halcon算法源码1.2 halcon算法效果图![在这里插入图片描述](https://img-blog.csdnimg.cn/8ad5217a59be4de29b5a7b6eee997b85.png#pic_center) 二、opencv算法2.1 py…

SQL Server数据库 -- 表的创建与管理

文章目录 一、数据表的组成二、创建数据表 表的创建表的查看表的增加表的修改表的删除、三、表的架构操作四、总结 前言 上次博客写到了数据库的创建与管理,但是创建的库里面什么东西都没有,现在我们需要在库里面添加数据表内容 一、数据表的组成 在创…

MySQL:聚合函数(全面详解)

聚合函数 前言一、聚合函数介绍1、AVG和SUM函数2、 MIN和MAX函数3、COUNT函数 二、GROUP BY1、基本使用2、使用多个列分组3、 GROUP BY中使用WITH ROLLUP 三、HAVING1、基本使用2、WHERE和HAVING的对比 四、 SELECT的执行过程1、查询的结构2、SELECT执行顺序3、SQL 的执行原理 …

Presto(Trino)分布式(物理)执行计划的生成和调度

文章目录 1.前言2.物理执行生成(Stage)的生成2.1不同的调度分区策略2.1.1 Connector自己提供的分区策略2.1.2 Presto提供的Partition策略(SystemPartitioningHandle): 2.2 为Stage创建StageScheduler2.2.1 普通的非bucket表的TableScan StageSplit 放置策略解析 2.2…

Tune-A-Video:用于文本到视频生成的图像扩散模型的One-shot Tuning

Tune-A-Video: One-Shot Tuning of Image Diffusion Models for Text-to-Video Generation Project:https://tuneavideo.github.io 原文链接:Tnue-A-Video:用于文本到视频生成的图像扩散模型的One-shot Tuning (by 小样本视觉与智能前沿&…

Nginx-反向代理详解

本文已收录于专栏 《中间件合集》 目录 概念说明什么是Nginx什么是反向代理 功能介绍配置过程1.修改nginx配置文件修改全局模块修改工作模块修改HTTP模块 2.保存配置文件3.重启配置文件4.查看配置文件是否重启成功 配置反向代理的好处总结提升 概念说明 什么是Nginx Nginx 是一…

Nginx服务器的六个修改小实验

一、Nginx虚拟主机配置 1.基于域名 (1)为虚拟主机提供域名解析 配置DNS 修改/etc/hosts文件 (2)为虚拟主机准备网页文档 #创建网页目录 mkdir -p /var/www/html/abc mkdir -p /var/www/html/def ​ #编写简易首页html文件 ec…

89C52RC普中单片机-3

1.LCD1602调试工具 main.c #include<regx52.h> #include "lcd1602.h" void main() {lcd1602_init();//LCD1602初始化();while(1){lcd1602_show_string(0,0,"helloworld");lcd1602_show_string(1,1,"123456.0");} } lcd1602.c #include …

matlab 使用预训练神经网络和SVM进行苹果分级(带图形界面)支持其他物品图片分级或者分类

目录 数据集&#xff1a; 实验代码&#xff1a;alexnet版 如果你的matlab不是正版&#xff0c;先看这里&#xff1a; 数据集结构&#xff1a; 训练代码&#xff1a; 训练结果&#xff1a; 图形界面&#xff1a; 界面展示&#xff1a; 其他&#xff1a; 输出结果: 实验…

Ansible练习

部署ansible练习 开始之前先使用student用户登录 登录命令&#xff1a;ssh studentworkstation 在workstation上运行lab deploy-review start命令&#xff0c;此脚本将确保受管主机在网络上访问。 然后开始验证控制节点上是否安装了ansible软件包&#xff0c;在运行anisble -…

centos磁盘扩容

解释 PE - 物理块&#xff08;Physical Extent&#xff09; 硬盘上有很多实际物理存在的存储块PV - 物理卷 &#xff08;Physical Volume&#xff09; 物理卷处于最底层&#xff0c;它可以是实际物理硬盘上的分区&#xff0c;也可以是整个物理硬盘(相当于单独做一个分区)&…

GPT模型训练实践(2)-Transformer模型工作机制

Transformer 的结构如下&#xff0c;主要由编码器-解码器组成&#xff0c;因为其不需要大量标注数据训练和天然支持并行计算的接口&#xff0c;正在全面取代CNN和RNN&#xff1a; 扩展阅读&#xff1a;What Is a Transformer Model? ​ ​ 其中 编码器中包含自注意力层和前馈…

LabVIEW 图像处理功能

设置成像系统并采集图像后&#xff0c;您可以分析和处理图像&#xff0c;以提取有关被检测对象的有价值信息。 内容 图像分析图像处理斑点分析机器视觉 图像分析 影像分析结合了基于影像像素的灰度强度计算统计数据和测量的技术。您可以使用影像分析功能来确定影像质量是否足以…

Java单例模式

Java单例模式 1、概念2、代码实现方案饿汉式实现:懒汉式实现:饿汉式PK懒汉式&#xff1a; 3、单例模式的特点及适用场景优点&#xff1a;缺点&#xff1a;适用场景&#xff1a; 4、关于单例模式的常见问题4.1 public static SingletonOne getlnstance(){}A.该方法为什么用静态的…

python爬虫快速入门

Python有其简洁明了&#xff0c;功能强大的优势&#xff0c;特别是在网络爬虫的应用上。接下来&#xff0c;我将分享一个适合Python初学者的爬虫快速入门教程。 一、Python爬虫简介 网页爬虫&#xff0c;是一种自动从互联网上获取信息的程序。在Python语言中&#xff0c;requ…