架构初探 | 青训营笔记

109 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

一个好的架构对于一个应用场景应该是如虎添翼的。没有最好的架构,只有最合适的架构,每一种架构都有适合它的应用场景,这也需要我们对架构有着一定的了解。

1.如何做架构设计

  • 需求先行: 弄清楚解决什么问题 、
  • 业界调研 :业界都有哪些解决方案可供参考
  • 技术选型: 内部/社区都有哪些基础组件
  • 异常情况: 考虑清楚xxx不行了怎么办

2.什么是架构

简单的一句话定义,软件整体结构与组件的抽象描述,它决定了实现一个软件的结构和组件。

架构是经过系统性地思考, 权衡利弊之后在现有资源约束下的最合理决策, 最终明确的系统骨架。包括子系统, 模块, 组件. 以及他们之间协作关系, 约束规范, 指导原则。并由它来指导团队中的每个人思想层面上的一致。

3.架构的种类

3.1单体架构

单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。单体架构的特点是打包成一个独立的单元(导成一个唯一的jar包或者是war包),会一个进程的方式来运行。 单体架构的优点

  • 项目易于管理、
  • 部署简单

缺点:

  • 测试成本高
  • 可伸缩性差
  • 迭代困难
  • 跨语言程度差
  • 团队协作难

3.2MVC架构 MVC是模型(Model)、视图(View)、控制器(Controller)3个单词的缩写。 下面我们从这3个方面来讲解MVC中的三个要素。   Model是指数据模型,是对客观事物的抽象。 如一篇博客文章,我们可能会以一个Post类来表示,那么,这个Post类就是数据对象。 同时,博客文章还有一些业务逻辑,如发布、回收、评论等,这一般表现为类的方法,这也是model的内容和范畴。 对于Model,主要是数据、业务逻辑和业务规则。相对而言,这是MVC中比较稳定的部分,一般成品后不会改变。 开发初期的最重要任务,主要也是实现Model的部分。这一部分写得好,后面就可以改得少,开发起来就快。   View是指视图,也就是呈现给用户的一个界面,是model的具体表现形式,也是收集用户输入的地方。 如你在某个博客上看到的某一篇文章,就是某个Post类的表现形式。 View的目的在于提供与用户交互的界面。换句话说,对于用户而言,只有View是可见的、可操作的。 事实上也是如此,你不会让用户看到Model,更不会让他直接操作Model。 你只会让用户看到你想让他看的内容。 这就是View要做的事,他往往是MVC中变化频繁的部分,也是客户经常要求改来改去的地方。 今天你可能会以一种形式来展示你的博文,明天可能就变成别的表现形式了。   Contorller指的是控制器,主要负责与model和view打交道。 换句话说,model和view之间一般不直接打交道,他们老死不相往来。view中不会对model作任何操作, model不会输出任何用于表现的东西,如HTML代码等。这俩甩手不干了,那总得有人来干吧,只能Controller上了。 Contorller用于决定使用哪些Model,对Model执行什么操作,为视图准备哪些数据,是MVC中沟通的桥梁。 3.3面向服务架构(SOA) 面向服务的架构(SOA)是一个组件模型,它将应用程序拆分成不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

系统是由多个服务构成

  • 每个服务可以单独独立部署
  • 每个服务之间是松耦合的。服务内部是高内聚的,外部是低耦合的。高内聚就是每个服务只关注完成一个功能。

3.4微服务架构

SOA和微服务的区别:

这个简单说的话区别并不大,根据时间线的来区分,SOA出现时间是比微服务要早的,微服务也可以是说更加细腻化的SOA,如果说SOA是粗粒度的划分,那么微服务的划分的粒度更小,更加精确,SOA可以说是有多个微服务组成。

系统是由多个服务构成

  • 每个服务可以单独独立部署
  • 每个服务之间是松耦合的。服务内部是高内聚的,外部是低耦合的。高内聚就是每个服务只关注完成一个功能。

最后,我们需要知道的是,没有最好的架构,只有最合适的架构,每一种架构都有适合它的应用场景。如何根据应该场景去采用合适的架构,并且搭建起来,这才是一个架构师应该考虑的事情。