前言:

  随着互联网的快速发展和进步,各个行业迎来了飞速发展的机遇,而在这其中Java这门语言在互联网时代中作为中流砥柱,也在不断的革新,而我们的互联网等公司由于越来越复杂的业务和用户需求使我们传统的单机项目越来越难以满足要求,而在这其中诞生出了另一种理念《分布式》,分布式的出现则是为了应对企业持续复杂化的业务和需求。

一、单机项目时代:

  优势:

    在传统的单机项目时代,我们把项目中功能模块都放在一起,比如:用户管理、产品模块、统计模块等,这在对于一个小团队或者是一个小项目来说,不管是对于项目的维护还是项目的复杂度来说都是有极大的好处的,所以说单机项目特别适合我们一个成立不久的团队初期建设。

  缺点:

    但是凡事没有绝对性,例如:如果是一个中大型项目,比如电商项目,其中存在非常多的模块、用户模块、支付模块、商户模块、对账模块、统计模块等等,这时候我们来思考一个问题,如果我们把这些所有模块放在一起会出现什么问题?

    比如有一点我们修改了一个用户权利的小BUG,我们要想更新项目,则面临不得不重新部署整个项目的问题,而我们的支付、统计数据都具有实时性,重新部署项目就不得不关闭支付模块,这对于一个公司或者商户来说是极其严重的一个问题。

    再比如有一天我们更新一个新功能,更新到生产环境却出了问题,而这个问题导致了整个项目无法运行,理所当然的支付功能也无法正常支付,想必这个时候公司客服的电话会被打爆,不久老板也会请你喝茶,这时候传统的单机项目就会遇包漏出各种各样的的问题。

    

二、Maven架构的项目:

  上面我们了解了一下单机项目的开发存在的优势和缺陷,在随着java不断的更新出现Maven管理项目,我们的开发模式又出现了很大的变化,我们会把上面一个项目拆分成多个子模块,同时多个子模块有继承了一个父模块,父模块则负责项目版本的跟新:

      

  优势:

    1:实现了项目业务层的解耦;

    2:可以提高业务层代码的复用性;

    注:这种架构并不是分布式架构,并且也没有实现代码的解耦,因为各个子模块都依赖于其他模块的代码,需要导入其他子模块的jar包,所以并没有实现代码上的解耦;

    上述的架构某种程度上可以解决我们上面单机项目的问题,我们把电商羡慕的支付模块和其他模块独立出来作为一个项目,人如果其中登录模块出了问题,我们只需要更新重启登录模块的项目,而支付模块我们则完全你不用去管;

  缺点:

    上述架构的项目虽然可以解决单机项目中业务层的解耦,却也存在着一个问题就是它并没有实现我们代码层方面的解耦,我们需要的jar包必须一个不少的导入,才能保证项目的正常运行。

三、分布式架构:

  在上面我们看了单机项目的架构以及Maven架构的项目(注:并没有这种说法,只是自己理解),它们都在存在一些优点的同时也存在一些缺点,而为了满足我们越来越复杂的业务和臃肿的项目,java开发者们提出了另一种架构《分布式》,分布式的出现就是为了结局上述的架构方式无法满足的业务需求:

  我们依旧以电商项目举例,例如我们把电商支付模块,定时任务管理模块等其他复用性高模块抽成了一个独立的项目,这个时候我们的不管有多少个系统用到支付或定时任务,我们只需要调用就可以,但是这样也存在一个问题,上面我们也提及到了。

  例如我们的电商项目不可能仅用到下图中的三个jar,如果这其中涉及到十几或者几十个的jar时,这样会导致我们的主项目非常的臃肿而且难以维护,而这时候我们就要考虑如何在项目中使用这些我们独立出去的模块而且并不引入这些模块的jar,而这就是微服务架构;

  微服务架构则是在我们的项目和独立除却多个模块之间搭建起一个桥梁,这个桥梁可以使SpringCoiud或Dubbo等,这样我们就不用直接和那些独立出去的模块打交道,直接和中间桥梁打交道,他会自动判断调用的模块,这样就避免了引入过多jar,导致项目臃肿以及难维护的缺点;

  

  这时候我们也就知道了什么是微服务,所谓的微服务就是把项目中每个业务拆分,拆分后每一个业务节点都作为一个独立的项目,用户的访问则通过中间件服务的注册与发现来实现,这就是微服务架构;

转载于:https://www.cnblogs.com/zouxiangzhongyan/p/11563040.html

一、什么是分布式架构相关推荐

  1. 【分布式架构】“高并发” -- 详解

    一.什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求. 高并发相关常用的一些指标有 1响应时 ...

  2. 一致 先验分布 后验分布_浅谈Loki分布式架构中的一致性哈希

    云原生小白 看到上面蓝色字了么?关注下吧! Loki在分布式部署的模式下,保存Ingester服务的状态主要有3个渠道,分别是etcd.consul和基于gossip协议的memberlist.不管L ...

  3. 一文了解四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构

    如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存.晋升空间.这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面. 一.单体架构 单体架构 ...

  4. 【从单体架构到分布式架构】(二)请求增多,单点变集群(1):负载均衡

    这是我的第 47 篇原创文章作者 l 会点代码的大叔(CodeDaShu) 上一个章节,我们搭建了一个最简单的单体服务项目,单体架构就是把所有的功能都放在一个工程项目中. 但是当访问量不断增加,我们只 ...

  5. 阿里专家讲中台:技术中台-分布式架构在蚂蚁金服的实践

    来源| 阿里云峰会 文| 技术领导力社区 本文整理自,阿里高级技术专家-许文奇在2019阿里云峰会上的分享<技术中台-分布式架构在蚂蚁金服的实践>,结合技术领导力社区架构专家的点评和解读, ...

  6. 分布式架构下,Session 共享有什么方案?

    来自:会点代码的大叔 分布式架构下的 Session 共享,也称作分布式 Session 一致性:分布式架构下 Session 共享有哪些问题,又有哪些解决方案,让我们一起看一下. 01 Sessio ...

  7. 一步一图,带你了解分布式架构的前世今生!

    作者:清零者 https://www.cnblogs.com/dump/p/8125539.html 目录: 什么是分布式架构? 分布式架构的演进 分布式服务面临的问题 什么是分布式架构? 分布式系统 ...

  8. 大型互联网大型分布式架构演进之路

    来自:网络 编注: 架构决定的系统的稳定性,扩展性和并发性,架构的演进是从简单到复杂,从单一到复合持续改进的过程,也是经验的积累和技术的结晶. 初始阶段架构 初始阶段的小型系统.应用程序.数据库.文件 ...

  9. 原来腾讯面试题也不难,面试官:给我说一下你理解的分布式架构?

    什么是分布式架构 分布式系统(distributed system) 是建立在网络之上的软件系统. 内聚性:是指每一个数据库分布节点高度自治,有本地的数据库管理系统. 透明性:是指每一个数据库分布节点 ...

  10. 清华学霸花了三年时间对java理解: Java分布式架构

    什么是分布式架构 分布式系统(distributed system)是建立在网络之上的软件系统. 内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统. 透明性是指每一个数据库分布节点对用户 ...

最新文章

  1. Python 逻辑运算符
  2. ElementTree中的getchildren and getiterator
  3. 9. Approximate Inference
  4. 第四十期:2019年度十大Web开发趋势
  5. 从集合中选出一些元素组成子集合,使得这些子集合符合某种约束
  6. 表格嵌套_HTML |2| 表格与列表
  7. linux系统给串口权限,让ubuntu串口和USB设备不用root权限访问
  8. 学堂在线计算机网络工程实践答案,计算机网络实验(本科生2017年春)
  9. ghost 通过docker安装
  10. 有线电视维护服务器,东方有线电视 网络服务器 设置
  11. arduino/mixly 智纳捷TTS语音合成模块进阶一
  12. 典型相关分析(Canonical correlation analysis)(四): 中国城市竞争力与基础设施的相关分析
  13. Unity 扫描 二维码
  14. 科研心态那些事-不积跬步无以至千里
  15. 个人使用计算机习惯、注意事项及日常维护
  16. vue给html加背景图,Vue背景图如何全屏显示
  17. 如何将大量图片文件合并成一个*.bin文件
  18. linuxprobe-第一节课
  19. 人民币为什么会贬值?
  20. unity 引用using System.Drawing.Printing

热门文章

  1. eNSP配置基于VRRP的负载均衡出口链路
  2. 编程语言中 按位取反操作怎么计算
  3. 微光量子计算机,量子计算
  4. STM32超低功耗入门之关机模式
  5. html a标签小手,a标签
  6. 和机器人问问题的软件_ABB机器人系统与软件的问答
  7. NoMeiryoUI v3.1.0 开源便捷的Windows系统字体设置工具
  8. 语言学大师 —— 乔姆斯基
  9. javaweb编程技术第三版教材_Java Web编程技术(第3版)-微课版
  10. neo4j教程(CQL实现增查删改)