架构是什么

很多人都试图给"架构"下定义,而这些定义本身却很难统一。能够统一的内容有2点:一点是“最高层次的系统分解”,另一点是“系统中不易改变的决定”。但是,表述一个系统架构的方法不只一种。

架构是一种主观上的东西,是专家级开发人员对系统设计的一些可共享的理解。一般地,这种可共享的理解表现为系统中主要的组成部分以及这些组成部分之间的关系。它还包括一些决定,开发者们希望这些决定能及早做出,因为在开发者看来,它们是难以改变的。

架构实际上就是如何将企业应用组织成不同的层次,以及这些层次之间如何协同工作。大多数重要的企业应用都是按照某种形式的层次分层设计的。

主要解决高并发,海量数据,复杂业务逻辑

在我们讨论如何设计企业应用以及使用哪些模式之前,明确这样一个观点是非常重要的,即企业应用是多种多样的,不同的问题将导致不同的处理方法。如果有人说,“总是这样做的时候”,就应当敲响警钟了。我认为,设计中最具挑战性的地方就是了解有哪些设计方法以及各种不同设计方法之间的优劣比较。

***响应时间***是系统完成一次外部请求处理所需的时间。
***吞吐率***是给定时间内能够处理多大的请求量。对于企业应用来说,吞吐率通常用每秒事务数(TPS)来度量。
当通过某种技术优化后,使得系统的吞吐率提高了,但是响应时间下降了,这时就不好说系统的性能提升了,最好用更准确的术语表示。
***负载***是关于当前系统负荷的表述,也许可以用当前有多少用户与系统相连来表示。负载有时也作为其他指标(如响应时间)的背景。因此,我们可以说,在10个用户的情况下,请求响应时间是0.5秒,在20个用户的情况下,请求响应时间是2秒。
负载敏感度***是指响应时间随负载变化的程度。假设:系统A在10~20个用户的情况下,请求响应时间都是0.5秒,系统B在10个用户的情况下,请求响应时间是0.2秒,在20个用户的情况下,请求时间上升到2秒。此时,系统A的负载敏感度比系统B低;我们还可以使用术语***衰减(degradation),称系统B衰减的比系统A快。
***效率***是性能除以资源。如果一个双CPU系统的性能是30TPS,另一个系统有4个同样的CPU,性能是40TPS,则前者效率高于后者。
系统的***容量***是指最大有效负载或吞吐率的指标。它可以是一个绝对最大值或性能衰减至低于一个可接受的阈值之前的临界点。
***可伸缩性***度量的是向系统中增加资源(通常是硬件)对系统性能的影响。一个可伸缩的系统允许在增加了硬件后,能够有性能上的合理提高。例如,为了使吞吐率提高一倍,要增加多少服务器等。垂直可伸缩性称为垂直扩展,通常是提高单个服务器的性能,例如增加内容。水平伸缩称为水平扩展,通常只增加服务器数目。
当构建企业应用系统时,关注硬件的可伸缩性往往比关注容量和效率更重要。如果需要,可伸缩性可以给与你获得更好的性能,可伸缩性也可以更容易实现。有时,设计人员费了九牛二虎之力才提高了少许容量,其开销不如多买一些硬件。同样,增加更多的服务器也比增加更多的程序员来的便宜———只要你的系统有足够的可伸缩性。

模式

每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot是一个用于快速构建企业级应用程序的框架。它基于Spring框架,并使用自动配置功能来简化配置。Spring Boot使用嵌入式的Tomcat或Jetty服务器来运行应用程序,并使用Spring框架的MVC架构进行Web开发。 Spring Boot的架构包括以下几个部分: - 应用程序入口:应用程序的入口是一个主类,用于启动应用程序并加载配置。 - 自动配置:Spring Boot使用自动配置功能来简化配置,使应用程序更容易启动。 - 依赖注入:Spring Boot使用Spring框架的依赖注入功能来管理应用程序的对象。 - Web开发:Spring Boot使用Spring框架的MVC架构进行Web开发。 - 嵌入式服务器:Spring Boot使用嵌入式的Tomcat或Jetty服务器来运行应用程序。 ### 回答2: Spring Boot是一个Java开发框架,它使用了基于Java的简化配置和约定来帮助开发人员快速构建独立的、可部署的Spring应用程序。 Spring Boot的架构基于以下几个核心组件: 1. SpringApplication:这是Spring Boot的入口点,负责启动应用程序。它自动配置了需要的Spring环境,并扫描应用程序中的组件。 2. 自动配置(Auto-configuration):Spring Boot根据环境和类路径中的依赖自动配置各种Beans。开发人员只需添加相应的依赖,Spring Boot将自动配置需要的组件。 3. Starter POMs:这是一种Maven依赖关系管理技术,帮助开发人员快速设置和管理项目依赖关系。开发人员只需添加一个starter POM作为依赖项,就可以获得所需的依赖。 4. Actuator:Spring Boot提供了一个Actuator模块,可以轻松监控和管理运行中的Spring Boot应用程序。通过HTTP端点,开发人员可以查看应用程序指标、健康状况和其他管理操作。 5. 自定义配置(Custom Configuration):Spring Boot支持使用属性文件、YAML文件或环境变量等外部配置来自定义应用程序的行为。开发人员可以通过简单的配置来修改默认行为。 综上所述,Spring Boot的架构基于Spring框架,通过自动配置和依赖管理来简化开发过程。它提供了一种快速构建独立、可部署的Spring应用程序的方式,同时也提供了监控和管理功能,使得应用程序的开发和运维更加便捷。 ### 回答3: Spring Boot是一种基于Spring Framework的开发框架,旨在简化Java应用程序的配置和开发过程。它采用了简化的架构,并提供了许多开箱即用的功能,使得开发者可以更快地构建和部署应用程序。 Spring Boot的架构可以分为三个主要部分:核心模块、自动配置和起步依赖。 1. 核心模块:Spring Boot核心模块提供了Spring Framework的基本功能,包括依赖注入、AOP、事务管理、Web开发等。它还提供了一组基本的注解和类,用于配置Spring Boot应用程序的行为。 2. 自动配置:Spring Boot的自动配置功能可以根据项目的依赖和配置信息,自动配置和初始化各种功能。它通过扫描应用程序的classpath,检测和配置所需的bean和组件,从而减少了开发者的配置工作。例如,如果应用程序使用了Spring MVC,并且有Web容器的依赖,Spring Boot将自动配置并初始化相关的Web组件。 3. 起步依赖:Spring Boot的起步依赖是一组预先配置好的依赖项,用于简化应用程序的依赖管理。通过引入适当的起步依赖,开发者可以轻松地集成常用的第三方库和框架,如数据库、消息队列、安全性等。起步依赖还会自动处理版本冲突和依赖解析,使得开发者可以更专注于业务逻辑的开发。 综上所述,Spring Boot的架构通过简化的核心模块、自动配置和起步依赖,为开发者提供了一种快速、高效地构建和部署Java应用程序的方式。它大大提高了开发效率,减少了配置错误,并促进了最佳实践的遵循。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值