写点什么

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

  • 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:568920

评论

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

Java内存模型

wzh

Java JVM happens-before 并发 Java内存模型

Java线程状态与状态间的切换

wzh

Java 线程 JVM 操作系统 并发

Linux之mv命令

入门小站

Linux

信息安全与网络安全的关系

网络安全学海

程序员 网络安全 安全 信息安全 渗透测试

【MindSpore有奖活动】资讯内容宝藏多,编译安装试一波!

Geek_6cdeb6

定点数与浮点数表示

若尘

浮点数 计算机组成原理 6月日更

知乎上线1小时,5w浏览量被下架的JVM全解笔记,内容太强大

Java架构师迁哥

只把华为“桑田岛时间”看做一档对话节目?格局小了!

脑极体

网络抓包实战05——深入浅出连接关闭

青春不可负,生活不可欺

【21-16】PowerShell循环

耳东@Erdong

PowerShell 6月日更

Java8 的时间库(2):Date 与 LocalDate 或 LocalDateTime 互相转换

看山

Java 6月日更

Kubernetes手记(20)- HeapSter监控

雪雷

k8s 6月日更

你会选做通才还是专才?

石云升

职场经验 6月日更

“布”道AI的正确打开方式

脑极体

用VSCode刷LeetCode

IT蜗壳-Tango

6月日更

Redis入门五:主从复制

打工人!

redis 主从复制 6月日更

一文带你了解什么是HTTP协议

网络安全学海

网络安全 安全 信息安全 HTTP 渗透测试

Jenkins 如何与 Kubernetes 集群的 Tekton Pipeline 交互?

张晓辉

Kubernetes 云原生 jenkins Tekton CI/CD

微信小程序开发(一)

空城机

微信小程序 大前端 6月日更

模块7作业

Geek_2e7dd7

架构训练营

在线URLEncode编码,URLDecode解码工具

入门小站

工具

指挥中心情指勤一体化解决方案,河北公安情指勤一体化建设

5分钟速读之Rust权威指南(二十八)RefCell<T>

wzx

rust

值得收藏的15个JavaScript语句

devpoint

JavaScript array 6月日更

网络抓包实战06——灵异事件的始作俑者:Reset数据包

青春不可负,生活不可欺

协同过滤推荐算法(十六)

Databri_AI

推荐算法

采访华为服务器OS首席架构师熊伟:开源背后的故事(采访提纲)

xcbeyond

采访提纲 6月日更

[译] R8 优化:方法的 Outlining 优化

Antway

6月日更

网络抓包实战04——深入浅出连接建立

青春不可负,生活不可欺

网络攻防学习笔记 Day53

穿过生命散发芬芳

网络攻防 6月日更

详解 SQL 中的单表查询

悟空聊架构

sql 6月日更 单表查询 T-SQL

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