单体架构:
用软件会包括有几百个功能项,而所有这些功能项都打包进了一个单体的应用中。典型的例子有,ERP、CRM等其他各种各样的软件。对于这种野兽级别的软件应用、部署、排错、扩展和升级工作都是一个个噩梦。
面向服务的架构(SOA)
面向服务架构(SOA)设计是针对上述单体架构问题的一个解决方案, 将软件中相似的功能进行分组在一起。在SOA里一个服务的范围是非常广的,由此带来的弊端是服务本身庞大而复杂,数十个功能点,以及复杂的消息格式和标准(例如所有的WS规范)。
这些服务会随时间越长越大,因为累加的功能越来越多。最后,这些应用本身已变成了单体软件,与传统的单体软件(比如ERP)也没啥两样。
单体架构软件的一些特点:
-
单独应用是作为一个整体单元来设计、开发、部署的;
-
单体应用非常复杂,导致的结果就是维护,升级和增加新功能都非常困难;
-
在单体架构下,非常难实践敏捷的开发和部署方法;
-
如果要更新它的某个部署,则需要重新部署整个应用;
-
扩展:必须作为单个软件来扩展,当有资源需求冲突时扩展就变得非常困难(比如一个服务需要更多的CPU但是其他的服务要更多内存);
-
可靠性:一个不稳定的服务可能会导致整个应用不可用;
-
阻碍创新: 由于所有的功能都基于同一套技术框架来够构建,想加入新的技术或者框架就非常困难。
微服务(Microservices)
开发一个应用由一组小但是独立的服务来组成,这些服务运行在自己的进程中,可以被独立开发,独立部署。你可能在使用微服务架构从头构建一个软件,也可能是要把已有的应用服务转换为微服务。无论哪种,非常重要的一点都是你必须合理的决定微服务的大小、范围和能力。这极有可能是在实践微服务架构初期碰到的最难的事情。
设计原则:
-
单一责任原则(Single Responsibility Principle,SRP): 对于一个微服务而言具有有限的和关注的业务范围可以帮助我们满足服务开发和交付的敏捷性;
-
在微服务的设计阶段, 我们应该找到他们的边界,并将它们与业务能力相关联(在领域驱动设计里这叫有边界的上下文);
-
必须保证微服务设计能支持服务的敏捷/独立地开发和部署;
-
我们应该关注微服务的范围,而不是一味的把服务做小。一个服务的(正确的)大小应该等于满足某个特定业务能力所需要的大小;
-
与SOA里面的服务不同,一个给定的微服务应该有相当少的运营和功能点,以及简单的消息格式;
-
通常一个好的实践是先从一个比较大的服务边界开始,然后随着时间推移基于业务需求来重构成更小的。
参考教程:http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=2649690838&idx=1&sn=3311478250ddf0b487efb4b1ff0f9b4a&scene=1&srcid=0718JJmHa487XpNrb3jiPRiS#rd
相关推荐
从单体式应用到微服务的架构演变 在现代软件开发中,单体式应用(monolith)是指一个包含所有功能和组件的巨型应用程序。然而,随着业务规模的扩大和技术的更新,单体式应用会出现各种问题,如难以维护、扩展和更新...
微服务架构的出现是为了解决传统单体架构的局限性,如耦合度高、可维护性差、扩展性差等。 中台战略是指在企业级别上构建一个能力复用平台,提供业务能力、数据能力和平台能力等多种能力,实现企业级别的复用和共享...
【微服务架构演变及微服务授权中心搭建】 微服务架构是一种现代软件开发和部署的方式,它将单一的应用程序拆分成一组小型、独立的服务,每个服务都专注于完成特定的业务功能。这种架构模式起源于对传统单体架构的...
但是,当业务逐渐扩展、流量增大、用户增多时,单体架构将面临着性能瓶颈、可扩展性和可靠性问题。这时,就需要将应用程序拆分成小型的独立服务,以便更好地应对业务需求的变化。 微服务架构的优势 微服务架构可以...
微服务架构的演进从单体架构到面向服务架构(SOA),再到如今的微服务,反映了对软件开发效率和质量不断追求的进步。 微服务架构的优点包括易于开发、测试和部署,因为每个服务都是独立的,可以在自己的进程中运行...
然而,随着应用规模的增长,单体应用可能会演变成"单体地狱",导致代码难以理解和维护,启动时间变长,以及扩展性和持续部署的挑战。当应用变得庞大复杂时,修复错误和新增功能变得极其困难,同时启动时间的增加严重...
微服务架构的演变过程是从单体架构开始,然后逐渐演变到微服务架构。首先,我们可以通过横向扩展来解决单体架构的瓶颈问题,但是这样做法会存在资源浪费的问题。随着业务的发展,我们需要对整个系统按照模块进行拆分...
综上所述,从中台战略的角度看,企业从单体架构向微服务架构转型,再发展到中台,是为了提高业务灵活性、降低重复建设,以及更好地复用核心能力。这需要通过基础服务治理、自动化工具、统一标准和良好的组织协作来...
本文总结了 Spring Cloud 微服务架构笔记(一),涵盖了微服务基础知识、系统架构演变、单体应用架构、垂直应用架构、分布式 SOA 架构、微服务架构、分布式核心知识等方面的知识点。 微服务基础知识: 1. 微服务...
总的来说,大型网站架构演变的知识体系包括:单体架构、垂直拆分、水平扩展、微服务架构、容器化、数据一致性理论、缓存技术、CDN、NoSQL、消息队列、监控和日志分析等多个方面。理解并掌握这些知识,有助于构建高效...
微服务业务架构是一种现代化的软件开发方法,它将大型单体应用分解为一系列小型、独立的服务,每个服务都专注于特定的业务功能,并可以独立部署和扩展。这种架构方式旨在提高系统的可伸缩性、可维护性和敏捷性。 ...
【精品】潘志伟-从单体到微服务再到中台战略的历程-IAS2019演讲.pdf
在早期的Web应用程序中,单体架构是最常见的模式。在这种架构中,所有功能模块(如前端页面、Web层、Service层和DAO层)都被打包在一个Web容器内运行。优点在于项目结构简单,开发成本低,但缺点是随着项目规模扩大...
微服务架构的起源可以追溯到企业架构的演变,如TOGAF(The Open Group Architecture Framework)框架,它为企业信息系统的构建提供了一个全面的蓝图。TOGAF包含了业务架构、数据架构、应用架构和技术架构四个部分,...
4. 微服务架构:与传统的单体架构相比,微服务架构将应用拆分成多个服务,每个服务运行自己的进程并使用轻量级通信机制(通常是HTTP RESTful API)进行通信。这种架构可以提升应用的可维护性和灵活性。 5. 持续集成...
王庆友在其文档中深入讨论了架构的本质,以及微服务架构相对于传统架构的演变过程和优势。 架构本质 架构的本质是对系统的有序化重构,目的是减少系统的无序性,也就是减少熵值。熵是热力学中的概念,它表示一个...
为应对这些挑战,自动驾驶系统的架构经历了从单一系统到模块化,再到微服务化的演变。在研发初期,单体系统简洁易懂,便于快速验证概念,但随着技术的发展,系统复杂性增加,导致了数据冲突频繁、性能瓶颈等问题。...
作者详细阐述了微服务架构的演变历程,以及为何选择微服务作为现代企业级应用的构建方式。 在设计阶段,书中讨论了如何定义服务的边界,如何根据业务能力来划分服务,以及如何保持服务的内聚性和解耦性。此外,还...
- **复杂性**:相对于单体架构,微服务架构增加了管理上的复杂性。 - **通信开销**:服务间通信可能导致额外的延迟。 ##### 5. 智能制造系统架构 智能制造系统架构通常涉及三个维度:生命周期、系统层级和智能...