如何构建微服务架构?

news2024/11/13 14:45:50

相信很多人对微服务架构都会产生这样一些疑问,例如我要何时使用微服务架构?又如何将应用程序分解为微服务?分解后,要如何去搭建微服务架构?同时,在微服务架构中,因为会涉及到多个组件,那么这些组件又可以使用什么技术来实现呢?接下来的几个小节中,我们将对这些问题进行详细的讲解。

微服务的拆分

对于一般的公司而言,实践微服务有非常大的技术挑战,所以并不是所有的公司都适合将单体架构拆分成微服务架构。一般来说,微服务架构比较适合未来有一定的扩展复杂度,且有很大用户增量预期的应用,例如一些新兴的互联网公司应用。这些公司在创业初期,不可能买大量的机器或者很贵的机器,但是又必须考虑应对成功后巨量的用户问题,这时微服务架构就成了最好的选择。除此之外,对于那些项目规模较大、业务复杂度较高,且需要长期跟进的项目,也适合考虑使用微服务架构。

在决定使用微服务架构后,所面临的另一个问题就是如何将系统拆分为微服务。对于微服务的拆分,可以参考如下几点建议:

①通过业务功能分解并定义与业务功能相对应的服务。

②将域驱动设计分解为多个子域。

③按照动词或用例分解,并定义负责特定操作的服务。例如一个负责完成订单的航运服务。

④通过定义一个对给定类型的实体或资源的所有操作负责的服务来分解名词或资源。例如一个负责管理用户帐户的帐户服务。

由于每个公司项目的实际情况不同,所以微服务的拆分在实际操作时,会涉及到很多不同的细节问题,这里就不一一描述了,但总体来说,项目在拆分时按照上述几点建议即可。

微服务架构的组件

我们先来了解下微服务架构中所涉及到的一些常见组件。这些组件的名称及其作用如下:

①服务注册中心:注册系统中所有服务的地方;

②服务注册:服务提供方将自己调用地址注册到服务注册中心,让服务调用方能够方便地找到自己;

③服务发现:服务调用方从服务注册中心找到自己需要调用服务的地址;

④负载均衡:服务提供方一般以多实例的形式提供服务,使用负载均衡能够让服务调用方连接到合适的服务节点;

⑤服务容错:通过断路器(也成熔断器)等一系列的服务保护机制,保证服务调用者在调用异常服务时快速的返回结果,避免大量的同步等待。

⑥服务网关:也称为API网关,是服务调用的唯一入口,可以在这个组件中实现用户鉴权、动态路由、灰度发布、负载限流等功能;

⑦分布式配置中心:将本地化的配置信息(properties、yml、yaml等)注册到配置中心,实现程序包在开发、测试、生产环境的无差别性,方便程序包的迁移。

微服务架构的搭建

通过前两个小节的学习,我们已经了解了如何将传统业务拆分为微服务,并熟悉了微服务架构中所涉及到的组件。为了使读者在整体上对微服务架构有一个认识,下面我们通过一张图来讲解如何搭建一个微服务架构,如图1-5所示。

图1-5简单微服务架构在图1-5中,部署了一系列的微服务,每个微服务都会访问自己的数据库(Database)。当这些微服务启动时,会将其信息注册到服务注册中心(Service Registry), 在客户端发送请求时,请求首先会被API网关(APIGateWay)拦截,API网关会读取请求数据,并从注册中心获取对应的服务信息,然后API网关会根据服务信息调用所需的微服务。

小提示:

图1-5中展示的只是一个简单的微服务架构,然而要判断一个架构是否是微服务架构,还需要满足以下几点要求:

①根据业务模块划分服务种类;

②每个服务可独立部署且相互隔离;

③通过轻量级API调用服务;

④服务需保证良好的高可用性。

只有满足以上几点要求的架构,才能称之为微服务架构,所以在搭建微服务架构时,一定要注意这些问题。

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

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

相关文章

[软件工程导论(第六版)]第9章 面向对象方法学引论(复习笔记)

文章目录9.1 面向对象方法学概述要点9.2 面向对象的概念对象9.3 面向对象建模9.4 对象模型9.5 动态模型9.6 功能模型9.7 3种模型之间的关系9.1 面向对象方法学概述要点 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方…

CS144-Lab3

概述 在实验0中,你实现了流控制字节流(ByteStream)的抽象。 在实验1和2中,你实现了将不可靠数据报中的段转换为传入字节流的工具:StreamReassembler和TCPReceiver。 现在,在实验3中,你将实现…

【STM32笔记】低功耗模式配置及避坑汇总

【STM32笔记】低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) 【STM32笔记】__WFI();进入不了休眠的可能原因 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案&#x…

kanban系统wekan安装

看板类开源项目排名第一的wekan项目安装比较友好的leantime 下载windows 版本 wekan 进入官网 https://wekan.github.io/ , 留意最新版依赖的技术栈, 比如 WeKan v6.74 依赖的是 Meteor 2.10.0, Node.js 14.21.2, MongoDB 6.0.4。 点击 Offline Window LAN 链接进入 github wik…

「7」线性代数(期末复习)

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 第五章 相似矩阵及二次型 &4)对称阵的对角化 &5二次型及其标准型 …

【C++】类与对象理解和学习(中)

专栏放在【C知识总结】,会持续更新,期待支持🌹六大默认成员函数前言每个类中都含有六大默认成员函数,也就是说,即使这个类是个空类,里面什么都没有写,但是编译器依然会自动生成六个默认成员函数…

【SSD 代码精读】之 model (Backbone) loss

model1、Backbone1)ResNet-502)截取 ResNet-50 的前半部分作为 backbone2、Module3、Loss Function1)location loss2)confidence loss3)整体 loss4)loss 代码1、Backbone 这里介绍使用 ResNet-50 作为 bac…

思维经验 | ​如何刻意练习提升用户思维?

小飞象交流会哪里有什么捷径,那些个“一步登天”的哪个不是在前面就打好了“地基”的。内部交流│20期思维经验分享如何刻意练习提升用户思维?data analysis●●●●分享人:大江老师‍数据部门和运营部门做了大量的用户标签和用户分层工作。为…

基于GIS的地下水脆弱性评价

(一)行政边界数据、土地利用数据和土壤类型数据 本文所用到的河北唐山行政边界数据、土地利用数据和土壤类型数据均来源于中国科学院资源环境科学与数据中心(https://www.resdc.cn/Default.aspx)。 (二)地…

小孩扁桃体肿大3度能自愈吗?6岁小孩扁桃体肥大怎么治效果好?

12月7日,四川眉山市民唐先生说,他刚出生的儿子在妇产医院分娩中心住了20天后感染了败血症。据唐先生介绍,哈子出院时各项指标正常。他在分娩中心住了半个月左右,孩子喝牛奶很生气,第二天就开始发烧了。同一天&#xff…

新版bing(集成ChatGPT)申请通过后在谷歌浏览器(Chrome)上的使用方法

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Flink-运行时架构介绍

文章目录Flink 运行时架构系统架构整体架构作业管理器(JobManager)任务管理器(TaskManager)作业提交流程高层级抽象视角独立模式(Standalone)YARN 集群数据流图(Dataflow Graph)并行…

用户画像——如何构建用户画像系统

为什么需要用户画像 如果你是用户,当你使用抖音、今日头条的时候,如果平台推荐给你的内容都是你感兴趣的,能够为你节省大量搜索内容的时间。 如果你是商家,当你投放广告的时候,如果平台推送的用户都是你的潜在买家,能够使你花更少的钱,带来更大的收益。 这两者背后都…

Linux内核驱动之efi-rtc

Linux内核驱动之efi-rtc1. UEFI与BIOS概述1.1. BIOS 概述1.1.1. BIOS缺点:1.1.2. BIOS的启动流程1.2 UEFI 概述1.2.1 Boot Sevices:1.2.2. Runtime Service:1.2.3. UEFI优点:1.2.4. UEFI启动过程:1.3 Legacy和UEFI1.4 …

【第31天】SQL进阶-写优化- 插入优化(SQL 小虚竹)

回城传送–》《31天SQL筑基》 文章目录零、前言一、练习题目二、SQL思路:SQL进阶-写优化-插入优化解法插入优化禁用索引语法如下适用数据库引擎非空表:禁用索引禁用唯一性检查语法如下适用数据库引擎禁用外键检查语法如下适用数据库引擎批量插入数据语法…

W806(一)模拟IIC驱动0.96OLED[移植]

前言平头哥内核的国产开发板,资源丰富,按照官方的描述是能够吊打STM32F103C8T6的,22年刚发布的时候就买了,但是当时忙于考研,而且开发板的SDK不够完善,所以23年来填一下坑,今年我在官方群里找到…

ChatGPT原理与技术演进剖析

—— 要抓住一个风口,你得先了解这个风口的内核究竟是什么。本文作者:黄佳 (著有《零基础学机器学习》《数据分析咖哥十话》) ChatGPT相关文章已经铺天盖地,剖析(现阶段或者只能说揣测)其底层原…

为啥程序会有bug?

这是一篇半娱乐性的吐槽文章,权当给广大技术人员解解闷:)。哈哈哈,然后我要开始讲一个经常在发生的事实了。(程序员们可能会感到一些不适)99.999999999%做技术的都会被问到或者被吐槽到:“你的程…

PPT和回放来了 | 中国PostgreSQL数据库生态大会圆满落幕

2月17-19日,中国PostgreSQL数据库生态大会在北京中科院软件所和CSDN平台以线下线上结合方式盛大召开!本届大会由中国开源软件推进联盟PostgreSQL分会主办。作为自2017年后我们举办的第六届年度行业大会,延续了传播技术,发展产业生…

代码质量与安全 | 一文了解高级驾驶辅助系统(ADAS)及其开发中需要遵循的标准

高级驾驶辅助系统(ADAS)有助于提高车内每个人的安全性,帮助他们安全抵达目的地。这项技术功能非常重要,因为大多数的严重车祸都是人为错误造成的。 本篇文章将讨论什么是高级驾驶辅助系统(ADAS)&#xff0…