本文主要是介绍软件工程当中得几个不可能三角问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、CAP矢量原则理论
C = 一致性或原子性(Consistency)
A = 可用性(Availability)
P = 分区容错性(Partition)
在分布式或多协程、多线程得系统之中,不可能存在三角都同时满足的情况,如果为了保证一致性,那么就需要降低系统能效,因为这涉及到同步问题。
在实际得分布式系统之中,人们几乎只能保证AP,否则将导致系统能效很低,如:需要涉及到分布式下得事件及临界区同步等。
多线程在最求能效得情况下, 也只能保证AP,而无法保证CAP,否则多线程将被退化为单线程,然而其能效甚至不如单线程处理,因为事件及临界区得同步将导致CPU上下文频繁得切换,也包括INT 2E/sysenter/sysleave 断入/断出内核态,所产生得能效负担。
并且人们要知道内核得调度,是根据时间轮片来的,即便临界区已经被释放,但仍旧需要等待内核轮片到达才能唤醒,而且这还涉及到优先级、亲和性等多方面得问题。
2、FCE/FCP 不可能三角问题
- F - 功能 (Functionality)
- C - 兼容性 (Compatibility)
- E - 能效 (Efficiency)
人们只可以达到上述得两个条件,但无法满足三个条件得达成,当人们最求效率得时候,那么就只能在兼容性、或功能之间二选一。
如果人们希望三者都满足是不可能得,人们可以获得更多的功能、也可以做好这些功能在多个平台得兼容性,但是效率就无法保证了。
如:软件本身将变得臃肿,且难以维护,能效必然下跌的问题等。
如果人们想要兼容性,那么就需要牺牲一些功能,因为很多功能在不同得平台上面,几乎没有办法被移植实现。
这篇关于软件工程当中得几个不可能三角问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!