分布式架构演进
架构设计的三大目标
高性能、高可用、可扩展。
架构设计要切忌过度设计,最适合自己业务的才是最好的,并不是说大家都用分布式架构,你也要用;单体架构太low就一定不用。一个架构带来好处的时候也一定会带来弊端:比如将单体服务微服务化后,可以帮助实现服务的敏捷开发和部署。但是,由于将原本一体化架构的应用,拆分成了多个通过网络通信的分布式服务,为了在分布式环境下,协调多个服务正常运行,就必然引入一定的复杂度;而原本单体服务很容易做到的事务、单点登录到了分布式架构中也会难度加倍。
单体服务
分层架构
软件架构分层在软件工程中是一种常见的设计方式,它是将整体系统拆分成 N 个层次,每个层次有独立的职责,多个层次协同提供完整的功能。
三层架构
一种常见的分层方式是将整体架构分为表现层、逻辑层和数据访问层:
- 表现层,顾名思义嘛,就是展示数据结果和接受用户指令的,是最靠近用户的一层;
- 逻辑层里面有复杂业务的具体实现;
- 数据访问层则是主要处理和存储之间的交互。
这是在架构上最简单的一种分层方式。其实,我们在不经意间已经按照三层架构来做系统分层设计了,比如在构建项目的时候,我们通常会建立三个目录:Web、Service 和 Dao,它们分别对应了表现层、逻辑层还有数据访问层。
MVC
还有一种软件分层架构是MVC(Model-View-Controller)架构。它将整体的系统分成了 Model(模型),View(视图)和 Controller(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦,是一种标准的软件分层架构。
分层架构的优势
-
分层的设计可以简化系统设计,让不同的人专注做某一层次的事情。
-
**再有,分层之后可以做到很高的复用。**比如,我们在设计系统 A 的时候,发现某一层具有一定的通用性,那么我们可以把它抽取独立出来,在设计系统 B 的时候使用起来,这样可以减少研发周