从零开始学架构(一)

基本概念

架构设计&程序设计

架构设计的关键思维的判断和取舍,程序设计的关键思维是逻辑和实现。

系统&子系统

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个体不能单独完成的工作。系统能力不是个体能力之和。

子系统和系统定义一样,只不过视角有差异,多半是更大系统的一部分。

以微信为例:

模块&组件

系统从逻辑的角度拆分后得到的单元叫模块,从物理的角度拆分得到的单元叫组件。划分模块的目的是职责分离,划分组件的目的是单元服用。

举例:

一个学生信息管理系统,从逻辑角度拆分可分为“登陆注册模块”、“成绩模块”、“学籍模块”;从物理的角度拆分有Nginx、Web服务器、MySQL。

框架&架构

框架像spring强调的是规范,架构强调的是结构。

架构设计的目的

整个软件技术的发展史,其实就是一部与“复杂度”斗争的历史,如:机器语言->汇编->高级语言,再如:面向函数(C)->面向对象(C++、java)。架构设计也不例外,架构设计的主要目的是为了解决复杂度带来的问题。

 复杂度来源-高性能

高性能带来的复杂度主要体现在两个方面:单机复杂度和集群复杂度。

单机复杂度:

如果我们要完成一个高性能的软件系统,需要考虑一下技术点:多进程、多线程、进程间通信、多线程并发等。

集群复杂度:

1.常用的任务分配器有硬件网络设备(如F5、交换机等),软件网络设备(如LVS),负载均衡软件(如Nginx、HAProxy)或者是嵌入在程序中的算法。

2.对一个复杂的业务系统可以进行模块拆分,分布式开发。

猜你喜欢

转载自www.cnblogs.com/sjp007/p/10351772.html