首页 > 其他分享 >单体架构(Monolithic Architecture)

单体架构(Monolithic Architecture)

时间:2022-08-20 17:17:45浏览次数:105  
标签:架构 模块化 单体 Architecture 组件 泥球 Monolithic

一、软件发展趋势

  • 模块化(Modular)
模块化编程是在20世纪60年代末和70年代提出的解决方案。它是从类到更粗粒度的代码单元显式定义的演变。编程语言以不同的显式等级实现模块化。
例如,JAVA中默认级别意味着类只在其package中可见,而public意味着类在其package内外都可见。一直到JDK9,模块化直接作为重大特性发布。其实就是将JDK中类,模块化拆分。
  • 组件化(Componentized)

组件是另一种模块化风格。组件是按照业务领域划分的模块。理想情况下,它们是可以组成应用的独立的“应用程序”。微服务可以理解为应用的组件。

组件化,也是早在 20 世纪 60 年代末就已经存在了。

二、现代单体架构

2.1 单体架构介绍

  如今,单体架构意味着代码被部署并作为单个节点上的单个进程运行。有可能进行初步的模块化拆分(类级别),但由于整个工程一起打包部署,所以还是一个组件。

相信大部分程序员接触的第一个程序都是:一个工程中,一个文件,打印 "Hello World ! "。当初的喜悦仿若还在身边。实际上这就是一个单体架构。如下图所示:

2.2 单体架构缺点

  • 领域组件无法独立可伸缩:例如订单模块访问频率最高无法做到单独给订单模块独立水平拓展。
  • 不同的领域组件,适合用不同编程语言实现时,无法拆开组件实现;
  • 各组件无法做到单独发版,只能一起发布。拖慢研发节奏。

Anti-pattern: 大泥球(Big Ball of Mud)/ 意大利面(Spaghetti)架构

单体架构可能会演变成“大泥球”,又名意大利面条架构。其中包的结构和关系不显式,结构内聚和封装程序低,依赖不遵循规则,很难进行更改和重构。系统是不透明的,粘性的,脆弱的和僵硬的,就像一个大的泥球!

 

2.3 解决方案

将单体架构按照面向服务的架构风格拆分成不同的应用程序。即服务拆分,微服务化。国内15年开始火,一直延续至今。但很多传统企业内部仍存在很多单体架构服务,这无所谓好坏,只有合适否。有时候,能很好的支撑运行就够了,毕竟改造是需要成本的。

 

==========参考=============

2017 – hgraca – Monolithic Architecture

1997 – Brian Foote, Joseph Yoder – Big Ball of Mud

2017* – Wikipedia – Modular programming

2017* – Wikipedia – Component-based software engineering

 

 

标签:架构,模块化,单体,Architecture,组件,泥球,Monolithic
From: https://www.cnblogs.com/dennyzhangdd/p/16595549.html

相关文章

  • 现代企业架构框架-技术架构
    现代企业架构框架:https://mp.weixin.qq.com/s/SlrEu0_t0slijrNZ6DP4Ng业务架构:https://mp.weixin.qq.com/s/zQCjiHuxFvAg5QiOAuLAcQ应用架构:https://mp.weixin.qq.com......
  • 现代企业架构框架-数据架构
    现代企业架构框架:https://mp.weixin.qq.com/s/SlrEu0_t0slijrNZ6DP4Ng业务架构:https://mp.weixin.qq.com/s/zQCjiHuxFvAg5QiOAuLAcQ应用架构:https://mp.weixin.qq.com......
  • Spring 02: Spring接管下的三层项目架构
    业务背景需求:使用三层架构开发,将用户信息导入到数据库中目标:初步熟悉三层架构开发核心操作:开发两套项目,对比Spring接管下的三层项目构建和传统三层项目构建的区别注意......
  • 对保温系统与电梯系统进行架构设计
    一、 实验内容使用面向对象设计方法对保温系统与电梯系统进行架构设计。二、实验目的 学会如何分析一个系统的架构并进行设计,学会用面向对象方法实现架构设......
  • 集群架构的配置
    集群架构之准备工作(1)原创 Cloud研习社 Cloud研习社 2022-08-1607:31 发表于山东收录于合集#一站式教程121个#云计算33个#计算机37个#linux49个在对各......
  • MQ系列3:RocketMQ 架构分析
    MQ系列1:消息中间件执行原理MQ系列2:消息中间件的技术选型1背景我们前面两篇对主流消息队列的基本构成和技术选型做了详细的分析。从本篇开始,我们会专注当下主流MQ之一的......
  • 大数据治理平台技术架构图方案
                ......
  • DNS服务主辅架构
    简介:1、架构拓扑图2、环境描述 服务器名称IP地址主DNS服务器192.168.1.107辅助DNS服务器192.168.1.108注意:这里Linux版本是centos5.8。 3、主......
  • 图解 Kafka 超高并发网络架构演进过程
    阅读本文大约需要30分钟。大家好,我是华仔,又跟大家见面了。上一篇作为专题系列的第一篇,我们深度剖析了关于Kafka存储架构设计的实现细节,今天开启第二篇,我们来深......
  • IFC总体架构
    1.EXPRESS语言IFC架构采用EXPRESS语言定义,EXPRESS语言是由STEP(StandardfortheExchangeofProductModelData)开发的概念性架构语言。STEP是计算机可读的用于交......