从零开始学架构
Posted sjp007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始学架构相关的知识,希望对你有一定的参考价值。
基本概念
架构设计&程序设计
架构设计的关键思维的判断和取舍,程序设计的关键思维是逻辑和实现。
系统&子系统
系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个体不能单独完成的工作。系统能力不是个体能力之和。
子系统和系统定义一样,只不过视角有差异,多半是更大系统的一部分。
以微信为例:
模块&组件
系统从逻辑的角度拆分后得到的单元叫模块,从物理的角度拆分得到的单元叫组件。划分模块的目的是职责分离,划分组件的目的是单元服用。
举例:
一个学生信息管理系统,从逻辑角度拆分可分为“登陆注册模块”、“成绩模块”、“学籍模块”;从物理的角度拆分有nginx、Web服务器、mysql。
框架&架构
框架像spring强调的是规范,架构强调的是结构。
架构设计的目的
整个软件技术的发展史,其实就是一部与“复杂度”斗争的历史,如:机器语言->汇编->高级语言,再如:面向函数(C)->面向对象(C++、java)。架构设计也不例外,架构设计的主要目的是为了解决复杂度带来的问题。
复杂度来源-高性能
高性能带来的复杂度主要体现在两个方面:单机复杂度和集群复杂度。
单机复杂度:
如果我们要完成一个高性能的软件系统,需要考虑一下技术点:多进程、多线程、进程间通信、多线程并发等。
集群复杂度:
1.常用的任务分配器有硬件网络设备(如F5、交换机等),软件网络设备(如LVS),负载均衡软件(如Nginx、HAProxy)或者是嵌入在程序中的算法。
2.对一个复杂的业务系统可以进行模块拆分,分布式开发。
以上是关于从零开始学架构的主要内容,如果未能解决你的问题,请参考以下文章