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

简介: 快速学习应用于分布式系统-从单体架构到微服务架构。

开发者学堂课程【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

 

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

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

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

微服务架构的好处:

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

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

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

·不会受限于任何技术栈

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

相关文章
|
5月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
8月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
892 0
|
11月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
601 12
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
437 3
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1725 70
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
689 1
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
555 1
服务架构的演进:从单体到微服务的探索之旅