架构学习(二)
1、架构设计复杂度
主要有两方面,业务复杂度和质量复杂度。
业务复杂度主要指业务固有的复杂度,主要体现为难以理解、难以扩展,例如业务数量多、业务流程长、业务之间关系复杂;
质量复杂度主要指高性能、高可用、成本、安全等质量属性的要求。
2、可扩展复杂度
要设计可扩展的系统,主要面临两个问题,可扩展:系统适应变化的能力,包含可理解和可复用两个部分;
可伸缩:系统通过添加更多资源来提升性能的能力。
解决可扩展主要通过拆分和封装实现,拆分要注意平衡内部复杂度和外部复杂度,内部复杂度和外部复杂度是天平的两端,一方降低,另一方必然升高;封装要预测变化并封装变化。
3、高性能复杂度
主要分为单机高性能和集群高性能,并且单机高性能和集群高性能还可以再分为计算高性能和存储高性能。
单机高性能涉及到进程,网络,缓存,存储等;集群高性能主要就是任务分配和任务分解。
4、任务分配和任务分解
任务分配:将任务分配给多个服务器执行,每个服务器可执行的任务是一样的,需要一个任务分配器。
任务分解:将服务器拆分为不同角色,不同服务器处理不同的业务,需要一个任务分解器。
既然任务分配可以通过增加服务器来提升性能,为何还需要任务分解这种模式:当系统本身越来越复杂的时候,单个服务器的处理性能会逐步下降,会抵消通过加机器的方式带来的性能提升。
评论