微服务概述之微服务特性

前言

既然系统采用了微服务架构,就需要了解一些微服务的特性,这样在进行微服务开发时,脑海中才会有一些指导方向。微服务具有以下特性。

1. 服务组件化

组件是独立、可替换、可升级的软件的单元。将整体应用拆分成独立的服务组件后,当对单个组件的修改完成后,只需要重新部署该组件即可。这也不是绝对的,有一些改动会影响服务间的接口,调用方(消费者)也需要进行相应的修改与部署。所以好的微服务架构的目标是通过高内聚、低耦合来尽量减少不同服务之间的依赖。

2.围绕业务能力组织团队

康威定律指出:设计系统的架构,受制于产生这些设计的组织的沟通结构。不同公司的产品结构,基本上反映了组织的沟通结构,如图1-3所示。
在这里插入图片描述

在一个单体应用中,一个项目会有很多研发团队的人参与,如前端工程师组、后端工程师组、数据库管理员组,不同组的人参与同一个项目,彼此沟通成本很高。单体项目的分工图如图1-4所示。
在这里插入图片描述

在微服务项目中,团队是围绕业务来进行组织的。例如,某个服务组里有前端工程、后端工程师、数据库管理员,这算是一个工作单元,能极大降低沟通成本。

3. 产品不是项目

在大部分软件开发时,采用的都是项目的形式,开发团队开发完软件后将软件交给运维团队去维护,原来的项目团队解散。微服务支持者倾向于避免这种模式,他们认为团队应该在产品的整个生命周期内对它负责。这就是 Amazon(亚马逊)提出的“you build,you run it”。这么做的好处是可以让开发人员经常接触到他们的产品,从而了解产品在生产中的行为,并增加与用户的联系,同时在业务升级时也很方便,毕竟开发和升级都是由同一个团队负责。

4. 去中心化的数据管理

在单体应用中,数据都在一个数据库(这里指的是逻辑库,可能物理上部署多个数据库服务器)中,管理难度大。在微服务中,不同的业务数据是放到不同的服务所对应的数据库中的。
如订单存放到订单库、商品存放到商品库等,从而大大降低了数据的管理难度。去中心化数据库示例如图1-5所示。在这里插入图片描述

5. 分散治理

由于將大服务分成了小服务,所以每个服务都可以根据自己的需求,采用合适的技术实现方案,如采用不同的语言(有的业务适合用Go,有的业务适合用Java)、采用不同的存储(有的业务适合用Redis,有的业务适合用MySQL)等。这样更利于提高开发效率,节省资源。

总结

了解了微服务的特性,作为一名有着架构师梦想的程序员,应该清楚地认识到微服务可以给实际工作带来的好处。

  • 从公司团队管理角度。将服务拆分成微服务后,可以让独立的团队完成独立的服务,实现不同的业务,使得团队更聚焦,減少了跨部门沟通的障碍,大大提高了开发效率。
  • 从公司产品研发角度。由于服务彼此独立,可以针对不同的产品需求,针对不同的服务快速地进行产品升级。从而在快节奏的软件开发环境中,缩短对市场的响应时间,加快产品的迭代。

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

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

相关文章

嵌入式软件开发对硬件知识的掌握要求要多高?

嵌入式软件开发对硬件知识的掌握要求要多高? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家&#xff0…

并发编程(一)线程基础知识与线程控制

进程与线程 进程:如任务管理器中各种程序叫做正在运行的进程。对于操作系统来说,仅仅是一个数据结构,并不真实的执行代码 线程:真实执行代码的 每个进程启动的是时候会同步启动一个主线程即main函数,当main函数结束…

倒F天线设计经验分享

一、IFA天线理论分析 为了改善ILA天线难以使用的缺点,在ILA天线的基础上再增加一个倒L结构,形成IFA天线,此种天线体积小、易于匹配并具有双极化的特点,而在蓝…

帆软报表11.0.19增加postgres数据源方案

项目使用postgres数据库,帆软报表集成开发时需要手工增加该数据源。 https://help.fanruan.com/finereport/doc-view-2563.html 但增加数据源后测试报告无此驱动,经查看文档,现在是通过驱动管理来上传, 但新版又不允许上传驱动JAR…

外贸群发邮件最好的软件?群发软件哪个好?

外贸开发信群发软件推荐?做外贸用什么邮件群发软件? 在外贸业务中,与潜在客户建立联系并保持沟通是至关重要的。那么,如何快速有效地发送邮件给大量的潜在客户呢?这就涉及到了外贸群发邮件。蜂邮EDM来探讨一下&#x…

presto/trino 入门介绍实战

引言 Presto是一款分布式SQL查询引擎,它能够在大规模数据集上实现快速、交互式的查询。本文将介绍Presto的基本概念并结合一些实际的代码示例,能够让的大家快速入门并在实际项目中应用。 官网:Launch Presto: Local download, JDBC, Docker…

11.云原生分布式数据库之TIDB

云原生专栏大纲 文章目录 为什么使用TIDB后端视角运维视角基础架构视角 TiDB Operator 简介软件版本要求部署tidbTIDB工具helm常用命令TIDB学习推荐资料 为什么使用TIDB 从后端视角、运维视角和基础架构视角来看,使用 TiDB 作为数据库系统可以获得分布式架构、高可…

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

云原生微服务之分布式锁框架 Redisson

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项目…

动物多指标生理监测:ZL-019A大小鼠饮食饮水监测系统

ZL-019A大小鼠饮食饮水监测系统是一款能够实时监测和分析动物的饮食、饮水、站立、活动量和活动轨迹等行为和代谢过程的智能系统。 本系统旨在定期测量实验动物的饮食饮水摄入行为,用户可根据需要自定义测量时间。通过定期测量,研究者无需再费心记录单个…

代码随想录 Leetcode454. 四数相加 II

题目&#xff1a; 代码 (首刷看解析 2024年1月15日&#xff09;&#xff1a; class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int n nums1.size();u…

【干货】数字化工厂常见术语合集

本文将为大家介绍一些行业通俗名称&#xff0c;希望对于从事“数字工厂”行业的朋友以及正在求职的朋友们有所助益。 数字化工厂&#xff08;"Digital factory"&#xff0c;简写为"DF"&#xff09;&#xff1a;是指利用先进的信息技术和数字化解决方案&am…

关于如何禁用、暂停或退出OneDrive等操作,看这篇文件就够了

​想知道如何禁用OneDrive?你可以暂停OneDrive的文件同步,退出应用程序,阻止它在启动时打开,或者永远从你的机器上删除该应用程序。我们将向你展示如何在Windows计算机上完成所有这些操作。 如何在Windows上关闭OneDrive 有多种方法可以防止OneDrive在你的电脑上妨碍你。…

AI自动写文章的软件有哪些?分享五款实用的

据相关数据统计&#xff0c;AI自动写文章的软件逐渐成为了现实。这些写作软件利用强大的自然语言处理和机器学习算法&#xff0c;能够自动生成文章&#xff0c;为写作工作提供了极大的便利。在本文中&#xff0c;我将向大家介绍五款实用的AI自动写文章的软件&#xff0c;一起来…

打破效率瓶颈:运用Excel提升文秘与行政工作质量

文章目录 一、数据整理二、数据分析三、报表制作四、图表展示五、模板应用六、宏编程七、安全与隐私《Excel高效办公&#xff1a;文秘与行政办公&#xff08;AI版&#xff09;》编辑推荐内容简介作者简介目录获取方式 在现代企业中&#xff0c;文秘与行政办公人员的工作内容繁杂…

文件批量重命名:如何给文件自定义名称,大量文件重命名的方法

在日常生活和工作中&#xff0c;经常要处理大量的文件&#xff0c;例如把文件重命名。手动重命名每个文件不仅耗时&#xff0c;而且容易出错。现在一起来看云炫文件管理器如何按自定义名称批量给文件重命名的技巧。 文件名自定义名称前后缩略图对比。 用自定义名称批量重命名…

Unity 编辑器篇|(五)编辑器拓展GUILayout类 (全面总结 | 建议收藏)

目录 1. 前言2. 参数3. 功能3.1 按钮&#xff1a;Button、RepeatButton3.2 文本&#xff1a;Label、TextArea、TextField、PasswordField3.3 工具栏&#xff1a;Toolbar3.4 切换框&#xff1a;Toggle3.5 滚动条&#xff1a;HorizontalScroll 、VerticalScroll3.6 滑条&#xff…

优思学院|质量管理五大工具和七大手法要点总结|2024

在现代企业管理中&#xff0c;质量管理是核心竞争力的重要组成部分。它不仅关系到产品的品质&#xff0c;更直接影响到企业的市场信誉和经济效益。本文将深入探讨质量管理中的五大工具及七大手法&#xff0c;这些工具和手法都贯穿了六西格玛DMAIC五步的方法论之中&#xff0c;是…

MYSQL第三次作业--单表查询

第三次作业 一、创建worker表 mysql> create table worker(-> 部门号 int(11) not null,-> 职工号 int(11) not null,-> 工作时间 date not null,-> 工资 float(8,2) not null,-> 政治面貌 varchar(10) not null default群众,-> 姓名 varchar(20) not n…

arrow,一个神奇的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - arrow。 Github地址&#xff1a;https://github.com/arrow-py/arrow 日期和时间处理是许多应用程序中的常见任务&#xff0c;但在 Python 中&#xf…