精华内容
下载资源
问答
  • 单体架构

    2021-04-14 21:49:40
    一、什么是单体架构 功能集中、代码和数据中心化、一个发布包、部署后运行在同一进程的应用程序,称之为单体架构应用,也叫单块架构应用。 前一篇文章说到三层架构,虽然系统分成3层,但最终运行,忽略负载均衡、...

    一、什么是单体架构

    功能集中、代码和数据中心化、一个发布包、部署后运行在同一进程的应用程序,称之为单体架构应用,也叫单块架构应用。与单体架构对应的,是微服务架构。

    前一篇文章说到三层架构,虽然系统分成3层,但最终运行,忽略负载均衡、水平扩展的情况下,仍然是同一台机器同一进程。

    我估计,我们当前开发的信息系统,除了微服务架构,其他都是单体架构。SOA,由多个单体架构程序组成;微服务的每个服务,粒度往往更小。微服务架构中的服务,是指一个单体系统拆分出来的一个个模块,依附于容器进行独立运行,每个模块不算一个完整的系统,叫组件可能更合适一些。SOA架构,当然也提供许多服务,但它多个业务种类的服务,可能都是由一个子系统来提供的,比如登录服务,订单服务,都由一个所谓的专门提供对外接口的系统来完成。但微服务也算是SOA的一种,二者之间的分界线并不是很清晰的。假如SOA中,每个子系统只提供一种服务,那其实也就是微服务了。这是我的理解。

    二、单体架构的优势

    1、易于开发

    2、易于测试

    3、易于部署

    4、易于水平伸缩
    由于是一个程序,水平扩展无非就是新部署一个服务器节点而已。由于单体架构本身部署方便,因此水平伸缩比较容易。当然,前提条件是处理好负载均衡的策略。

    三、单体架构面临的挑战

    但现在,单体架构的优势已逐渐无法适应互联网时代的快速变化,面临越来越多的挑战。体现在:

    1、维护成本增加
    因为程序功能越来越多,代码量也越来越大,相应团队也变大,沟通成本、管理成本等也显著增加。开发过程中,调试,错误定位等时间变长,也不容易掌握全局功能,维护修改难度增加。

    2、持续交付周期长
    代码量增加,越来越复杂,编译、构建、部署时间变长,自动化集成、交付、部署的周期变长,与此同时,部署流水心运行过程中,开发人员能够提交代码的时间窗口变小。

    3、新人培养周期长

    4、技术选型成本高
    单体架构系统倾向于采用单一技术栈,一经选定,后期再想调整或尝试,风险和工作量可能会很大

    5、可扩展性差
    单体架构程序,运行在同一进程;水平扩展,部署容易,但由于系统内部侧重点不同,不同模块间,数据缓存,计算量等差别较大,服务器必须按照最大需求量进行配置,成本较高;如果系统保存使用上下文,对负载均衡等策略配置要求也高。

    6、构建全功能团队难
    单体架构的开发模式,在分工时往往以技能为单位,比如数据库,服务端,前端,一个功能,需要跨工种跨团队沟通协调。系统越大,要求就越高。

    四、总结

    随着业务扩大,需求持续增加,单体架构很难满足业务快速变化的需要。一方面,代码的可维护性,扩展性,灵活性在降低,另一方面,系统的测试、构建、维护成本在增加,于是随着系统越来越庞大,最终需要进行改造和重构。

    互联网时代,创新要求高,需求变化快,相对庞大和僵硬的单体架构,面临越来越多的挑战。

    展开全文
  • 什么是单体架构 一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构,这是一种比较传统的架构风格。 单体架构的缺陷 - ...

    什么是单体架构
    一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构,这是一种比较传统的架构风格。
    在这里插入图片描述

    • 单体架构的缺陷     -
      

    1.复杂性高
    整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个BUG都会造成隐含的缺陷。

    2.技术债务逐渐上升
    随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。已使用的系统设计或代码难以修改,因为应用程序的其他模块可能会以意料之外的方式使用它。

    3.部署速度逐渐变慢
    随着代码的增加,构建和部署的时间也会增加。而在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用。全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低,从而又导致两次发布之间会有大量功能变更和缺陷修复,出错概率较高。

    4.扩展能力受限,无法按需伸缩
    单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩。

    5.阻碍技术创新
    单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和架构,想要引入新的框架或技术平台非常困难。由于单体架构的缺陷日益明显,所以越来越多的公司采用微服务架构解决上面提到的单体架构中的问题。不同于构建单一、庞大的应用,微服务架构将应用拆分为一套小且互相关联的服务。

    本文来源于:奈学开发者社区,如有侵权,请联系我删除~

    展开全文
  • 论微服务架构与单体架构前言一、什么是单体架构单体架构的优点:单体架构的缺点:二、什么是微服务架构微服务架构的优点:总结 前言 微服务架构是目前开发较为热门的技术点。本章内容简单介绍微服务与单体架构的...


    前言

    微服务架构是目前开发较为热门的技术点。本章内容简单介绍微服务与单体架构的概念及区别,帮助新手开发者建立初级概念,为后续SpringCloud Alibaba的学习奠定基础


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、什么是单体架构?

    单体架构就像是一个盒子,所有的东西都放在这个盒子里。
    在这里插入图片描述
    一个包(war、jar)就能包含所有功能的应用。
    在这里插入图片描述

    单体架构的优点:

    • 架构简单
    • 开发 测试 部署方便

    单体架构的缺点:

    • 代码结构复杂
    • 部署麻烦(全量部署 ,风险较高。)
    • 很难扩展(内部有不同的需求,但都捆绑在一起,无法扩展。)
    • 阻碍技术升级(有了更合适的技术,却干不动,代码紧耦合)

    二、什么是微服务架构

    微服务架构就好像一个柜子,所有的东西都分门别类的存放。

    在这里插入图片描述
    一系列独立的微服务构成整个系统,一个微服务只关注某个特定功能,可以单独维护。

    在这里插入图片描述

    微服务架构的优点:

    • 易于开发维护:
      每个服务业务功能单一,开发和维护简单,体积小,启动快。
    • 局部部署容易
      独立的服务可以单独部署,不影响其他服务。
    • 易于扩展
      可以根据每个服务的特性进行有针对性的扩展。
    • 易于技术升级:
      某个服务升级的新技术时,可以快速改造,不影响其他服务。

    总结

    重难点:

    1. 单体架构的结构和特点
    2. 单体架构的优缺点
    3. 微服务架构的结构特点
    4. 微服务架构的优缺点
    展开全文
  • 目录单体架构单体架构的缺陷SOA架构微服务架构微服务架构的特性微服务架构的优势微服务架构的挑战微服务架构与SOA架构的区别分布式-微服务-集群的区别集群模式分布式与微服务的关系 单体架构 一个jar包或者war包,...

    单体架构

    一个jar包或者war包,包含了应用的所有功能的应用程序,称之为单体应用。架构单位应用的方法论,称之为单体应用架构,这是一种比较传统的架构风格

    在这里插入图片描述

    单体架构的缺陷

    1.复杂性高
    整个项目包含的模块非常多,模块的边界模糊,依赖关系不清晰,代码质量参差不齐,整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个BUG都会造成隐含的缺陷。
    2.技术债务逐渐上升
    随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。已使用的系统设计或代码难以修改,因为应用程序的其他模块可能会以意料之外的方式使用它。
    3.部署速度逐渐变慢
    随着代码的增加,构建和部署的时间也会增加。而在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用。全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低,从而又导致两次发布之间会有大量功能变更和缺陷修复,出错概率较高。
    4.扩展能力受限,无法按需伸缩
    单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩。
    5.阻碍技术创新
    单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和架构,想要引入新的框架或技术平台非常困难。
    由于单体架构的缺陷日益明显,所以越来越多的公司采用微服务架构范式解决上面提到的单体架构中的问题。
    不同于构建单一、庞大的应用,微服务架构将应用拆分为一套小且互相关联的服务。

    SOA架构

    SOA是Service-Oriented Architecture的英文缩写,就是面向服务的架构。这里的服务可以理解为service层业务服务

    单一应用架构
    当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
    垂直应用架构
    当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
    分布式服务架构
    当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
    流动计算架构
    当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
    此时,用于提高机器利用率的SOA服务治理方案是关键。
    Dubbo就是SOA服务治理方案的核心框架。

    总结:dubbo不仅可以对服务进行治理,而且还可以对服务进行调用。

    微服务架构

    简而言之,微服务架构风格的开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API轻量的机制来相互通信。
    这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。


    微服务架构的特性

    • 每个微服务可独立运行在自己的进程里
    • 一系列独立运行的微服务共同构建起整个系统
    • 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,如订单管理、用户管理等
    • 微服务之间通过一些轻量的通信机制进行通信,如REST API接口进行调用
    • 可以使用不同的语言与存储技术
    • 全自动的部署机制

    微服务架构的优势

    1.易于开发和维护
    一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对比较简单,整个应用是由若干个微服务构建而成,所以整个应用也会维持在可控状态;
    2.单个微服务启动较快
    单个微服务代码量较少,所以启动会比较快;
    3.局部修改容易部署
    单体应用只要有修改,就要重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可;
    4.技术栈不受限
    在微服务中,我们可以结合项目业务及团队的特点,合理地选择技术栈
    5.按需伸缩
    根据业务的需求灵活配置

    微服务架构的挑战

    1.运维要求较高
    更多的服务意味着更多的运维投入。在单体架构中只需要保证一个应用的正常运行;而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,带来了巨大的挑战;
    2.分布式固有的复杂性
    使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都带来了巨大的挑战;
    3.接口调整成本高
    微服务之间通过接口进行通信。如果修改某个微服务的API,可能所有使用了该接口的微服务都需要做调整;
    4.重复劳动
    很多服务可能都会使用到相同的功能。而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,导致代码重复。

    微服务架构与SOA架构的区别

    微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化
    微服务架构不在强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。

    分布式-微服务-集群的区别

    在这里插入图片描述


    service A、B、C、D 分别是业务组件,通过API Geteway进行业务访问。将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上面,各个业务模块通过接口进行数据交互。

    区分分布式的方式是根据不同机器的不同业务

    集群模式

    集群模式是不同的服务器部署同一套服务对外访问,实现服务的负载均衡

    区分集群的方式是根据部署多态服务器业务是否相同
    注意:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到sesison而终止退出服务

    分布式与微服务的关系

    分布式属于微服务,微服务的意思就是将模块拆分成一个独立的服务单元通过接口来实现数据的交互。

    微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,也可以是同一个服务器

    展开全文
  • 阅读文本大概需要15分钟。单体架构什么是单体架构一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们...
  • 那么微服务架构与传统的单体架构相比,有何区别呢?我们从以下几点来看: 一、单体架构 单体架构,是指将开发好的项目打成war包,然后发布到tomcat等容器中的应用。 假设你正准备开发一款与Uber和滴滴竞争的出租...
  • 单体架构】  1. 什么是单体架构  一个归档包(例如war格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构。  2. 单体架构示例图  3. 单体架构...
  • 单体架构什么是单体架构一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构,这是一种比较传统的架构风格。。单体架构示例图...
  • 微服务架构 VS 单体架构

    千次阅读 2019-07-01 20:13:47
    在软件行业,微服务架构是一种重要的发展趋势。这一趋势,不仅仅是对企业内的IT信息系统...但是,与传统的单体架构相比,微服务的优势是什么呢? 1) 微服务架构vs单体架构 首先,让我们来看下微服务架构和单...
  • 单体架构、SOA架构、微服务架构

    千次阅读 2018-06-05 08:57:36
    单体架构、SOA架构、微服务架构
  • 单体架构&微服务架构&中台服务架构

    万次阅读 多人点赞 2018-09-06 16:16:39
    开门见山,一图胜千言,先来看看单体架构跟微服务架构的区别? 单体服务架构,将所有的功能模块(service)打包到一起并放在一个web容器中运行。 微服务架构,就是将复杂臃肿的单体应用进行细粒度的服务拆分,每...
  • 互联网架构介绍001 之 单体架构1. 单体架构2. 水平架构分层模型图3. 将同步单体架构修改为异步架构4. SOA 架构5. 微服务架构5.1 微服务架构拆分的本质5.2 微服务架构适用场景5.3 微服务架构的目的 互联网架构的演进...
  • 单体架构 什么是单体架构 单体架构的缺陷 SOA架构 微服务架构 什么是微服务架构 微服务架构示例图 微服务架构的特性 微服务架构的优势 微服务架构的挑战 微服务设计原则 微服务和SOA的区别 分布式-...
  • 单体架构和微服务架构的优缺点

    千次阅读 2019-11-01 16:35:43
    单体架构单体架构就是把所有的业务模块编写在一个项目中,最终会打包成一个war,然后进行部署运行 单体架构的优点: 1.由于是完整的
  • 一、单体架构 单体架构就是把所有的业务模板编写在一个项目中,最终会打包成一个war包,然后进行部署运行。单体服务架构如下: 单体架构的优点: 1、部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可 ...
  • 目录单体架构 VS 微服务架构单体架构1. 什么是单体架构2. 单体架构优缺点总结3. 单体架构增加服务器4. 负载均衡后会带来一个分布式session的问题5. 网站流量再增大后数据库解决措施微服务& 微服务架构微服务理解...
  • 什么单体架构?在软件设计中,经常提及和使用经典的 3 层模型,即表示层、业务逻辑层和数据访问层。表示层:用于直接和用户交互,也称为交互层,通常是网页、UI 等。业务逻辑层:即业务逻辑处理层,例如用户输入的...
  • 单体架构是什么

    2020-06-10 12:08:20
    单体架构是什么 **单体架构也称为单体系统或单体应用,就是一种把系统所有的功能,模块耦合在一个应用的架构方式。 单体应用特点 1.1打包成一个独立的单元(导成一个唯一的jar包或者war包) 1.2会一个进程的方式...
  • 文章目录7.1 软件架构的演进过程7.1.1 单体架构7.1.2 垂直架构7.1.3 SOA架构7.1.4 微服务架构 7.1 软件架构的演进过程 这是系统拆分的一个路线 单体 -> 垂直应用 -> 分布式服务 -> 弹性计算 我们来详细...
  • 单体架构与微服务架构 【单体架构】 1.什么是单体架构 一个归档包(例如war格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构。 2.单体架构示例图 3...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,681
精华内容 3,072
关键字:

单体架构