您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

我理解中的应用架构

时间:2019-10-21 10:58:35  来源:  作者:

这些年互联网的快速发展,分布式,微服务的概念风靡整个行业。在企业中IT的架构,从过去的单体应用架构发展到现在广为人知的微服务架构。不说别的,现在出去面试都不好意思说自己不知道微服务。微服务是一种架构风格,将我们的业务拆分若干个服务,为我们的开发带来了极大的便利。过去,架构是从单体应用架构-->分布式架构-->微服务发展。

单体应用架构

这种架构在老的JAVA web项目中还存在,就是一套代码撸到底。就是项目中从controller到service再到dao层,不进行任何的拆分,所有的代码都堆积在一个项目中。这样打出来的war巨大无比,启动都要费好多时间。比如下面的例子:

我理解中的应用架构

 

这样就把供应链所有的的功能业务代码放在项目中,可想而知,代码量有多大。不过这种架构方式既有缺点又有优点优点:

  • 简单方便,易于开发。所有人员都在一个项目上做开发,没有接口的远程调用,很方便。
  • 相对容易测试以及部署运维。打包成测试包之后,部署到测试环境即可从头到尾进行测试。而且不受网络影响
  • 缺点:
  • 代码不易管理。没有进行拆分,也就是所有的开发人员都在一个项目上提交代码,就会出现我们非常恶心的代码冲突~
  • 代码耦合度高。可能仅仅修改一小个代码,就会导致整个系统出现问题,不敢下手随意修改代码啊,泪奔~
  • 系统扩展性差。要增加或者上线某个小功能的时候,整个应用都得停下来部署,用户体验太差了~
  • 系统启动慢。毫无疑问,模块太多了也是一种累赘。
  • 因此这种架构慢慢被淘汰,衍生出分布式架构

分布式应用架构

分布式架构从业务的不同进行拆分,将我们的单体应用拆分多个业务服务系统,每个服务系统就是一个单体应用,他们之间通过商定好的api进行调用。例如将上面的例子拆分,将庞大的供应链系统拆分成采供管理系统,资产管理系统,仓储管理系统:

我理解中的应用架构

 

这种拆分,大大降低了代码的耦合度,提高了服务的可用性。从原来一个大项目重新分配任务小组,每个小组负责自己的业务项目,业务服务之间通过api调用,每个服务模块运行在不同的主机上。当然这种分布式架构一下子表现出的优点也表现出缺点。优点:

  • 降低了业务模块之间耦合度。将模块拆分之后,通过接口进行调用,其他业务代码不受影响。
  • 项目细分化,不同的项目组负责不同的任务。
  • 系统扩展性高,灵活。增加或者改造某个功能时,不需要牵一发而动全身影响到别的模块。不会存在因为其他服务不存在而造成我自己的服务不能启动或者不可用的问题。
  • 缺点:
  • 受网络影响。系统之间经过api远程调用,不仅增加了接口开发工作量,而且受网络限制。
  • 数据的一致性问题。
  • 增加了运维工作量。
  • 这种分布式架构按照角色来划分,分为:生产者(服务提供方),消费者(服务调用方)。
  • 应用场景:项目中使用kafka就是一个分布式系统。

微服务应用架构

其实90%的微服务架构就是分布式架构一种延申。微服务的概念最早源于Martin Fowler发表的一篇《Microsevices》。这种微服务按照业务的功能继续拆分成相互独立的微服务,各个微服务之间是松耦合的,也是通过远程协议进行调用。例如我们将采供管理再一次拆分,将采供管理系统拆分成需求管理,采购管理,入库管理:

我理解中的应用架构

 

这种拆分方式将分布式应用架构更加细分化。各个微服务之间通过各种远程协议进行同步/异步调用,各个微服务之间也是独立部署。当然这种服务架构也同样。除了具备分布式架构的缺点外,还有:

  • 通信,http请求速度慢,通常一个操作可能会涉及到多个微服务的相互调用,如果为了完成一个操作而多次从服务端调用不同的微服务,http请求的耗时可能会成为瓶颈。
  • 增加复杂性以及加大 了技术支持。在微服务中不仅仅服务之间的调用这么简单,还需要许多技术支撑,比如服务注册中心,熔断器,链路跟中,分布式配置中心,分布式事务等等技术上的支持,加大了开发人员的额外任务量。
  • 服务众多,其测试,部署,监控变得更加复杂。
  • 下面这张是从网上拷贝下来的微服务架构图,可以看出来需要好多技术来支持构成完整的微服务架构:
我理解中的应用架构

 

  • 当然这种带来的弊端远远小于带来的好处。

微服务技术方案的选型

市面上支持微服务的技术栈是多种多样的,但是按照现在比较流行的,无非就是springcloud以及dubbo方案。springcloud是spring社区下的项目,提供了完整的落地方案,包括服务发现,网关,配置中心,链路跟踪等。而dubbo是阿里巴巴基于java分布式服务治理框架,但是它没有提供完整的解决方案,而是专注于RPC领域。两者技术选型对比:

我理解中的应用架构

 

当然了,我们在实际中不能光是微服务而微服务,要根据具体场景来选型。选择适合自己业务的架构,才是最好的架构。

以上是我本人对应用架构的理解,如果有不对之处,证明本人学业不精,还望各位理解谅解。

本人水平有限,难免有错误或遗漏之处,望大家指正和谅解,提出宝贵意见,愿与之交流。



Tags:应用架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
编辑导读:对于生鲜电商来说,信息化建设是很重要的一环,所有的业务开展都离不开信息化的支持。本文作者讲从应用架构角度出发,对生鲜电商信息化建设展开分析,希望对你有帮助。 一...【详细内容】
2020-07-26  Tags: 应用架构  点击:(25)  评论:(0)  加入收藏
MySQL是最流行的关系型数据库软件之一。由于其体积小、速度快、开源免费、简单易用、维护成本低等,在集群架构中易扩展、高可用,因此深受开发者和企业的喜爱。今天我们一起来...【详细内容】
2020-07-15  Tags: 应用架构  点击:(125)  评论:(0)  加入收藏
一、 业务架构和IT架构的关系企业架构这种东西,更多来自于我们前面说的流程管理咨询的第一类,就是这种系统型方法论,这种方法论更适合于大型的企业。有一些大型的企业,管理上已...【详细内容】
2020-03-26  Tags: 应用架构  点击:(241)  评论:(0)  加入收藏
这些年互联网的快速发展,分布式,微服务的概念风靡整个行业。在企业中IT的架构,从过去的单体应用架构发展到现在广为人知的微服务架构。不说别的,现在出去面试都不好意思说自己不...【详细内容】
2019-10-21  Tags: 应用架构  点击:(66)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条