写点什么

如何进行平台型网站架构设计?

  • 2009-10-26
  • 本文字数:1272 字

    阅读完需:约 4 分钟

在欧拉的“平台网站架构设计之我所见”的博客中,他从选择技术方案和物理架构、平台研发和架构优化等方面阐述了他在多年的平台型网站架构设计过程中的经验心得。

欧拉先是分析了在选择技术方案和物理架构中的几个常见问题,以来解决如何提高开发效率,使平台具有高性能、高负载性的问题:

开发语言和数据库:我个人觉的最关键是你和你的团队最擅长的开发语言和数据库是哪个,古语有云:“工欲善其事, 必先利其器!”,趁手的开发语言和数据库有助于事半功倍。试想如果你选择了一个并不很熟悉的语言,也许这个语言和数据库在基础性能上的确比你掌握的语言好,但是在研发过程中学习曲线肯定长。成熟框架还是自己实现:我个人的一些经验是,尽量使用开源的成熟框架,因为平台研发初期使用成熟的开源框架,能提高开发效率,并且在质量上有保证。我曾经接手过一个平台的改版,框架是前面开发人员自己写的,里面的一些设计思想不是很成熟,导致平台在负载增高后性能很差,整改起来很麻烦。

除此之外,Web Server/DB Server/Cache Server 的选择也是很重要的一点,欧拉认为这一部分一定要使用具有前瞻性、易配置、能监控和维护的产品,并提出几个选型的标准:丰富和深入的配置选项、基于高并发模型、支持负载均衡和请求分发、高效的缓存机制、实时的状态监控机制等。而对于操作系统的选择,则要稳定安全、易管理和维护、易监控等。对于物理架构,即服务器的搭建方式,欧拉同样认为前瞻性是非常重要的:

平台初期的话,我想大部分访问量都不高,Web Server/DB server/Cache Server 放在一台服务器上都没问题。但是自己心里最好能预估一下这个平台会发展到什么样的规模,在做架构设计的时候,按照事先预估的来决定怎么做物理架构,并为以后的架构升级做准备。说到这里,想到前百度架构师雷鸣说过的一句话,当你的会员数达到目前的 5 倍或 10 倍的时候,架构就要升级。

在实质性的研发过程中,需要注意的是平台网站研发的模式和传统 IT 项目研发的不同,以前是开发过程中要和客户、需求人员等打交道,而现在关注的是产品设计。对于平台网站研发项目的管理,欧拉推荐使用敏捷开发方法,通过设立短的发布周期进行迭代开发,并使用 JIRA 等成熟的项目管理系统进行管理等。对于团队研发需要注意的地方,欧拉总结如下:

  • 合适的开发工具;
  • 如何控制代码质量;
  • (根据)需要引入新框架;
  • 知识总结和培训。

对网站研发过程中的架构优化、存储和搜索等关键点,欧拉也分享了自己的经验,比如对于网站速度慢,而却又不知如何下手的问题,欧拉提出的解决方案是:

我的经验是从数据开始,从最外围开始画圈,找到源头。先从外围开始收集日志,比如 access_log 访问日志或 sql_log 数据库操作日志,找出访问最多的 10 条日志和执行时间最长的 10 条日志,然后根据日志去反查到底是什么引起的操作,然后一条条的解决。如果解决不了,那么就考虑重构。

在文章的最后,欧拉来分享了一些他认为有价值的资料,比如新型的大型BBS 架构(Squid+Nginx) Nginx 图片服务器的架构方案校内相册发展过程及核心技术分析爆料架构设计贵在务实大型网站架构不得不考虑的 10 个问题等。

2009-10-26 20:569162

评论

发布
暂无评论
发现更多内容

CentOS 7 安装 Python 3.7

wong

Python

LeetCode题解:622. 设计循环队列,使用数组,JavaScript,详细注释

Lee Chen

大前端 LeetCode

活着

GongTeng95

危与机并存 保险业如何走好线上线下业务并举转型之路?

博睿数据

运维 监控 保险 AIOPS 系统

不想搞Java了,4年经验去面试10分钟结束,现在Java面试为何这么难

Java架构师迁哥

Java 基础语法

InfoQ_34a83d636158

血的教训!千万别在生产使用这些 redis 指令

redis 学习 编程 程序员

网上赌博输了怎么办?上岸戒赌是唯一的选择

jdxj

网上赌博输了怎么办 网上赌博玩快三输了怎办 网上玩快三输了怎么回血 网赌输了怎么戒赌

数字货币量化交易,量化对冲搬砖系统开发

13530558032

python——自定义序列类

菜鸟小sailor 🐕

Electronjs

Neil

Java 大前端 Electron 客户端开发

架构师训练营大作业

叮叮董董

实践案例丨云连接CC实现跨区域多VPC与线下IDC Server互联

华为云开发者联盟

云服务 IDC

在线游戏,如何把握住1个亿以上的DAU?

博睿数据

运维 监控 AIOPS 系统 用户体验

算法大赛评委亲授通关秘籍,报名倒计时!

易观大数据

一次压缩引发堆外内存过高的教训

AI乔治

Java kafka JVM

Spring Cloud 微服务实践(2) - Gateway重试机制

xiaoboey

maven Spring Cloud Gateway modules 重试

2020年8月北京BGP机房网络质量评测报告

博睿数据

测试 机房 评测 排行榜 IDC

直播倒计时|30分钟带你解锁“技术写作”新技能

有只小耳朵

技术 写作 直播 技术创作 RTC征文大赛

Python基础知识(二)

Python基础

高速路二维码报警定位系统开发,二维码报警定位功能

13530558032

一次旅途

GongTeng95

Spring Cloud 微服务实践(1) - 用Initializr初始化

xiaoboey

Spring Cloud Eureka Gateway Hoxton

架构师训练营结业作业

superman

USDT支付系统开发技术方案,数字货币承兑商支付

13530558032

大数据下单集群如何做到2万+规模?

华为云开发者联盟

大数据 集群

Spring Cloud 微服务实践(0) - 开篇闲话

xiaoboey

微服务 Spring Cloud Spring Boot Spring Framework

如何进步神速

Sean

学习 个人成长

关于手机里的IP地址,你不得不知道的“秘密”

脑极体

UML练习1-食堂就餐卡系统设计

博古通今小虾米

UML

2020年7月云主机性能评测报告

博睿数据

云计算 测试 公有云 评测 排行榜

如何进行平台型网站架构设计?_Web框架_霍太稳@极客邦科技_InfoQ精选文章