应用于分布式系统-从单体架构到微服务架构 | 学习笔记

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习应用于分布式系统-从单体架构到微服务架构。

开发者学堂课程【Spring Cloud Alibaba Nacos 详解(上)应用于分布式系统-从单体架构到微服务架构】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/724/detail/12924


应用于分布式系统-从单体架构到微服务架构

 

内容介绍

一、单体架构

二、微服务架构


我们使用 nacos 主要是用在分布式系统开发,我们会采用微服务架构来开发我们系统的所有服务。

Nacos 是充当使用配置中心的一个解决方案,所以使用 nacos 如何应用到分布式系统开发中是我们所需要研究的重点。

 

一、单体架构

单体架构,它是早期应用比较多的架构。

Web 应用程序发展的早期,大部分 web 工程师将所有的功能模块打包到一起并放在一个 web 容器中运行,所有功能模块使用同一个数据库,同时,它还提供 API 或者 u访问的 web 模块等。

图片.png

 

尽管也是模块化逻辑,但是最终它还是会打包并部署为单体式应用,这种将所有功能都部署在一个 web 容器中运行的系统就叫做单体架构(也叫:巨石型应用)

对于小型项目单体架构比较快捷方便,但是对于大型项目这种架构还存在很多问题。

单体架构有很多好处:

开发效率高:模块之间交互采用本地方法调用,并节省微服务之间的交互讨论时间和开发成本。 (但是如果项目功能很多,再加上其他的一些模块,这时我们会发现功能层会变成一个巨石型的应用。到那时开发效率就不会高,因为模块与模块之间的依赖变多,处理的复杂性很高,维护性也会变差。只要有一个模块修改,整个工层就会改变,打包的效率就会低。)

容易测试︰IDE 都是为开发单个应用设计的、容易测试――在本地就可以启动完整的系统。容易部署︰运维成本小,直接打包为一个完整的包,拷贝到 web 容器的某个目录下即可运行。

但是,上述的好处是有条件的,它适用于小型简单应用,对于大规模的复杂应用,就会展现出来以下的不足:

不足:

复杂性逐渐变高,可维护性逐渐变差︰所有业务模块部署在一起,复杂度越来越高,修改时牵一发动全身。版本迭代速度逐渐变慢∶修改一个地方就要将整个应用全部编译、部署、启动时间过长、回归测试周期过长。

版本迭代速度逐渐变慢∶修改一个地方就要将整个应用全部编译、部署、启动时间过长、回归测试周期过长。

阻碍技术创新︰若更新技术框架,除非你愿意将系统全部重写,无法实现部分技术更新。

无法按需伸缩∶通过冗余部署完整应用的方式来实现水平扩展,无法针对某业务按需伸缩。

 

二、微服务架构

那么如何改变这些问题呢?就到了微服务架构。它会将每个系统的模块独立成一个具体的小型的项目,可以理解成一个一个的工程。是为了可维护性、可扩展性方便才这样设计。

许多大型公司,通过采用微服务架构解决了上述问题。其思路不是开发一个巨大的单体式的应用,而是将应用分解为小的、互相连接的微服务。

一个微服务一般完成某个特定的功能,比如订单服务、用户服务等等。每一个微服务都是完整应用,都有自己的业务逻辑和数据库。一些微服务还会发布AP!给其它微服务和应用客户端使用。

比如,根据前面描述系统可能的分解如下:

图片.png

 

用户服务是一个独立的工程,会连接单独用户服务的用户库;商品服务是一个工程,连接商品库……它们都是相互独立的,虽然用户服务商品服务等之间有联系,但是也是通过标准的接口进行交互,不会出现在一个工程中出现很多功能模块,一个功能模块变更,其它都需要改变这一问题。

当系统越来越大,很多服务就会诞生,每一个服务就称为微服务,每一个服务也是独立的项目和工程。

每一个业务模块都使用独立的服务完成,这种微服务架构模式也影响了应用和数据库之间的关系,不像传统多个业务模块共享一个数据库,微服务架构每个服务都有自己的数据库。

微服务架构的好处:

·分而治之,职责单一;易于开发、理解和维护、方便团队的拆分和管理

·可伸缩;能够单独的对指定的服务进行伸缩(用户服务的修改变更不会影响到商品服务,同时将微服务部署到生产环境上,根据每个服务的性能需要,可以对每个服务进行平滑的扩容。由于把各个服务分开,不论是在开发还是生产都方便我们去维护)

·局部容易修改,容易替换,容易部署,有利于持续集成和快速迭代

·不会受限于任何技术栈

所以从单体架构演变为微服务架构,是根据当前的软件需要所改变的,所以微服务架构更适合用于大项目,针对当前互联网项目来说,微服务架构使用更多。

相关文章
|
1天前
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
17 7
|
1天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
2天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
21 6
|
2天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
11 1
|
5天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
7天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
39 1
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
3月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
下一篇
无影云桌面