集群:
特点:部署在不同服务器上的一个应用的多个实例,每个节点完成相同的业务;
原理:通过提升单位时间内的执行任务数来提升效率;
适用场景:是项目前期运维能力有限,系统需要快速扩容;
目的:控制系统的复杂度和运维难度,同时扩容系统能力;
缺点:代码冗余;更新成本高,功能耦合在一套代码中,修改一个小功能,所以节点代码都需要同步更新;不能充分利用服务器资源,对服务器资源会造成一定浪费。
分布式:
特点:一个应用的多个子系统,分布在不同的服务器上,每个节点完成不同的任务;分布式中的每个节点,都可以做成集群;
原理:通过缩短单个任务的执行时间来提升效率;
适用场景:适用业务功能更新频率高的系统,不同业务对服务器硬件资源要求不同
目的:能合理利用服务器资源,提升系统效率,有效降低不同业务间的耦合性。
缺点:会增加系统复杂度和运维的难度。
微服务:
特点:部署在同一服务器或不同服务器上的应用子系统;服务的拆分,通常需要系统运行到一定阶段,才能看清哪些功能适合抽离成独立的子系统,所以微服务的实践,通常是在项目中后期实施,盲目地拆分,只会增加系统复杂度,提高运维成本。
适用场景:系统中个别功能模块的更新频率不一致;
原理:通过拆分系统中的业务模块形成应用子系统,降低应用子系统间的耦合性;
目的:方便根据子系统的热度不同单独扩容和更新维护;根据业务性能要求,有针对性的选择服务器硬件资源配置;
缺点:会增加系统复杂度和运维的难度。
较理想的设计是分布式与集群结合,先从热点业务开始拆分,以分布式提供服务;实现分布式后,为了提高系统可用性,需要对每个分布式节点做适当的集群扩展,热度高的配置较高的集群节点。
另外,如果要控制系统复杂度和运维难度,系统功能更新频率不高时,可优先考虑集群方案,一套系统部署多个副本,结合负载均衡分流压力,扩展时,只要加一个副本即可,操作简单。