For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而本文我们就简单了解一下,程序员开发软件常用架构模式。
1、分层模式
定义:将系统在横向维度上切分成几个部分,每部分的职责单一,上层对下层的依赖和调用组成一个完整的系统。
栗子:7层的网络通信协议;计算机硬件、操作系统和应用系统;MVC三层架构等
原因(为什么要分层):分层结构对网站支持高并发和向分布式方向发展至关重要
约束:层次之间禁止跨层次调用,逆向调用。
建议:在网站规模还很小的时候应该采用分层的架构。
2、缓存模式
定义:将数据存放在距离计算近的位置以加快处理速度。
目的:提高系统性能
使用前提:
1.数据访问热点不均衡,频繁访问的数据应该放在缓存
2.数据在某个时间段内有效,短时间内不会过期的数据应该放在缓存
3.一定时间内允许数据不一致,终一致即可
4.一定程度上允许数据不一致,也即是说部分数据丢失也不影响业务
3、集群模式
定义:多台服务器部署相同应用构成一组相互独立的计算机群。
作用:提高并发、提高可用性、提高扩展性
条件:无状态服务
状态化服务:服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。
无状态服务:服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。
有状态服务还是无状态服务,其判断依据:来自相同发起者的两个请求在服务器端是否具备上下文关系。
对于无状态服务:天生适合集群。
对于有状态服务:需要实现同一个用户负载到不同服务器的请求结果一致,这里就涉及到session管理问题。
4、单体应用缺点
代码难以理解,导致代码质量逐渐降低,复杂性逐渐增加,代码难以被修改和重构,简言之:屎山。
"屎山"懂得都懂,代码量大耦合度高动一发乱全身,构建和部署耗时长,难以定位问题,大部分时间花费在解决代码冲突上,导致开发效率极低,
可靠性差,一个bug可能会引起整个应用崩溃。
伸缩性差,单体只能按整体横向扩展,无法分模块垂直扩展,无法分团队独立开发部署;IO密集型模块和CPU密集型模块无法独立升级和扩容。
高度耦合的单体工程使得逻辑边界模糊不清,新业务需求开发任务无法有效分配到人,团队人员职责不清晰,沟通成本增加。
技术栈受限于同一框架和语言,阻碍新技术的融入,也阻碍新鲜血液的流入,贫血的系统终将走向死亡。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。