写点什么

2010 年大规模技术架构的思路

  • 2010-03-15
  • 本文字数:2249 字

    阅读完需:约 7 分钟

相比其他行业,IT 技术由于信息流动便捷,新技术更新非常频繁。架构师经常面临新技术及传统方案选择的困惑。架构师应如何抓住本质构建新一代的应用?本文从几个方面提出一些思路供架构师参考。

编程语言

2009 年编程语言领域也发生了不少变化。虽然架构师通常都表示编程语言并不重要,但事实上每一次大的语言改进还是对业界产生非常大的影响,同时大部分技术团队也依赖某一两种编程语言。下面介绍几种值得架构师关注的语言及热点。

Erlang 近几年在并发编程与分布式领域比较受关注。2009 年 11 月 7~8 日在杭州举办了第四次 Erlang 全国开发者大会(CN Erlounge IV)。从会议主题及参会者的讨论来看,Erlang 在 2009 年在一些先行项目中取得了不错的效果,同时 Erlang 的并发编程思想也在其他语言得到了一些借鉴和应用。预计 2010 年 Erlang 会继续在小圈子内流行,目前业界应用 Erlang 技术最大的障碍不是 Erlang 技术本身,而在于缺乏这方面专业人才,与 C++/Java 相比,Erlang 暂时不具备大规模团队协同开发的条件。

Scala 也是一门和 Erlang 类似的函数式编程语言, 由于 Scala 是基于成熟 JVM 并具有丰富的周边 library,因此相比于 Erlang 切换成本和风险都低很多。尤其是 Java 团队如果希望利用函数式及并发编程优势的可以关注。

2009 年 11 月,Google 发布了一种新的语言 Go,它在系统编程领域具有很多优势,如支持 goroutine 并行编程模型,支持 GC,编译速度快等。很多系统程序员表示 Go 就是他们心中的“梦中情人”。但是由于刚推出不久的缘故,Go 还是不适合在生产环境使用,建议保持跟进。

在网页编程领域,PHP 仍然是 Web 页面编程语言首选。如 Facebook 谈到选择 PHP 的原因是“开发效率高,支持快速的产品迭代”。2010 年 2 月,Facebook 开源了 HipHop 框架,在 PHP 业界引起较大的轰动。它将 PHP 编译成 C++ 执行,可以提高性能 50%。据 Facebook 博客上的资料,HipHop 发布仅半年之后,Facebook 90% 的 Web 服务器都用上了 HipHop。据估算,Facebook 每月有 4000 亿页面访问,则 HipHop 承担了 3600 亿。如果节省 50% 服务器的开销,那将是非常大的节省。希望在 2010 年国内的 PHP 开发者也能充分利用 HipHop 的成果。

Ruby 由于具有快速的开发效率,近年来在 Web 开发领域异军突起。首届中国 Ruby 大会 2009 年 5 月 21 日上海召开,Ruby 创始人 Matz 也亲自来华做了主题演讲。从大会来看 Ruby 社区在国内已经比较蓬勃。预计在 2010 年 Ruby 会在企业应用和部分互联网 Web 应用中得到更广泛的使用。

存储:从 Cache、数据库到分布式文件系统

Web 2.0 的设计中,Cache 会成为一个中心元素。传统的 web 应用瓶颈通常在数据库或者应用程序上,但是最近 Twitter 的一篇技术博客的分析,Twitter 广为人知的“鲸鱼”故障的罪魁祸首竟然是 Memcached。因此最近技术界流传一句新的名言,“Disk is the new Tape,RAM is the new Disk。”意思就是说传统 SQL 存储已经像旧的磁带机一样成为应用的瓶颈,需要把一切数据都放在内存里面才能满足新的应用需求。另一 Web 2.0 应用巨头 Facebook 也广泛使用 Memcached,据称每秒访问量达 2 亿次以上。

在 2009 年数据库受到 NoSQL 运动的冲击。NoSQL 是指用非关系数据库的方式来存储数据,通常也指用 key value 方式存储。比较有名的有 Tokyo Cabinet, Redis, Cassandra 等。由于大部分 Web 应用的需求是基于主键查询,同时业务上又常常面临更改表结构字段的需求。如果将所有数据内容作为一个 value 字段存入,相对于 SQL 模式,使用更简洁,维护方便。在性能上一些 key value 产品比传统的 SQL 在小数据访问性能上有一个数量级的提升。因此 key value 存储迅速被业界接受及采用。

分布式文件存储也具有广泛需求,目前开源的解决方案有 HadoopFS,MogileFS 等。很多互联网公司目前也借鉴 GFS 来开发自己分布式存储产品。

可扩展架构:从手工切分到云服务

LAMP 是一种经典的 Web 架构设计,他指用 Linux, Apache,MySQL,PHP 来搭建 Web 架构。当 Web 请求量增大到单台服务器没法承载时典型解决方案是对应用服务器及数据库进行切分。目前切分大部分是借鉴 LiveJournal 模式,由于 LiveJournal 架构设计甚至大部分源代码都是公开的,因此在过去很多架构师设计 LAMP 扩展通常是在 LiveJournal 基础上作出改进。

从 2009 年开始,由于云计算的蓬勃发展,LAMP 发生了两大变化。首先,部分原先用数据库如 MySQL 的场合开始被 key value 存储代替。分布式的 key value 存储产品本身解决了扩展,负载均衡,复制,数据一致性等问题。无需架构师手工编写代码解决数据过大后的分表问题。

另外一个变化是 PHP/Python/Java 等语言可以运行在一个 App Engine 的容器上,这个容器可以托管一个几行代码的 hello world 项目,也可以承载上千万访问量的用户的大型项目。App Engine 自身具有可扩展性,容错性,负载均衡,用户可以自动访问最近的 IP 等特性。它对于需要架构师根据业务来切分的传统做法是一种全新体验。

在 2010 年,分布式存储及 App Engine 模式是架构师需要考虑的两大方向。

相关内容淘宝网架构师岳旭强的年度展望


个人简介:杨卫华,新浪产品事业部技术经理,目前工作以开发高并发的分布式应用为主。对互联网后端技术,分布式,网络编程,XMPP 即时通讯等领域感兴趣。曾组织多次广州及珠三角技术沙龙活动。个人blog 为: http://timyang.net/

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-03-15 22:4713295

评论

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

硬核!八张图搞懂 Flink 端到端精准一次处理语义 Exactly-once(深入原理,建议收藏)

五分钟学大数据

大数据 flink

精美的淘客项目完全开源啦,确定不来围观吗

Silently9527

Vue mybatis springboot uniapp

《学会写作》学习笔记之如何拟标题

JiangX

28天写作

管理笔记[4]:组织管理的目标就是实现1+1>2

L3C老司机

批判性思维自修课(六)

石君

28天写作 批判性思维

极客大学·产品经理训练营·第二章作业(二)

二大爷

极客大学 产品训练营

分页方式,看这一篇就够了。

大伟

分页

产品训练营-作业3

简小一

为啥写的mybatis插件没用?一场mybatis插件加载机制的探索之旅

altantisor

spring Boot Starter mybatis源码

28天瞎写的第二百三十五天:客服得有多专业?

树上

28天写作

学习计算机视觉

IT蜗壳-Tango

OpenCV 计算机视觉 2月春节不断更

架构训练营大作业(一)

一期一会

「产品经理训练营」作业03:利益相关方识别

狷介

产品经理训练营

架构师训练营第十周作业

zamkai

图解计算机结构与体系分类!!

冰河

编程 程序员 高并发 计算机结构 操作系统原理

夕四今晚加班到2点30,而王二还不打算走《打工人的那些事》

谙忆

静默安装Oracle也没那么恐怖

MySQL从删库到跑路

oracle

【LeetCode】子集问题debug模式查看数据变化

Albert

算法 LeetCode 2月春节不断更

不会开发的你也能管理好企业漏洞,开源免费工具:洞察(insight II)

BigYoung

安全 安全漏洞 28天写作 2月春节不断更

被接连封杀后,出海的“TikTok们”都打算如何做?

李忠良

28天写作

中国为什么加快推进数字人民币

CECBC

数字货币

区块链在数字版权领域的应用发展报告(2020)

CECBC

版权保护

看完字节大佬的算法刷题宝典,我直接手撕了500道算法算法题

程序员 面试 算法

产品训练营第三次作业

Geek_79e983

Java并发包源码学习系列:阻塞队列实现之SynchronousQueue源码解析

Java 编程

翻译:《实用的Python编程》00_Setup

codists

Python

一文看完TCP/IP协议基础知识点

Spring - IOC

小马哥

Java 架构师 spring 5 七日更

翻译:《实用的Python编程》README

codists

Python

京东支付SDK重构设计与实现

京东数科风险算法与技术

架构训练营大作业(二)

一期一会

2010年大规模技术架构的思路_Java_杨卫华_InfoQ精选文章