(1)单机结构
最常用的就是单机结构,一个系统业务量很小的时候,所有的代码都放在一个项目中,然后这个项目部署在一台服务上了。整个项目的服务都是这台服务器提供的。这就是单机结构。
那么,单机结构的缺点显而易见的。单机的处理能力毕竟有限,当业务增长到一定的程序的时候,单机的硬件资源无法满足你的业务需求。而且如果这台服务器出现意外,那么程序直接死翘翘。
(2)集群结构
对单机结构的缺点进行补充。单机处理到达瓶颈的时候/防止服务器出现意外不能提供服务,那么你就把单机复制几份,这样就构成一个“集群”。集群中的每一台服务器就叫做这个集群的一个“节点”,所有的节点构成一个集群。每个节点都提供相同的服务,那么这样系统的处理能力相当于提升了好几倍。
用户的请求由哪个节点来处理?要实现这个功能,这时候就需要一个在所有节点访问之前增加一个调度者角色,用户的请求都交给调度者,由他根据配置分发策略,决定将请求交给哪个节点处理。这个“调度者”:负载均衡服务器。
集群结构的好处就是系统扩展非常方便,只需要多复制几份。
(3)分布式结构
分布式结构就是降一个完整的系统,按业务功能,拆分成一个个独立的子系统,在分布式结构中,每个系统被称为“服务”。这些子系统能够独立运行在web容器里,他们之间通过RPC方式通信。RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。(参考资料:百度百科 https://baike.baidu.com/item/%E8%BF%9C%E7%A8%8B%E8%BF%87%E7%A8%8B%E8%B0%83%E7%94%A8%E5%8D%8F%E8%AE%AE/6893245?fromtitle=RPC&fromid=609861&fr=aladdin)
例子:约约项目系统拆分为服务:api,admin,driver,order,passenger,location等。
好处:1.系统之间的耦合度降低,可以独立开发、部署、测试,开发效率大大提升;
2.系统之间耦合度降低,系统更易于扩展。我们可以针对性的扩展某些服务,比如api业务处理量大,那么api可以增加节点,而其他维持原有水平即可。
3.可以复用。
参考资料:
知乎:https://www.zhihu.com/question/20004877