2018年3月4日星期日

Magento与大型网站技术架构

之前买了一本书叫《大型网站技术架构 核心原理与案例分析》,只有薄薄的200多页,却非常接地气的阐述了大型网站所面临的各种架构问题和解决方案。与一些大部头的书不同的是,这本书内容非常的全面,涵盖了几乎所有大型网站所需要讲的点,然后给出方向性的解决方案,但不提供解决方案的具体技术实现。因为大型网站的每一个细分环节,都可以写一本厚厚的书来阐述,也就是所谓的大部头,比如一本讲Mysql的书可能就7、8百页。所以这本书非常适合作为一个提纲类的手册,当遇到架构问题时来查询解决的方向,然后如果需要具体技术实现,自然有细分领域的书来帮助你。
回到本文主题,有人会问,Magento做能大型网站吗?其实这是一个伪命题,套用本书作者的原话:大型网站不是设计出来的,而是逐步发展演化出来的。所有的大型网站都是从早期高度耦合的单系统发展过来的,比如新浪微博最早的版本是基于Kohana框架的单系统,逐步演化成现在的服务化架构,如果新浪在一开始就从架构上规划一个大型网站,那他们一定是疯了。Magento是一个单系统,而且是一个程序结构上还不错的系统,很适合作为电商网站起步到中期阶段的使用,如果网站的量级真的发展到大型网站的程度,在这个过程中,整个电商系统慢慢演化,一些原来由Magento承担的业务逐步拆分出去成为了一个个的独立服务(比如订单处理,商品管理,监控,日志分析,数据分析等等),Magento成为了一个复杂架构中的一个零件。甚至到最后完全被新的服务所取代,Magento也可以被认为很好的完成了他所承担的阶段性任务。再次套用作者的原话:在这个漫长的演化成大型网站的过程中,不需要放弃什么,不需要推翻什么,不需要剧烈的革命。
实际操作上,怎么基于Magento把网站从小型走到中型的规模(中型到大型必定已经开始脱离单纯的Magento),是个很好的讨论话题。就如书中所言,互联网技术发展到今天,网站架构演化方案已经非常成熟,所以我接下来想要讨论的是这些成熟的演化方案,如何以Magento为基础去一一实现。其中有一些Magento官方在底层架构设计上已经考虑过并且预备好了方案,有些需要我们这些开发者自己去找解决方案。接下来我会花几个章节来探讨具体的实现细节,内容包括但不仅限于读写分离、缓存、CDN、负载均衡、消息队列、搜索引擎等等。
感谢互联网的发展和歪果仁们的分享精神,大部分资料来源于google、Stack Overflow、Github等等,结合我自己以往的工作经验,做一个归纳和整理,这个系列既是一个分享,也是对自己的一次总结。

PS:上面提到的基于Magento把网站做大,除了架构层面的处理,具体功能的开发一样有需要特别注意的地方。因为php太自由,所以如果在Magento基础上做二次开发不遵循规范的话,网站发展到一定程度,整个系统就会变成一个地雷阵,处处是坑。那面临的就不是拆分成服务化,而是需要推翻重构了。所以除了架构系列的文章,未来我还会写一个系列来阐述在Magento上做二次开发应该遵循的规范,文章系列名暂定为“Magento二次开发推荐编码规范”,敬请期待。

没有评论:

发表评论

注意:只有此博客的成员才能发布评论。

Also Read: