
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
高性能、高可用、易伸缩、可扩展、安全等都是软件开发程序员在开发软件的时候需要满足的一些开发需求,而本文我们就通过案例分析来了解一下,实现这些开发需求都有哪些架构模式。
1、分层
分层是企业应用系统中常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。
通过分层,可以更好地将一个庞大的软件系统切分成不同的部分,便于分工合作开发和维护。各层之间具有一定的独立性,只要维持调用接口不变,各层可以根据具体问题独立演化发展而不需要其他层必须做出相应调整。
但是分层架构也有一些挑战,就是必须合理规划层次边界和接口,在开发过程中,严格遵循分层架构的约束,禁止跨层调用及逆向调用。在实践中,大的分层结构内部还可以继续分层。
分层架构是逻辑上的,三层结构可以部署在同一个物理机器上。但是随着网站业务的发展,必然需要对已经分层的模块分离部署,使网站拥有更多的计算资源以应对越来越多的用户访问。
2、分割
分层是将软件在横向方面进行切分,分割则是在纵向方面对软件进行切分。
网站越大,功能越复杂,服务和数据处理的种类也越多。将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
大型网站分割的粒度可能会很小。比如在应用层,将不同业务进行分割,例如将购物、论坛、搜索、广告分割成不同的应用,由独立的团队负责,部署在不同的服务器上。
3、分布式
对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着可以使用更多的资源完成同样的功能,能够处理的并发访问和数据量也更大。
4、集群
使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块,还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
因为服务器集群有更多服务器提供相同服务,因此可以提供更好的并发性,当有更多用户访问的时候,只需要向集群中加入新的机器即可。同时当某台服务器发生故障时,负载均衡设备或者系统的失效转移机制会将请求转发到集群中其他服务器上,提高系统的可用性。
5、缓存
缓存就是将数据存放在距离计算近的位置以加快处理速度。缓存是改善软件性能的一手段,在复杂的软件设计中,缓存几乎无处不在。比如常见的反向代理、Redis(未开启持久化)、CDN等。
使用缓存有两个前提条件,一是数据访问热点不均衡,某些数据会被更频繁的访问,这些数据应该放在缓存中;二是数据在某个时间段内有效,不会很快过期,否则缓存的数据就会因已经失效而产生脏读,影响结果的正确性。
缓存除了可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力,网站数据库几乎都是按照有缓存的前提进行负载能力设计的。
6、异步
应用系统的一个重要目标是降低耦合性。系统解耦的手段除了前面提到的分层、分割、分布式等,还有一个重要手段是异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。