03微服务到底是什么

一句话导读

        微服务是一种架构模式,英文翻译 microservice,微服务架构的核心理念是将大型、复杂的单体应用拆分成更小的、自治的组件,每个组件即为一个微服务

目录

一句话导读

一、微服务的定义

二、微服务的特点

        1.独立性

        2.松耦合

        3.可伸缩性

        4.技术多样性

        5.独立部署

三、微服务的利与弊

        1.优点

        2.弊端

四、微服务架构典型示例


一、微服务的定义

        微服务(Microservice)是一种以服务为中心的软件架构模式,按照我们之前文章的讨论,他是为了解决单体应用复杂度问题的一个手段,将复杂的单体应用,通过不同的方法拆分成合理的一系列微小的服务,每个服务负责一个特定的业务功能,可以独立开发、部署和扩展,独自为一个进程,可以是不同的语言开发,服务间采用轻量级的通讯协议如http、消息队列等进行交互,多个服务组合形成一个微服务体系,服务间松耦合并高度自治。

二、微服务的特点

        1.独立性

        每个微服务都是独立的应用单元,可以独立部署和运行。这使得团队可以独立开发和扩展服务,而不会对其他服务造成影响。

        2.松耦合

        微服务之间使用轻量级的通信机制进行交互,从而实现了松耦合。这使得服务之间的变更和演化更加容易,不会影响其他服务的正常运行。

        3.可伸缩性

        由于每个微服务都可以独立扩展,可以根据实际需求调整每个服务的资源和容量,从而实现更好的可伸缩性。

        4.技术多样性

        微服务架构允许不同的服务使用不同的技术栈和编程语言,这使得团队可以选择最适合其业务需求和技术能力的技术。

        5.独立部署

        由于微服务独立部署,可以更快地进行部署和发布新功能,从而实现持续交付和快速响应业务需求。

三、微服务的利与弊

        1.优点

        降低复杂度:将大型工程分而治之,每个微服务只关注某一个领域

        独立开发部署:每个微服务都可以由不同的团队独立开发和部署,使得团队具有更大的自治权和快速迭代能力

        技术选型不受限制:各自团队可以根据自己团队的技术特点,选择合适的技术栈完成开发,只要遵循统一的接口协议即可

        服务可以独立扩展:微服务要求服务间松耦合,相互独立,各自拥有自己的数据库,无状态接口,这使得服务可以独立扩展,不受限制

        故障隔离:由于微服务是独立不是的,一个微服务的故障不会影像到其他微服务的正常运行,提高了整个系统的稳定性

        2.弊端

        服务拆分是难题:如何做服务拆分,服务之间的边界在哪里,如何做到松耦合,这些问题都是比较棘手的问题

        项目整体管理难:对于一个大型项目,如果项目被拆分出几十上百个小服务、小团队,各自拥有自己的管理风格和技术栈,要想整体管理该项目,那将是一个大的项目管理工程。

        服务发现与治理难:随着服务数量的增加,服务发现和治理变得更加困难,需要引入额外的组件和机制来管理服务。

        服务通信开销增大:微服务之间的通信可能涉及网络开销,特别是在服务数量庞大时,可能会导致性能问题

        数据一致性难保证:由于每个微服务都有自己的数据存储,数据一致性成为一个挑战,需要采取合适的解决方案来确保数据一致性。

        跨服务测试和调试难:在微服务架构中,跨服务的测试和调试可能变得复杂,需要合理的测试策略和工具。

四、微服务架构典型示例

        拿我们上篇博客《02单体应用真的是地狱吗》中国的例子来说,小王和小任的教育APP发展到一定阶段,业务是越来越复杂,最后他们是考虑用微服务来解决这个问题,将服务拆分成了认证服务、用户服务、口算服务、打卡服务、订单服务、商城服务、报表服务等等,伴随着业务的不对发展,后续肯定还有新的服务出现。如下图,微服务架构是一个体系,涵盖了服务注册、配置、治理、调用、监控等等。

 图1 微服务典型架构

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

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

相关文章

TOMCAT部署及优化(Tomcat配置文件参数优化,Java虚拟机(JVM)调优)

TOMCAT tomcat :是一个开放源代码的web应用服务器,基于java代码开发的。也可以理解为tomacat就是处理动态请求和基于java代码的页面开发。可以在html当中写入java代码,tomcat可以解析html页面当中的java,执行动态请求,…

linux (platform driver)平台设备驱动匹配方法

linux2.6驱动开发系列教程_linux 驱动开发教程_老徐拉灯的博客-CSDN博客 linux驱动基础开发1——linux 设备驱动基本概念_老徐拉灯的博客-CSDN博客 linux驱动基础开发2——linux 驱动开发前奏(模块编程)_linux驱动模块开发环境_老徐拉灯的博客-CSDN博客…

IDEA每次启动indexing解决办法

每次启动indexing很浪费时间。 解决办法 setting中搜索index 设置如下: 这样设置以后,启动速度明显快多了。 参考 https://blog.csdn.net/qq_45162113/article/details/121128721

MySQL高级-存储引擎+存储过程+索引(详解01)

目录 1.mysql体系结构 2.存储引擎 2.1.存储引擎概述 2.2.1.InnoDB 2.2.2.MyISAM 2.2.3.存储引擎选择 3.存储过程 3.1.存储过程和函数概述 3.2.创建存储过程 3.3.调用存储过程 3.4.查看存储过程 3.5.删除存储过程 3.6.语法 3.6.1.变量 3.6.2.if条件判断 3.6.3.…

汽车上的电源模式详解

① 一般根据钥匙孔开关的位置来确定整车用电类别,汽车上电源可以分为常电,IG电,ACC电 1)常电。常电表示蓄电池和发电机输出直接供电,即使点火开关在OFF档时,也有电量供应。一般来讲模块的记忆电源及需要在车…

爬虫与搜索引擎优化:通过Python爬虫提升网站搜索排名

作为一名专业的爬虫程序员,我深知网站的搜索排名对于业务的重要性。在如今竞争激烈的网络世界中,如何让自己的网站在搜索引擎结果中脱颖而出,成为关键。今天,和大家分享一些关于如何通过Python爬虫来提升网站的搜索排名的技巧和实…

day7 8-牛客67道剑指offer-JZ74、57、58、73、61、62、64、65、把字符串转换成整数、数组中重复的数字

文章目录 1. JZ74 和为S的连续正数序列暴力解法滑动窗口(双指针) 2. JZ57 和为S的两个数字3. JZ58 左旋转字符串4. JZ73 翻转单词序列5. JZ61 扑克牌顺子6. JZ62 孩子们的游戏(圆圈中最后剩下的数)迭代 模拟递归 约瑟夫环问题 找规律 7. JZ64 求123...n8…

【自然语言处理】大模型高效微调:PEFT 使用案例

文章目录 一、PEFT介绍二、PEFT 使用2.1 PeftConfig2.2 PeftModel2.3 保存和加载模型 三、PEFT支持任务3.1 Models support matrix3.1.1 Causal Language Modeling3.1.2 Conditional Generation3.1.3 Sequence Classification3.1.4 Token Classification3.1.5 Text-to-Image Ge…

RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能

实验介绍: YCSB(全称为Yahoo! Cloud Serving Benchmark),该性能测试工具由Java语言编写(在之前的MC文章中也提到过这个,如果没看过的读者可以去看看之前MC那一期),主要用于云端或者…

面试热题(反转链表)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 链表的题&#xff0c;大部分都可以用指针或者递归可以做&#xff0c;指针如果做不出来的话&#xff0c;…

大模型的数据隐私问题有解了,浙江大学提出联邦大语言模型

作者 | 小戏、Python 理想化的 Learning 的理论方法作用于现实世界总会面临着诸多挑战&#xff0c;从模型部署到模型压缩&#xff0c;从数据的可获取性到数据的隐私问题。而面对着公共领域数据的稀缺性以及私有领域的数据隐私问题&#xff0c;联邦学习&#xff08;Federated Le…

[保研/考研机试] KY30 进制转换-大整数转二进制 清华大学复试上机题 C++实现

描述 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述&#xff1a; 多组数据&#xff0c;每行为一个长度不超过30位的十进制非负整数。 &#xff08;注意是10进制数字的个数可能有30个&#xff0c;而非30bits的整数&#xff09; 输出描述&#xff…