其实说到架构的话,我个人觉得没有什么可以说的,无论是以前常说的SOA,还是现在流行的微服务,其实无非就是CAP原理的一些运用而已(可伸缩、可扩展、容错),无非就是牺牲可用性获取一致性,或者一致性换取可用性,然后在这个过程中需要考虑容错的问题的而已,具体的可以百度下Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)。我们经常用到的消失队列,异步、非阻塞。我觉得这个是需要具体分析具体处理的,一个系统的架构一开始设计的很完美是不存在的,没有成长的系统是不合格的。很多的时候我们都是一步一步的优化系统,因为更多的是业务驱动技术的。
然后就是垂直分割跟水平分割的问题,一个是垂直的链,一个是水平的扩展。透过上图就可以很直观的看出。很常见的就是如果针对数据库,垂直的策略有缓存的使用,读写分离等,或者集群。水平分割的,分库分表,多个应用实例,负载均衡等。
所以说,架构这个东西,我最想说的就是一步一步的,没有完美的架构,只有最适合目前情况的。比如普通的MVC就足以胜任的何必又去搬弄别人的高大上的框架,这些往往得不偿失的。
想详细了解架构的话,可以到这https://github.com/donnemartin/system-design-primer,觉得这里讲的非常的好。