瞬时响应:网站的高性能架构
网站性能优化技术是在网站性能遇到问题时的解决方案。而网站的性能问题很多是在用户高并发访问时产生的,所以网站性能优化的主要工作是改善高并发用户访问情况下的网站响应速度。本章开篇所举的例子,当老板说“我们要改善网站性能”的时候,他期望的是在A方案的基础上,不管是100个并发访问还是200个并发访问,响应时间都能达到1秒。而架构师能做到的,则是利用分布式的方案改善网站并发特性,由于分布式不可避免地会带来架构复杂、网络通信延迟等问题,所以最终设计出来的可能是B方案:缩短高并发访问响应延迟的同时,却延长了原来低并发访问时的响应延迟。架构师对这种可能性要心中有数,合理调整相关各方对性能优化的心理预期。
网站性能对最终用户而言是-种主观感受,性能优化的最终目的就是改善用户的体验,使他们感觉网站很快。离开这个目的,追求技术上的所谓高性能,是舍本逐末,没有多大意义。而用户体验的快或是慢,可以通过技术手段改善,也可以通过优化交互体验改善。
即使在技术层面,性能优化也需要全面考虑,综合权衡:性能提升-一倍,但服务器数量也需要增加- -倍;或者响应时间缩短,同时数据一致性也下降,这样的优化是否可以接受?这类问题的答案不是技术团队能回答的。归根结底,技术是为业务服务的,技术选型和架构决策依赖业务规划乃至企业战略规划,离开业务发展的支撑和驱动,技术走不远,甚至还会迷路。
万无一失:网站的高可用架构
对公司而言,可用性关系网站的生死存亡。对个人而言,可用性关系到自己的绩效升迁。工程师对架构做了许多优化、对代码做了很多重构,对性能、扩展性、伸缩性做了很多改善,但别人未必能直观地感受到,也许你的直接领导都不知道你做的这些意义何在。但如果你负责的产品出了重大故障,CEO都会知道你的名字。事物总是先求生存,然后求发展。保证网站可用,万无- -失,任重而道远。
永无止境:网站的伸缩性架构
伸缩性架构设计能力是网站架构师必须具备的能力。
伸缩性架构设计是简单的,因为几乎所有稍有规模的网站都必须是可伸缩的,有很多案例可供借鉴,同时又有大量商业的、开源的提供伸缩性能力的软硬件产品可供选用。然而伸缩性设计又是复杂的,没有通用的、完美的解决方案和产品,网站伸缩性往往和可用性、正确性、性能等耦合在一起,改善伸缩性可能会影响一些网站的其他特性,网站架构师必须对网站的商业目标、历史演化、技术路线了然于胸,甚至还需要综合考虑技术团队的知识储备和结构、管理层的战略愿景和规划,才能最终做出对网站伸缩性架构最合适的决策。
一个具有良好伸缩性架构设计的网站,其设计总是走在业务发展的前面,在业务需要处理更多访问和服务之前,就已经做好充足准备,当业务需要时,只需要购买或者租用服务器简单部署实施就可以了,技术团队亦可高枕无忧。反之,设计和技术走在业务的后面,采购来的机器根本就没办法加入集群,勉强加了进去,却发现瓶颈不在这里,系统整体处理能力依然上不去。技术团队每天加班,却总是拖公司发展的后腿。架构师对网站伸缩性的把握,- -线之间,天堂和地狱。
随机应变:网站的可扩展架构
网站通过不断试错,在残酷的市场中寻找自己的竞争优势,持续地推出新功能,发现达不到预期,就立马下线。所以我们看到网站总是不停地推出新功能,发布新产品。打开Google 首页的“更多”链接,Google 产品分门别类一大堆, 这还只是Google重点推广的产品中的- -小部分。这些走马灯般出现的产品背后则是网站工程师辛勤的工作和汗水。
既然我们知道网站不停上新产品是其生存的本能,谁能更快更好地推出更多的新产品,谁就活得更滋润,那么工程师就要做好准备应付这种局面。马克思的劳动价值理论告诉我们,产品的内在价值在于劳动的时间,劳动的时间不在于个体付出的劳动时间,而在于行业一般劳动时间,资本家只会为行业一般劳动时间买单,如果你的效率低于行业一般劳动时间,对不起,请你自愿加班。反之,如果你有一个更具有扩展性的网站架构,可以更快速地开发新产品,也许你也享受不了只上半天班的福利,但是至少在这个全行业加班的互联网领域,你能够按时下班,陪陪家人,看看星星。
固若金汤:网站的安全架构
这个世界没有绝对的安全,正如没有绝对的自由一样。网站的相对安全是通过提高攻击门]槛达到的。让攻击者为了获得有限的利益必须付出更大的代价,致使其得不偿失,望而却步。
同时,攻击与防护技术作为一对矛盾共同体,彼此不断此消彼长,今天的高枕无忧,明天可能就成了致命的漏洞。也许网站经过一番大的重构和优化,在某一段时间不需要再处理高可用或高性能的问题,但是修补漏洞、改善安全却是每天都需要面对的课题,永远不能停歇。
所以,很遗憾,这个世界没有固若金汤的网站安全架构,架构师只能每天都打起百分百的精神,预防可能的漏洞或者攻击。