浅析基础架构

294次阅读  |  发布于2年以前

为什么要做架构设计

  1. 大家都做,所以我也做。
  2. 所有的系统必须要有架构设计
  3. 公司要求,系统开发必须要有架构设计的流程

如果是以上的原因,就失去了做架构的意义,是为了做架构而做架构,可能会浪费人力物力得不偿失。那么做架构的目的是什么呢?

架构设计的主要目的是为了解决软件系统复杂度带来的问题

系统复杂度的来源

1 . 高性能

为了提高性能又从两个方面可以提升

计算机内部复杂度的关键就是操作系统,操作系统和性能最相关的是进程和线程。人们发明出进程,一个进程对应一个任务,会占用独立的内存。多个进程之间为了相互通信所以设计各种通信方式:管道、消息队列、共享储存等等。

人们为了解决单线程会阻塞用户使用的问题所以发明了多线程,多进程多线程可以使性能更大的提升。

在互联网时代,有时用户访问量会急剧升高。例如2017年春节微信红包收发红包每秒达到 76 万个。为了解决这种问题,单机的性能提升是解决不了问题的,只能通过加大机器的数量来得到提升。

通过集群的方式提高性能,最常见的两种方式是任务分配和任务分解。

任务分配:任务分配是指每台服务器都可以都处理完整的业务任务,由任务分配器分配任务。

任务分解:任务分解是指把复杂的系统拆解成不同的小功能。即不同的业务服务器。

2 . 高可用

系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。--维基百科

硬件会出故障,软件会出bug都会造成中断现象。那么如何提高无中断就是提高高可用的方式。只能通过冗余来提高高可用。一台服务器不行就两台,两台不行就四台。

由此看来,高性能和高可用都是通过多台服务器来提高目的,那么他们之间有什么区别呢?高性能通过增加机器的目的是扩展提高性能,高可用是通过增加机器的目的冗余处理单元。

其中高可用的复杂度的来源有两种:计算高可用和存储高可用

3 . 可扩展

软件的开发在需求上线后也依然会有需求的变更,所以如果在需求变更的时候以很少的开发量或者不变的情况下去实现功能是最好的结果。那么可扩展的复杂度在哪里呢?

那么如何提高系统的可扩展性呢?

4 . 低成本、安全、规模

基于上述原因,互联网系统的架构安全目前并没有太好的设计手段来实现,更多地是依靠运营商或者云服务商强大的带宽和流量清洗的能力,较少自己来设计和实现。

架构设计的原则

  1. 合适原则:一个优秀的架构都是结合企业的人力、成本、条件、业务的条件下做出的最佳的架构方案。资源整合并发挥最大的功效并且可以快速落地。
  2. 简单原则:软件领域的复杂在于结构复杂性和逻辑复杂性。所以在设计软件架构的时候简单的方案优于复杂的方案。
  3. 演化原则:软件架构类似于大自然的产物,要一步一步演化,让生物适应环境,逐步变得强大。

以上就是我对于基础架构的初步理解。

- END -

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8