通常所讲的系统架构,一般是针对具有一定规模的分布式系统来讲的,如果系统只布署在一台服务器上,讲系统架构,就有点小题大作了。作为一名程序员,工作了一定的年限,有了一定的成长之后,要往更高的方向发展,就需要去考虑一些系统架构方面的问题,不然,到了34岁被退休,不委屈你!那么,要讲一个新东西,通常可以从问题开始讲起,我们先来看两个问题:
1. 一个公司,刚刚成立,自然做什么事都要考虑成本,然后数据库使用的是免费开源的MySQL,服务器也就那么几台。随着公司的不断发展和壮大,公司的服务器扩充到了1000台,公司也有钱了,于是就想着使用Oracle数据库。怎么切换,一台一台服务器连上去改配置文件么?如果切换的过程中,出了问题,又一台一台地改回去?
2. 一个电子商城系统,订单服务是分布式的,有10台服务器。某一天,通过查看线上数据库,发现有一个订单异常,这个时候,程序员需要排查这个问题,通常第一步是去查看服务的日志。那么问题来了,有10台服务器,怎么知道这个订单是哪台服务器处理的?一台一台服务器连上去查么?如果有100台服务器呢?
这两个问题,只是架构设计问题中的冰山一角。一个系统架构的设计,就是为了解决一系列的问题的,甚至可以这么理解,一个系统架构,就是一个解决方案,用于解决一些特定的