精华内容
下载资源
问答
  • 一、单体架构 单体架构就是把所有的业务模板编写在一个项目中,最终会打包成一个war包,然后进行部署运行。单体服务架构如下: 单体架构的优点: 1、部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可 ...

    一、单体架构
    单体架构就是把所有的业务模板编写在一个项目中,最终会打包成一个war包,然后进行部署运行。单体服务架构如下:单体架构
    单体架构的优点:
    1、部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可
    2、技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。
    3、用人成本低:单个程序员可以完成业务接口到数据库的整个流程。
    单体架构的缺点;
    1、系统启动慢,一个进程包含了所有的业务逻辑,涉及到的启动模块多,导致系统的启动,重启周期长;
    2、系统的错误隔离性差,可用性差,任何一个模块的错误可能导致整个系统的宕机;
    3、可伸缩性差,系统的扩容只能对整个应用扩容,不能做到对整个功能点进行扩容;
    二、微服务架构
    微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己进程中。
    Spring Cloud并不是一个项目,他是一套项目的组合,Spring Cloud中存在很多子项目,每个子项目都是针对微服务系统架构存在的问题给出的一种解决方案。Spring Cloud是基于Spring Boot实现的。
    微服务架构图如下:微服务架构设计模式
    微服务的优点:
    1、易于开发和维护:一个服务只关注一个特定的业务功能,所以业务清晰,代码量少。
    2、单个服务启动快:单个服务代码量少,所以启动快;
    3、局部修改易部署:单个应用只要有修改,就得重新部署整个应用,微服务解决了这个问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可;
    4、技术栈不受限:在微服务架构中,可以结合业务和团队的特点,合理选用技术栈。例如有些服务可以使用关系型数据库Mysql,有的服务可以使用非关系型数据库redis。甚至可根据需求,部分服务使用JAVA开发,部分微服务使用Node.js开发;
    5、按需收缩:可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合微服务的特点,增加内存,升级CPU或增加节点。
    微服务的缺点:
    运维要求高:更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的运行即可,在微服务架构中,需要保证几十个甚至几百个服务器正常运行和协作,这给运维带来了巨大的挑战;

    展开全文
  • 首先,微服务架构并非就一定比单体架构好,我一直反对这种没有独立思考人云亦云答案,每种架构都有其适用场景。 第一,我们来看看单体架构适用场景 单体架构特别适合初创公司初创项目,可以小成本快速试...

    这是一道高频的面试题,下面,我们一起来看看如何回答会更好。

    首先,微服务架构并非就一定比单体架构好,我一直反对这种没有独立思考的人云亦云的答案,每种架构都有其适用场景。

     

    第一,我们来看看单体架构适用的场景

    单体架构特别适合初创公司的初创项目,可以小成本快速试错,且系统模块之间的调用,是进程内的通信,所以整体的性能表现会非常好,所以这类型的项目,我推荐采用单体架构足以,在市场还没有打开之前,采用各类看似高大上的技术,除非是为了卖弄技术,否则毫无意义。

    做产品,需要考虑MVP模式,架构除了考虑技术,更应该考虑成本,成本意识是很关键的。

     

    第二,我们来看看,微服务架构适合的场景

    当系统经过一段时间的运营之后,如果运气不错,用户量有了一定的增量,业务也随着市场需求有了扩展,从而慢慢的整个系统的业务变得复杂而庞大,这个时候一个系统的启动时间,重新编译的时间,都可能会非常耗时,一个功能的修改也需要做全盘的回归测试,所谓牵一发而动全身,这个时候就适合对系统进行服务拆分,拆分成多个服务子系统,每个子系统可以更灵活做升级。注意!此时原先的模块之间的通信,由原先的进程内通信变为进程间的通信,所以其响应速度会有所影响。

     

    第三,我们再来看看,微服务拆分的原则

    一般我们根据业务的边界来拆分,比如按照商品,购物车,订单等等业务边界进行服务的拆分,另外一个,系统中存在的共性基础服务,比如像短信,邮件,日志等等,我们也可以作为单独的服务进行拆分,作为基础服务层供上层服务复用。

    展开全文
  • 二、单体架构示意图三、单体应用架构的优缺点1. 优点便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享。易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,这简化了测试...

    543ae4f9b95f0fc8d5cae74e862ad320.png

    一、单体应用架构概念

    一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。
    而架构单体应用的方法论,就是单体应用架构。

    二、单体架构示意图

    8a8c7c4a74a56b87f39a0b443193da78.png

    三、单体应用架构的优缺点

    1. 优点

    便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享。

    易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,这简化了测试过程,因为没有额外的依赖,每项测试都可以在部署完成后立刻开始。

    易于部署:只需将单个归档文件复制到单个目录下。

    2. 缺点

    复杂性高:由于是单个归档文件,所以整个项目文件包含的模块非常多,导致模块的边界模糊、依赖关系不清晰、代码的质量参差不齐,混乱的堆在一起,使得整个项目非常复杂。以致每次修改代码,都非常小心,可能添加一个简单的功能,或者修改一个Bug都会带来隐藏的缺陷。

    技术债务:随着时间的推移、需求的变更和技术人员的更替,会逐渐形成应用程序的技术债务,并且越积越多。

    扩展能力受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。

    阻碍技术创新:对于单体应用来说,技术是在开发之前经过慎重评估后选定的,每个团队成员都必须使用相同的开发语言、持久化存储及消息系统。

    四、微服务架构概念

    微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

    五、微服务架构示意图

    ea7511400c342150a1255d0f52041128.png

    六、微服务架构的优缺点

    1. 优点

    易于开发和维护:一个微服务只会关注一个特定的业务功能,所以业务清晰、代码量较少。开发和维护单个微服务相对简单。

    单个微服务启动较快

    局部修改容易部署:单体应用只要有修改,就得重新部署整个应用。微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。

    技术栈不受限制:在微服务架构中,可以结合项目业务及团队的特点,合理的选择技术栈。

    按需伸缩:可根据需求,实现细粒度的扩展。

    2. 缺点

    运维要求高:更多的服务意味着要投入更多的运维。

    分布式固有的复杂性:使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都会带来巨大的问题。

    接口调整成本高:微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有用到这个接口的微服务都需要进行调整。

    展开全文
  • 软件架构演进 软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程,博客里写到了这四种架它们的特点以及优缺点分析,个人学习之用,仅供参考!1.1.1单体架构特点:1、所有的功能集成在一个项目...

    软件架构演进

             软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程,博客里写到了这四种架它们的特点以及优缺点分析,个人学习之用,仅供参考!

    1.1.1      单体架构

            db6671d7c6ff4ec7ca641b0f6f7eaeaa.png

    特点:

    1、所有的功能集成在一个项目工程中。

    2、所有的功能打一个war包部署到服务器。

    3、应用与数据库分开部署。

    4、通过部署应用集群和数据库集群来提高系统的性能。

    优点:

    1、项目架构简单,前期开发成本低,周期短,小型项目的首选。

    缺点:

    1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。

    2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

    3、技术栈受限。

    1.1.2      垂直架构

     9762056a091420a5957ac278f989715c.png

    特点:

    1、以单体结构规模的项目为单位进行垂直划分项目即将一个大项目拆分成一个一个单体结构项目。

    2、项目与项目之间的存在数据冗余,耦合性较大,比如上图中三个项目都存在客户信息。

    3、项目之间的接口多为数据同步功能,如:数据库之间的数据库,通过网络接口进行数据库同步。

    优点:

    1、项目架构简单,前期开发成本低,周期短,小型项目的首选。

    2、通过垂直拆分,原来的单体项目不至于无限扩大。

    3、不同的项目可采用不同的技术。

    缺点:

    1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。

    2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

    1.1.3      SOA架构

     d7fc8a223660c439a6c23ab6b2e9c152.png

    特点:

    1、基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式给各各系统提供服务。

    2、各各项目(系统)与服务之间采用webservice、rpc等方式进行通信。

    3、ESB企业服务总线作为项目与服务之间通信的桥梁。

    优点:

    1、将重复的功能抽取为服务,提高开发效率,提高系统的可重用性、可维护性。

    2、可以针对不同服务的特点制定集群及优化方案。

    3、采用ESB减少系统中的接口耦合。

    缺点:

    1、系统与服务的界限模糊,不利于开发及维护。

    2、虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。

    3、抽取的服务的粒度过大,系统与服务之间耦合性高。

    1.1.1      微服务架构

    8a72296d09b615714bf50740fbe270f1.png

    特点:

    1、将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务。

    2、微服务遵循单一原则。

    3、微服务之间采用RESTful等轻量协议传输。

    优点:

    1、服务拆分粒度更细,有利于资源重复利用,提高开发效率。

    2、可以更加精准的制定每个服务的优化方案,提高系统可维护性。

    3、微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更轻量。

    4、适用于互联网时代,产品迭代周期更短。

    缺点:

    1、微服务过多,服务治理成本高,不利于系统维护。

    2、分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大。

    出处:https://blog.csdn.net/chenyunqiang/article/details/81476388

    展开全文
  • 为什么淘汰了单体架构,使用微服务? 集群是什么东东,分布式有什么联系? 什么是微服务,分布式,两者有什么关系? 微服务之间是如何通信 SpringCloudDubbo有哪些区别 本质区别:服务之间通信机制不同,...
  • 单体架构&微服务架构&中台服务架构

    万次阅读 多人点赞 2018-09-06 16:16:39
    开门见山,一图胜千言,先来看看单体架构微服务架构的区别? 单体服务架构,将所有的功能模块(service)打包到一起并放在一个web容器中运行。 微服务架构,就是将复杂臃肿的单体应用进行细粒度的服务拆分,每...
  • 单体应用架构和微服务架构的区别

    万次阅读 2018-09-25 17:32:41
    二、单体架构示意图 三、单体应用架构的优缺点 1. 优点 便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享。 易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,这简化...
  • 其中主流两种微服务架构 就是其下两种   EUREKA Server服务端就是供服务注册服务器。 EUREKA Client客户端就是用来简化与服务端交互并作为轮询负载均衡器并提供故障切换。 EUREKA Server作为服务...
  • 面对微服务如火如荼发展,很多人都在了解,学习...本文从单体架构微服务架构,微服务风险评估,微服务落地条件等几个方面探讨微服务落地过程,希望对你有所启发。讲解微服务之前,我们先简单了解下单体架构...
  • 一、什么是微服务微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小服务,服务之间相互协调、互相配合,最早提出微服务架构概念,是Fred George。他一位非常传奇人物,从业40多年,接触过70+编程...
  • 传统单体架构 先来看看传统单体项目架构图 从微服务架构图得出如下结论: 传统单体应用架构功能集中,代码数据中心化,一个发布包部署后运行在同一个进程中应用程序。 复杂性高:由于是单个归档文件,...
  • 微服务架构的特性 微服务架构的优势 微服务架构的挑战 微服务设计原则 微服务SOA的区别 分布式-微服务-集群的区别 分布式 集群模式 分布式是否属于微服务? 微服务架构 单体架构 什么是单体架构 一个...
  • 单体应用和微服务的区别

    千次阅读 2019-04-25 08:31:15
    (二)、单体架构示意图 (三)、单体应用架构的优缺点 优点 便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享。 易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,这...
  • 一、单体架构和微服务特点 二、springcloud与dubbo比较 三、版本规划 转载于:https://www.cnblogs.com/histlyb/p/8410016.html
  • 传统架构与微服务架构的区别 系统架构需要遵循的三个标准 提高敏捷性:及时响应业务需求,促进企业发展 提升用户体验:提升用户体验,减少用户流失 降低成本:降低增加产品、客户或业务方案的成本 传统的开发...
  • 本次讲解单体应用与微服务的区别 单体应用是将所有功能模块放在一个单一进程中,并且通过在不同的服务器上面复制这个单体进行扩展。 微服务架构是将每一个功能模块分别放进到一个独立的服务中,并且通过跨服务器...
  • 这一条很好理解就是当我们公司内部拥有多套子系统时候,势必会带来一些重复性工作,比如说公司内部OA系统报表系统、两个系统按照单独设计都会存在用户管理功能,如果某一天公司需要在加一套管理系统...
  • 随着微服务架构的持续火热,网络上针对微服务单体架构的讨论也是越来越多。去年的时候,社区更多的关注点是在二者的区别以及优缺点辨析上,而今年,越来越多的人开始关注如何从单体架构迁移到微服务上。毋庸置疑,...
  • 随着微服务架构的持续火热,网络上针对微服务单体架构的讨论也是越来越多。去年的时候,社区更多的关注点是在二者的区别以及优缺点辨析上,而今年,越来越多的人开始关注如何从单体架构迁移到微服务上。毋庸置疑,...
  • 随着微服务架构的持续火热,网络上针对微服务单体架构的讨论也是越来越多。去年的时候,社区更多的关注点是在二者的区别以及优缺点辨析上,而今年,越来越多的人开始关注如何从单体架构迁移到微服务上。毋庸置疑,...
  • 以下问题是笔者在实际开发中遇到问题,这些问题也都是单体应用时不会考虑到,但是分布式应用时候就必须要考虑这些问题,解决方案原理后续会整理更新,也希望大家积极回复讨论问题,一起学习。 1、多节点部署...
  • 什么是微服务 微服务是系统上架构的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型的微服务,这些小型的 微服务,这些小型的微服务都可以在各自的服务器上...与单体架构的区别 在以往传统的企业系统
  • 随着微服务架构的持续火热,网络上针对微服务单体架构的讨论也是越来越多。去年的时候,社区更多的关注点是在二者的区别以及优缺点辨析上,而今年,越来越多的人开始关注如何从单体架构迁移到微服务上。毋庸置疑,...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 234
精华内容 93
关键字:

单体架构和微服务架构的区别