首页 > 教程 > 关键词 > 设计最新资讯 > 正文

平台网站架构设计之我所见

2009-10-19 13:36 · 稿源:月光博客

架构设计师的角度来看,架构就是一套构建系统的准则。通过这套准则,我们可以把一个复杂的系统划分为一套更简单的子系统的集合,这些子系统之间应该保持相互独立,并与整个系统保持一致。而且每一个子系统还可以继续细分下去,从而构成一个复杂的企业级架构。

一 选择技术方案和物理架构

如何选择技术方案和物理架构,对很多刚接触平台网站研发的人来说这可能是个头疼的问题。这些问题的源头很简单就是能否提高开发效率,使平台具有高性能高负载性。就我遇到的常见的有这么几个问题:

a) 开发语言和数据库

一说到开发语言和数据库,很多人便开始做语言的比较,最常见的争论有:“asp.net和java哪个好”,“解释性语言和编译性语言哪个好”等。我个人觉的最关键是你和你的团队最擅长的开发语言和数据库是哪个,古语有云:“工欲善其事,必先利其器!”,趁手的开发语言和数据库有助于事半功倍。试想如果你选择了一个并不很熟悉的语言,也许这个语言和数据库在基础性能上的确比你掌握的语言好,但是在研发过程中学习曲线肯定长。而且遇到问题的时候因为不熟悉的原因,浪费更多的时间去寻找解决方法,而且找到的方法不一定是最好的,说不定还不如你自己用熟悉的语言解决来的快。

也许有朋友会说:“这几种开发语言和数据库我都熟悉”,那么就要看你对这几种开发语言和数据库的熟悉程度了,对各种开发语言和数据库的特性了解的越深入,越有助于提高开发效率。而且目前主流的开发语言和数据库都提供性能调优,只有深入了解了开发语言和数据库的特性和原理,那么性能调优就很容易。

个人觉的重要的就这两点,开发效率和性能。

b) 成熟框架还是自己实现

目前主流的开发语言的使用者中有很多前辈都提供了他们自己总结实现的框架,比如JAVA中的“S-S-H”组合,PYTHON的DJANGOO等。我个人的一些经验是,尽量使用开源的成熟框架,因为平台研发初期使用成熟的开源框架,能提高开发效率,并且在质量上有保证。我曾经接手过一个平台的改版,框架是前面开发人员自己写的,里面的一些设计思想不是很成熟,导致平台在负载增高后性能很差,整改起来很麻烦,只能一点一点的分离出来,耗费时间和经历。

有的朋友可能会问什么才是成熟的框架,个人总结的几点:

1 能提供使用指南,比如 COOKBOOK, USE GUIDE等。有这些提供,那么入门使用变的容易,也方便维护,而且有助于深入了解其特性和原理。

2 有官方支持,比如官方讨论社区,邮件列表等,并且有BUG收集处理机制。有句话叫大树底下好乘凉,有了官方支持,当使用过程中遇到问题的时候,直接就可以通过查找前人的使用心得和问题来解决问题,遇到BUG的时候,提交上去,也能找到解决之法。

3 官方在不断的更新发布稳定版本。这一点很重要,官方如果及时帮你解决目前已知的或者未知的BUG,那么对使用者来讲,就没什么后顾之忧了,如果官方停止更新了,那么我建议还是早点换下家吧,因为如果这个框架好,那么肯定会越来越好,官方也会不断的更新它。还有就是稳定永远是第一位,可以在不影响生产环境的情况下进行无缝升级更新。

4 身边使用者很多,经常能看到相关的讨论或者总结。目前很多成熟框架都是国外开发者发布的,如果使用者E文不好也是个讨厌的事情,那么如果身边有很多同样的使用者和很多讨论,那么对于使用者来说是种福音,共同探讨和学习。

那么除此之外最好是开源的框架,平台初期访问量不大,因此对性能的要求不高,成熟的框架的使用都不会出现什么问题。当访问量急剧增高之后,那么性能要求也变高,一些框架中隐藏的问题也因此出现。这时候如果是开源的框架,使用者可以深入了解它的源代码,洞悉其实现机制,根据自己的实际情况进行调优。如果不是那么使用者也只能改变方向去解决问题,条条大路通罗马。

c) web server/db server/cache server 相关

在架构设计中web server/db server/cache server是很重要的一点,我个人觉的这一块必须是使用具有前瞻性,易配置,能监控和维护的产品,总结的几点:

1 丰富和深入的配置选项。如果能提供丰富和深入的配置选项,那么在安全和性能调整上可以很方便的进行操作,并且不中断实际的生产环境。

2 基于高并发模型。比如这几年热门的基于epoll的nginx,可以有效的减少连接处理时间,增大同时并发数。

3 支持负载均衡和请求分发。当平台的访问量增高之后,单台服务器肯定是很难支撑,这时候就需要增加服务器来分担压力,这时候server的负载均衡和请求分发就很重要了。

4 高效的缓存机制。高效的缓存机制可以帮助平台提高负载能力,减少重复资源的读取和处理时间。比如用于小文件缓存的SQUID,VARNISH,用于数据库缓存的memcached等。

5 实时的状态监控机制。实时的监控状态报告,可以有助于平台维护人员迅速了解平台性能运行状况,根据状况进行调整。

如果是开源的那就更好了,可以深入了解其源代码,并根据自己的实际需要进行配置和定制。

d) 操作系统

选择合适的操作系统,个人觉的最主要是稳定安全,易管理和维护,易监控。稳定安全的操作系统一般官方会持续的发布补丁和新版本,解决BUG和漏洞等。并且官方或者第三方会不断的提供新的管理维护监控工具,并且能让管理维护人员通过编写脚本来维护管理。而且合适的操作系统能让研发人员充分利用其特性,发挥平台的最大性能。

f) 物理架构

这里的物理架构是指服务器的搭建方式。有的朋友可能资源有限只有一台服务器,有的朋友资源充分有十几台服务器或者更多,我个人觉的这都不是问题。平台初期的话,我想大部分访问量都不高,web server/db server/cache server放在一台服务器上都没问题。但是自己心里最好能预估一下这个平台会发展到什么样的规模,在做架构设计的时候,按照事先预估的来决定怎么做物理架构,并为以后的架构升级做准备。说到这里,想到前百度架构师雷鸣说过的一句话,当你的会员数达到目前的5倍或10倍的时候,架构就要升级。

二 平台研发

前期做好了技术方案,就进入到实质研发过程中来了,个人感觉平台网站的研发有别于传统的IT项目研发,因为以前就是客户/需求分析人员/美工之间进行交涉,而现在平台网站研发会多接触一个角色叫产品,产品决定了最后的平台网站是什么样的,有什么功能,每个功能的流程和用例是什么样子的,也就是原型设计。并且在研发人员实现之后,还要由测试人员进行测试。关于原型设计,请看我的另外一篇文章《项目需求原型设计》。

在上述过程中,产品会经常要求研发人员:“某某功能是这样的,你赶快给我实现并解决。这个功能不对,要改。那个功能出现问题,要改”,而研发人员可能正在忙着其他功能的实现,于是很容易产生冲突。在此我推荐使用敏捷开发方式,设立短的发布周期进行迭代开发,产品提出来的问题统一在一个周期内解决,到下一个周期一起发布,到下一个周期再进行下一周期的功能改进和BUG修正。并使用JIRA这种成熟的项目管理系统进行管理,为以前的更改留下历史,总结经验。

那么在正常的研发过程中,特别是团队研发,我个人觉的需要注意的几点:

1 合适的开发工具。还是那句话“工欲善其事,必先利其器!”,使用合适的开发工具和插件,能提高开发效率,节省开发成本。团队使用统一的开发工具,可以减少出错的几率,防止版本冲突等。

2 如何控制代码质量。因为团队里大家的水平有高有低,所以团队研发的时候,需要去建立固定的开发规范,比如:“命名规范”,“代码包引用规范等”。当某个人解决某个功能的时候,为了确保代码质量和减少出错几率,最好能画出流程图和配上设计意图说明,来进行讨论确定,同时也可以帮助新人快速成长。

3 需要引入新框架。有时候,某个成员会觉的某某框架的新特性非常好用或者非常合适手头的问题,那么就想引入这个新框架,我的建议,在充分了解的基础上来决定,不能因为某个特性而引入一堆用不到的特性,那样会让项目代码显的冗余。

4 知识总结和培训。当某个成员遇到问题,并解决后或者学习到新东西的时候,不妨拿出来大家一起探讨一下,说不定就有助于提高平台的性能,为大家提供更好的设计思路。

三 架构优化

“过早优化是万恶之源”,所以关于架构优化,我放在研发完成并上线之后来讲。个人觉的没有百分百可用的架构,得看你实际的业务流程和运行情况来进行优化。当你运行了一段时间后,收集到一定的数据,找出性能的弱点后进行针对性调整和优化,当平台的负载强度达到一定程度,就得立即着手做架构升级。

有的朋友会问,有时候网站就是莫名其妙的变慢,但是不知道从何下手怎么办,或者凭经验改改这个改改那个选项,好了一点但好的不彻底。我的经验是从数据开始,从最外围开始画圈,找到源头。先从外围开始收集日志,比如access_log访问日志或sql_log数据库操作日志,找出访问最多的10条日志和执行时间最长的10条日志,然后根据日志去反查到底是什么引起的操作,然后一条条的解决。如果解决不了,那么就考虑重构。其他问题解决方式跟这个差不多,就不赘述了。从我自己已有的经验来看,往往就是因为几个功能点的恶化,引起了整体的性能变差。

所以在研发的时候,功能点的实现要好好考虑,前端部分,页面,图片等的大小和有效缓存,后端的局部数据和全局数据的缓存高效利用,数据库层SQL语句尽量避免跨表查询,数据库索引的利用等。

四 其他相关

存储

当平台网站的访问量不断增长的同时,数据也会跟着不断的增长,所以早期做好数据如何存储的方案非常重要。

现在比较常见的是HASH URL,根据文件名的HASH来选择存储不同的目录,比如20091014131213_abc.xxx 那么就存储到 2009/10/14/a/20091014131213_abc.xxx这样的目录下,方便以后根据目录来划分服务器。

搜索

当平台网站的访问量不断增长的同时,数据搜索也变成了一个问题。肯定有朋友会说,直接数据库模糊查询有什么问题,你试想当你的数据表里有几百万数据你用select * from table where title like ‘%key%’ 没法用索引,那就是全表扫描,拿得花多少时间,一个人查询还没问题,那几百个呢,那你的平台不就歇菜了。还好现在已经有了成熟方案Lucene,只要按照它提供的接口去实现,你就可以使用。

作者:欧拉投稿 QQ:4465618

原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/1960.html

  • 相关推荐
  • 大家在看
  • 丐帮设计打造人人共享在线设计平台

    受疫情影响,互联网经济整体增速放缓,新的营销困境也随之而来。流量是企业的核心困境,而营销渠道是流量的新动能。丐帮设计率先打破了数字化营销的技术壁垒,通过强大的人工智能技术,研发出能随时满足用户需求的设计共享平台。人人都是设计师提到设计,我们会想到什么?是长城、金字塔那样的伟大建筑?是每年巴黎时装周的高定新款?还是埃舍尔的矛盾空间?是,却不止如此。工薪族如何做出精美被老板夸赞的PPT?自媒体人怎样作图?

  • 6 月 1 日至 18 日,网联平台网络支付交易金额达 16.91 万亿元

    网联清算有限公司近日表示, 2020 年 6 月 1 日至 6 月 18 日,网联平台处理资金类跨机构网络支付交易 261. 78 亿笔、金额 16. 91 万亿元,同比分别上涨 52%、42%。其中, 6 月 1 日的单日交易处理规模达 15. 99 亿笔,创历史新高。

  • Serverless架构的前世今生

    一、Serverless简介云计算的不断发展,涌现出很多改变传统IT架构和运维方式的新技术,而以虚拟机、容器、微服务为代表的技术更是在各个层面不断提升云服务的技术能力,它们将应用和环境中很多通用能力变成了一种服务。但无论这些技术应用在哪里,帮助企业“降本增效”是技术变革永恒的主题。Serverless架构的出现,带来了跨越式的变革。Serverless下主机管理、操作系统管理、基础软件的部署运维、资源分配和扩缩容能力全部由云厂?

  • 美团组织架构调整:充电宝、两轮、地图等业务调整至美团平台

    今日,美团发布组织调整公告称,为进一步加强线下线上流量品牌一体化,强化美团平台建设,将原 LBS 平台下属充电宝业务部、两轮事业部、公交业务部、地图服务部调整至美团平台,相关负责人向美团平台负责人李树斌汇报,李树斌继续向联合创始人王慧文汇报。

  • 美团组织架构调整 充电宝、两轮、公交、地图业务调整至美团平台

    美团今日宣布组织架构调整,将原LBS平台下属充电宝业务部、两轮事业部、公交业务部、地图服务部调整至美团平台,相关负责人向美团平台负责人李树斌汇报,李树斌继续向联合创始人王慧文汇报。原LBS平台/交通事业部调整为交通事业部,负责人为王慧文不变。美团称,此次组织架构调整,是为了进一步加强线下线上流量品牌一体化,强化美团平台建设。今年初,美团重启了充电宝项目?

  • 飞猪组织架构调整,庄卓然任飞猪总裁

    近日阿里旗下的飞猪平台进行组织架构调整,本次调整就包括原飞猪总裁赵颖将不再担任该职务,接任者为阿里巴巴集团副总裁、阿里文娱CTO兼优酷COO庄卓然。

  • 飞猪回应组织架构调整:系集团内正常轮岗

    飞猪近日进行了一轮组织架构调整,其中阿里巴巴集团资深副总裁、蚂蚁金服国际事业群总裁赵颖(芷雪)不再兼任飞猪总裁,未来将专注于蚂蚁金服国际业务;阿里巴巴集团副总裁、阿里文娱CTO兼优酷COO庄卓然(南天)接任飞猪总裁。对于该组织架构调整,飞猪方面回应称,系集团内部正常轮岗。

  • 飞猪回应“组织架构调整”:集团内部正常轮岗

    今日,针对“组织架构调整”的报道,飞猪回应称,系集团内部正常轮岗。此前,有媒体报道称,飞猪已进行一轮组织架构调整,其中包括飞猪总裁由阿里巴巴集团副总裁、阿里文娱CTO兼优酷COO庄卓然(花名:南天)接任;阿里巴巴集团资深副总裁、蚂蚁金服国际事业群总裁赵颖(花名:芷雪)不再兼任飞猪总裁,未来将专注于蚂蚁金服国际业务。

  • 设计实战 赞扬设计服务带你探究LOGO设计

    我们都知道,每个公司都有着它自己的独特性,这种独特性是由它的发展历程和特有的服务细节所塑造的,也正是因为这种独特性的存在,设计师们才能基于它们来为这些公司企业进行LOGO设计。LOGO绝对是最能够直观的体现一个公司属性和风格的东西之一。专门设计一个独立的、与众不同的LOGO是一件很艰难的事,因为就目前市场上存在的公司企业和五花八门品牌LOGO实在是太多太多了。LOGO设计的独一无二,对公众而言,能够看一眼就能快速的想起某一?

  • 大牛Jim Keller离职 Intel CPU架构将由印度裔高管Raja主导

    今天早上,加入Intel公司不过2年多时间的Jim Keller突然宣布离职,理由是多陪陪家人,辞职将立即生效。在这个CPU大牛离职之后,Intel的团队实际上有一次大规模人员变动,目前主导Intel GPU业务的

  • 苹果Mac弃用英特尔芯片,将引入自研ARM架构芯片

    苹果2020年开发者大会(WWDC)在北京时间凌晨1点正式召开,在本次发布会上苹果公布了一项轰动的消息,即苹果未来将会引入自研的ARM架构芯片,逐步取代现在使用的英特尔芯片,苹果Mac弃用英特尔芯片无疑是对后者巨大的打击。

  • 苹果Mac弃用英特尔芯片 全面引入自研ARM架构芯片

    在苹果开发者大会上,除了发布iOS14 之外,还有一个重磅的点就是苹果电脑要更换处理器了。在发布会上,苹果表示,未来的Mac电脑将不再使用英特尔芯片,而是全面引入自研的ARM架构芯片。

  • 享学课堂Java进阶架构班三期6月开营

    疫情过后,网课的热度依旧没有褪去。虽然刚刚过完“金三银四”程序员面试跳槽的旺季,但是还是有很多程序员继续选择学习深造,提高技术水平,为下一个面试跳槽周期“金九银十”做准备。据享学课堂官方提供的数据,在 2020 年第一季度Java类目下新增VIP学员超过 1000 人,Java课堂VIP总人数已经超过 6000 人。为提高教学服务,保证每位学员得到高质量的学习效果,本月开始享学课堂Java进阶架构班三期正式开营。享学课堂Java进阶架构

  • 滴滴网约车架构调整,付强:提供有口皆碑的服务

    6月18日,滴滴网约车平台公司发布组织和人事任命内部公告,将司机服务部中的司机组织化等团队,转移到大区管理中心。

  • exands连续被海底捞点赞,基础架构为餐企降本增效

    有人说海底捞的成功来自于独特的企业文化,感动员工,让员工去感动客人。其实海底捞跟供应商之间的关系也是一样的,以诚意相互成就,一起成长。今年 5 月,exands(兴容信息)被海底捞评选为 2019 年度优秀合作伙伴。exands是海底捞国内所有门店的信息化基础架构运营商,已连续两年荣获该奖。年初,餐饮行业经历了全面洗牌,一些中小商家因歇业、现金困境而被迫关门倒闭,大型连锁企业通过各种方式来减少支出,思考转型升级,借助?

  • Pensando在云基础架构霸权之战中挑战亚马逊

    统一网络组件,以便可以整体使用它们是思科系统公司通过恰当地命名为统一计算系统(通常称为UCS)解决的难题。现在,随着软件使用量的不断发展变化,随处可用,随时可用的模型,挑战在于如何使网络变得灵活。随着Pensando Systems Inc.在隐身模式下于2019年底推出,思科著名的MPLS帮派及其USC团队正着手为网络基础架构创造新的选择,并挑战Amazon Inc.的Annapurna Labs创新王冠。“让我们建造更大,更美的东西,即使我们

  • 苹果自研cpu是什么时候开始的 Mac自研CPU架构、性能详细介绍

    此前苹果分析师郭明錤表示,在 2020 年第四季度或 2021 年第一季度,苹果将推出自家定制处理器的Mac机型。日前据彭博社报道,苹果将会在本月举行的 WWDC20 上宣布 Mac 产品线从英特尔 CPU 过渡到自研 CPU 的计划,基于 ARM 架构。

  • 拼多多宣布组织架构升级:CTO陈磊出任公司首席执行官

    拼多多创始人、董事长黄峥发布公司全员信,宣布公司原CTO陈磊将出任首席执行官。黄峥则继续担任董事长。黄峥表示,这几年里,拼多多经历了飞速的发展。“团队的快速扩张,业务的高速增长和外部环境的剧烈变化,都在催促我们进一步迭代升级我们的管理团队和公司治理结构。”此次调整后,黄峥将花更多时间和董事会制定公司中长期战略,研究完善包括合伙人机制在内的公司治理结构,努力从制度层面推进拼多多

  • 拼多多组织架构升级:CTO陈磊出任CEO,黄峥继续担任董事长

    DoNews 7月1日消息(记者 程梦玲)拼多多公司创始人、董事长黄峥通过致全员信的方式宣布,经董事会批准公司原CTO陈磊将出任首席执行官。黄峥则继续担任董事长。此次调整后,黄峥将花更多时间和董事会制定公司中长期战略,研究完善包括合伙人机制在内的公司治理结构。为此,黄峥将划出个人名下拼多多上市公司的7.74%股份给到拼多多合伙人集体。其中一部分可以在不影响拼多多现有股东利益的情况下,进行一些长期基础研究和社会公益等

  • 设计师的福音,超高颜值的ConceptD 3设计本

    对于众多设计师而言,一款专业的笔记本必不可少,但在笔记本市场上符合设计师需求,轻薄、性能、色彩与颜值都满足设计师群体的笔记本少之又少,如何选择选择一款适合创作的笔记本成了众多设计师们的难题。2019年,宏碁针对设计师群体推出了ConceptD系列设计本,在保持轻薄的同时拥有高性能,并为设计师们带来精准的屏幕色彩,提高创作效率,成为众多设计师的不二之选。并在今年618京东购物节之际,宏碁开启限时优惠,618期间购买Co

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议