什么是微服务架构

阅读“微服务架构”一词可能会让您直观地了解该术语的含义:计算架构中的小型服务。这个定义并不完全错误,但也不完全正确。 

微服务架构通常被称为“打破整体”的一种方式。遗憾的是,这与《2001:太空漫游》无关,而是将单个大型程序分解(或分解)的概念。

最新的 DZone 参考卡

NoSQL 迁移要点


您可能还喜欢:什么是微服务?微服务架构简介

因此,微服务架构就是从整体上创建小程序(微服务)。结果有时仍然需要像单个实体一样运行,而有时它需要具有许多较小程序的属性。

一个很好的比喻可能是您家中的 HVAC(供暖、通风和空调)系统。该系统可能由熔炉、空调、加湿器、恒温器和新鲜空气交换器组成。至关重要的是,您永远不会直接走到加湿器或炉子旁并按下开关将其打开。相反,您调整恒温器,然后恒温器控制所有组件系统 - 您不需要了解有关各个部件的任何信息。每个单独的系统都装在制造商提供的盒子中,但全部连接在一起作为一个单元。您可以将煤气炉更换为电动型号,最终用户的操作保持不变。

在这个比喻中,每个 HVAC 组件都是一个服务,而 HVAC 系统的整个设计就是微服务架构。

当然,微服务架构比 HVAC 系统更加动态和复杂。云实例有时会上下波动,有时每天会多次部署新版本。微服务架构可能有数千(甚至数百万!)输入并执行许多极其复杂的活动,这些活动构成了应用程序的全部功能

微服务的优点
当然,包含如此多的服务会带来复杂性,这通常被认为是优秀软件的主要敌人。但另一种选择更糟糕。 

在整体架构中,所有内容都包含在一个大单元中。在一个整体中,当某些东西发生故障时,即使是最好的软件也不可避免地会发生这种情况,一切都会崩溃。即使是精益的软件项目,随着时间的推移,也会变得越来越复杂——添加越来越多的功能和解决方法,直到最终变成一个笨重的怪物。更新和发布变得越来越缓慢和痛苦。当某些东西出现故障时(即使是最好的软件也不可避免地会发生这种情况),一切都会崩溃。

在微服务架构中,单个服务只承担最少的职责。如果单个服务出现问题,重写该单个服务比重写并合并修复整个整体要容易得多。 

另外,同样重要的是,当您尝试扩展单体应用时,往往会出现问题。整体架构的一部分可能特别需要大量资源,但您通常无法扩展整体架构的单个部分 - 您必须创建整个系统的副本,这会浪费资源。在极端情况下,单体架构并不是为了复制而构建的,从而对规模造成了硬性限制。

服务更容易构建和管理。微服务架构隔离了复杂性,允许更小、更敏捷的团队创建服务。您可能听说过两个比萨饼团队的效率,或者小到只需几个比萨饼馅饼的团队的效率。微服务架构适合由大量两块披萨团队构建。

最后,微服务架构更加灵活。单个服务可以利用各种平台、语言和工具,因为这些选择一次只影响一小群团队。只要输入和输出不受影响,这些团队中的开发人员就可以快速行动而不会破坏事物。

在哪里使用微服务架构
虽然使用微服务架构可以在许多情况下带来巨大的好处,但它并不适合所有情况。微服务架构往往在以下环境中表现最佳: 

庞大的 代码库。 较小的代码库可能会因分割为逻辑服务而获得较少的好处。
有足够的开发人员来创建致力于个人服务的团队。 如果整个团队一次只处理一项服务,微服务架构的许多优势就会丧失。
能够支持架构中许多服务的运营团队。 尽管微服务架构具有长期的运营优势,但一开始运行许多服务器或实例似乎比运行单个大型服务器或实例要多得多。
明确定义的底层业务流程。 具有业务知识的人应该能够查看架构图并看到映射。另一方面,如果业务流程是临时的或描述不清晰,这种混乱就会反映在架构中。

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

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

相关文章

Openstack部署

搭建基础环境 #网络 #防火墙 #用户用 #解析 #同步时间 实验角色 OpenStack01OpenStack02OpenStack03192.168.1.101192.168.1.102192.168.1.103srv1srv2srv3 同步时间 [rootsrv1]# yum install chrony -y [rootsrv1]# vim /etc/chrony.conf # 修改第3行,将NT…

为Mkdocs网站添加评论系统(以giscus为例)

官方文档:Adding a comment system 这里我同样推荐giscus 利用 GitHub Discussions 实现的评论系统,让访客借助 GitHub 在你的网站上留下评论和反应吧!本项目深受 utterances 的启发。 开源。🌏无跟踪,无广告&#…

标准差有两种常见的估计方法:有偏估计和无偏估计

当我们谈论标准差时,有两种常见的估计方法:有偏估计和无偏估计。 有偏估计(Biased Estimate):有偏估计是指使用样本标准差来估计总体标准差,而不应用修正因子。这种估计方法在某些情况下可能导致总体标准差…

灾备建设中的网络传输

对于建设灾备系统,只要是网络可达即可进行数据备份保护。灾备中用的传输方式有很多种,比如网络传输,lan-free传输,网络加密传输等。 在这里给大家介绍下网络传输,灾备中的网络传输和平时大家熟知的是一样的。是指用一…

k8s使用

一、Kubernetes好处 ​ kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。 ​ kubernetes的本质…

前端面试基础面试题——9

1.js 延迟加载的方式有哪些? 2.js同步和异步的区别? 3.什么是浏览器的同源政策? 4.介绍一下 js 的节流与防抖? 5.js 中的深浅拷贝实现? 6.Js 动画与 CSS 动画区别及相应实现 7.观察者模式和发布订阅模式有什么不同…

GIS小技术分享(一):python中json数据转geojson或者shp

1.环境需求 geopandspandasshapelyjsonpython3 2.输入数据(path字段,线条) [{"id": "586A685D568311B2A16F33FCD5055F7B","name": "普及江","path": "[[116.35178835446628,23.57…

贴片电容材质的区别与电容的主要作用

一、贴片电容材质NPO、COG、X7R、X5R、Y5V、Z5U区别 主要是介质材料不同,不同介质种类由于它的主要极化类型不一样,其对电场变化的响应速度和极化率也不一样。在相同的体积下的容量就不同,随之带来的电容器介质的损耗、容量的稳定性也就不同…

【OpenCv光流法进行运动目标检测】

opencv系列文章目录 文章目录 opencv系列文章目录前言一、光流法是什么?二、光流法实例1.C的2.C版本3.python版本 总结 前言 随着计算机视觉技术的迅猛发展,运动目标检测在图像处理领域中扮演着至关重要的角色。在现实世界中,我们常常需要追…

ES相关面试问题整理

索引模板了解么 索引模板,一种复用机制,就像一些项目的开发框架如 Laravel 一样,省去了大量的重复,体力劳动。当新建一个 Elasticsearch 索引时,自动匹配模板,完成索引的基础部分搭建。 模板定义&#xf…

基于LSTM-Adaboost的电力负荷预测的MATLAB程序

微❤关注“电气仔推送”获得资料(专享优惠) 主要内容: LSTM-AdaBoost负荷预测模型先通过 AdaBoost集成算法串行训练多个基学习器并计算每个基学习 器的权重系数,接着将各个基学习器的预测结果进行线性组合,生成最终的预测结果。代码中的LST…

Grafana 10 新特性解读:体验与协作全面提升

作者:徽泠(苏墨馨) 为了庆祝 Grafana 的 10 年里程碑,Grafana Labs 推出了 Grafana 10,这个具有纪念意义的版本强调增强用户体验,使各种开发人员更容易使用。Grafana v10.0.x 为开发者与企业展示卓越的新功能、可视化与协作能力&…

虚幻引擎5:增强输入的使用方法

一、基本配置 1.创建一个输入映射上下文(映射表) 2.创建自己需要的操作映射或者轴映射 3.创建完成之后进入这个映射,来设置类型,共有4个类型 1.Digital:是旧版操作映射类型,一般是按下抬起来使用,像跳跃…

[管理与领导-116]:IT人看清职场中的隐性规则 - 13 - 项目负责人如何帮助项目经理提升项目管理的威望、成就感、积极性,从而提升项目执行的效率?

目录 前言: 一、项目负责人与项目经理两种角色的比较 二、项目负责人如何帮助项目经理 三、其他安排 3.1 赋予项目经理更多的责权 3.2 确保项目经理的话语权 前言: 项目负责人是项目最终的负责人,然而,很多时候&#xff0c…

uniapp h5 MD5加密

文章目录 1.当使用 CryptoJS 进行 MD5 加密时,你需要先引入 CryptoJS 库并确保它已经正确安装。下面是一个更详细的示例代码:2.然后,在需要使用 MD5 加密的地方,引入 CryptoJS 代码库:3.接下来,我们定义一个…

Linux实现原理 — I/O 处理流程与优化手段

Linux I/O 接口 Linux I/O 接口可以分为以下几种类型: 文件 I/O 接口:用于对文件进行读写操作的接口,包括 open()、read()、write()、close()、lseek() 等。 网络 I/O 接口:用于网络通信的接口,包括 socket()、conne…

Easypoi 多sheet数据导入导出

easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法。 1.引入依赖包 <dependency><groupId>cn.afterturn…

RabbitMQ常见的交换机类型

RabbitMQ安装 pom.xml里导入相关的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> application.properties配置文件 spring.rabbitmq.hos…

Nginx - 反向代理与负载均衡

目录 一、Nginx 1.1、Nginx 下载 1.2、nginx 基础配置的认识 a&#xff09;第一部分&#xff1a;全局块 b&#xff09;第二部分&#xff1a;events 块 c&#xff09;第三部分&#xff1a;http 块 http 块中 内嵌的 server 块 1.3、一些常用配置 1.3.1、location 匹配级…

java正则表达式 及应用场景爬虫,捕获分组非捕获分组

正则表达式 通常用于校验 比如说qq号 看输入的是否符合规则就可以用这个 public class regex {public static void main(String[] args) {//正则表达式判断qq号是否正确//规则 6位及20位以内 0不能再开头 必须全是数子String qq"1234567890";System.out.println(qq…