设计良好的代码允许更多的功能在必要时可以被插入到适当的位置中。这样做的目的的是为了应对未来可能需要进行的修改,而造成代码被过度工程化地开发。
可扩展性可以通过软件框架来实现:动态加载的插件、顶端有抽象接口的认真设计的类层次结构、有用的回调函数构造以及功能很有逻辑并且可塑性很强的代码结构。
可扩展性是软件设计的原则之一,它以添加新功能或修改完善现有功能来考虑软件的未来成长。可扩展性是软件拓展系统的能力。
简单地说,可扩展性就是关于如何处理更大规模的业务。比如,Web应用程序就是允许更多的人使用你的服务。如果你不能弄清楚如何提高性能的同时向外扩展,没关系。只要你能处理更大规模的用户,即使是存在多个单点故障也没有问题。组合的可扩展性要求要满足用户不断发展的要求,还要满足因技术发展需要而实现的扩展和升级的需求。
相信大多数程序员都有过对程序进行拓展的一些 *** 作了,但是对于新手工程师来说这还是比较难的一个技术。今天,云南java培训http://www.kmbdqn.cn/就通过案例分析来了解和学习一下,PHP编程拓展的方法都有哪些。
1.使用PHP的APC特性。APC——AlternativePHPCache,虽然官方称为“可选PHP缓存”,但是称为“另一个PHP缓存也不为过”,因为它可以切实的提升网站的性能。
2.把所有不是.php的请求都分配给CDN(内容分发网络),不要使用你的服务器处理静态文件。他们使用S3来存储所有,并使用CloudFront作为他们的CDN。近CloudFront出现的一些问题迫使他们不得不直接使用S3服务。
3.切勿将PHP代码里的链接指向其它的服务器。比如数据库以及memcache服务器,除非是强制性的或者是没有其它方法实现你的目的。在执行流中让链接指向其它服务器是非常没有效率的:可能会使服务器受到限制,从而降低处理的速度。使用APC键/值存储来储存数据,并使用Barnish来缓存整个页面。
4.使用Varnish。一般情况下,站点上的所有网页都不会改变或者是不会做大型的改动。Varnish就对于网络服务器缓存有着Memcache/ModRewrite的作用。同样在压力测试中,使用前后的性能差异很大。
5.使用更大的服务器实例,比如c1.xlarge有8个核心可以应对负载,而m1.medium只有一个核心可以处理请求。
可以使用GoogleAnalytics来分析每个用户在每个页面上花费的时间。收集这些信息,使用Siege来运行压力测试,从而不断的熟悉自己业务的负载类型,以便更好的提升程序的扩展性。
个人认为将当前情况下,行为分配给农场主既有利于可扩展又有利于维护性。从语义上分析:
挤奶是行为,本例中只有农场主具有该行为,奶牛语义上不应该具备该行为,奶牛只能返回相关属性,让农场主判定是否能够挤奶,挤奶量等等。
无论奶牛如何扩展、甚至农场主扩展,都可以依赖抽象(当然不考虑双分发问题),具备较高的扩展性。
同时维护点少,如果分配给奶牛,那么如果奶牛的挤奶行为出现差错,则可能需要从顶层至底层修改奶牛的行为。而分配给农场主,则出错仅需在挤奶这个行为范围内进行修改。
题外话:当然复杂情况下,维护性不好判断,也就是说,前提是如果系统扩展至一定层次,那么农场主挤奶行为可能会十分复杂,那么它的维护性远远低于分配给奶牛。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)