03微服务到底是什么

一句话导读

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

目录

一句话导读

一、微服务的定义

二、微服务的特点

        1.独立性

        2.松耦合

        3.可伸缩性

        4.技术多样性

        5.独立部署

三、微服务的利与弊

        1.优点

        2.弊端

四、微服务架构典型示例


一、微服务的定义

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

二、微服务的特点

        1.独立性

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

        2.松耦合

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

        3.可伸缩性

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

        4.技术多样性

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

        5.独立部署

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

三、微服务的利与弊

        1.优点

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

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

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

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

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

        2.弊端

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

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

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

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

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

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

四、微服务架构典型示例

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

 图1 微服务典型架构

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

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

相关文章

如何投诉删除360搜索下拉词?

有的企业发现自己品牌在360搜索下拉框里会展现出来一些负面词,如骗子、跑路、倒闭等,有企业咨询能不能删除360搜索下拉里的负面词?小马识途营销顾问分析要看具体情况,按经验如果是涉及诋毁诽谤的词,投诉到平台能够删除…

redission自定义hessian序列化

一。技术改造背景 由于之前的比较陈旧的技术,后面发起了技术改造,redis整体改后使用redisson框架。 二。问题 改造完成后,使用方反馈 缓存获取异常 异常信息如下 Caused by: java.io.CharConversionException: Unexpected EOF in the mid…

【Paper Reading】CenterNet:Keypoint Triplets for Object Detection

背景 首先是借鉴Corner Net 表述了一下基于Anchor方法的不足: anchor的大小/比例需要人工来确认anchor并没有完全和gt的bbox对齐,不利于分类任务。 但是CornerNet也有自己的缺点 CornerNet 只预测了top-left和bottom-right 两个点,并没有…

Vue3 -- 封装自定义的hooks

示例一:使用fetch 在Vue 3中,我们可以使用Composition API来封装自定义的Hooks。这些Hooks是可以被多个组件复用的逻辑代码块,可以提供更好的代码组织和代码重用。下面是一个简单的示例,展示如何封装一个名为useFetch的自定义Hook,用于处理数据获取的逻辑: import {ref, …

Pytest三种运行方式

Pytest 运行方式共有三种: 1、主函数模式 运行所有 pytest.main() 指定模块 pytest.main([-vs],,./testcase/test_day1.py) 只运行testcase 下的test_day1.py 文件 指定目录 pytest.main([-vs]),./testcase) 只运行testcase 目录下的文件 通过nodeid指定用例…

Vue中data变量使用的注意事项

因为在Vue中,data中的属性往往都是用于双向绑定,所以Vue会对其有劫持,所以我们在对data属性进行操作时,尽量不要对其直接操作,比如下面代码: export default {data() {return {list: []}},methods: {init(…

用康虎云报表打印二维码

用康虎云报表打印二维码 1 安装: 下载地址: https://www.khcloud.net/cfprint_download, 选择Odoo免代码报表模块和自定义SQL报表模块 下载下来后解压缩,一共有四个模块 cf_report_designer # 报表设计模块 cf_sale_print_ext # 演示模块 cf_sql_report cfprint …

h3c 7506 IRF和MAD多活配置案例

IRF配置 irf mac-address persistent always irf auto-update enable irf auto-merge enable undo irf link-delay irf member 1 priority 1 irf member 2 priority 32 irf mode normal irf-port 1/2 port group interface Ten-GigabitEthernet1/1/0/39 mode enhanced port g…

UDP 的报文结构和注意事项

目录 一. UDP的特点 二. UDP协议 1. UDP协议端格式 2.UDP的报文结构 3. 基于UDP的应用层协议 三. (高频面试题) 一. UDP的特点 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。不可靠:即使因为网络故障等原因无法将数据报发送…

一文带你快速掌握如何在Windows系统和Linux系统中安装部署MongoDB

文章目录 前言一、 Windows系统中的安装启动1. 下载安装包2. 解压安装启动3. Shell连接(mongo命令)4. Compass-图形化界面客户端 二、 Linux系统中的安装启动和连接1. 下载安装包2. 解压安装3. 新建并修改配置文件4. 启动MongoDB服务5. 关闭MongoDB服务 总结 前言 为了巩固所学…

STM32 低功耗-停止模式

STM32 停止模式 文章目录 STM32 停止模式第1章 低功耗模式简介第2章 停止模式简介2.1 进入停止模式2.1 退出停止模式 第3章 停止模式程序部分总结 第1章 低功耗模式简介 在 STM32 的正常工作中,具有四种工作模式:运行、睡眠、停止以及待机模式。 在系统…

21 | 朝阳医院数据分析

朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,通过对朝阳区医院的药品销售数据的分析,了解朝阳医院的患者的月均消费次数,月均消费金额、客单价以及消费趋势、需求量前几位的药品等。 import numpy as np from pandas import Series,DataFrame impo…

Word转PDF工具哪家安全?推荐好用的文件格式转换工具

Word文档是我们最常见也是最常用的办公软件,想必大家都知道了Word操作起来十分的简单,而且功能也是比较齐全的。随着科技的不断进步,如今也是有越来越多类型的办公文档,PDF就是其中之一,那么word转pdf怎么转?Word转PD…

L2CS-Net: 3D gaze estimation

L2CS-Net: Fine-Grained Gaze Estimation in Unconstrained Environments论文解析 摘要1. 简介2. Related Work3. METHOD3.1 Proposed loss function3.2 L2CS-Net 结构3.3 数据集3.4 评价指标 4. 实验4.1 实验结果 论文地址:L2CS-Net: Fine-Grained Gaze Estimation…

日常问题——使用Java转将long类型为date类型,日期是1970年

😜作 者:是江迪呀✒️本文关键词:日常BUG、BUG、问题分析☀️每日 一言 :存在错误说明你在进步! 一、问题描述 long类型的日期为:1646718195 装换为date类型: Date date new Dat…

ThreadLocal的内存泄漏是怎么发生的

前言 在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这样情况发生,增强系统的健壮性。 内存泄露 …

STL文件格式详解【3D】

STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用…

vtkImageData算法坐标计算取整处理

医学影像处理项目中,处理vtkImageData数据时经常涉及到一类问题:给了一个空间坐标或者位置,如何计算对应像素索引或者距离。 从原理上,是这样一个公式:pixel_num floor((postion1 - postion0) / spacing) . 有一些计…

大数据课程H2——TELECOM的电信流量项目实现

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解TELECOM项目的数据收集; ⚪ 了解TELECOM项目的数据清洗; ⚪ 了解TELECOM项目的数据导出; ⚪ 了解TELECOM项目的数据可视化; ⚪ 了解TELECOM项目的其他; 一、数据收集 1. 在实…

MySQL_事务学习笔记

事务 注意:一定要使用 Innodb 存储引擎 概述:一组操作的集合,是不可分割的工作单元,会把一个部分当成一个整体来处理,事务会把操作同时提交或者是撤销。要么同时成功,要么同时失败。 比如:上云…