写点什么

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:4713385

评论

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

MySQL探秘(二):SQL语句执行过程详解

程序员历小冰

MySQL 28天写作 12月日更

Selenium之css怎么实现元素定位?

六十七点五

大前端 软件测试 自动化测试 接口测试 selenium

架构实战营 - 模块五作业

随风King

「架构实战营」

如何在Flutter应用程序中创建不同的渐变 【Flutter专题14】

坚果

flutter 28天写作 12月日更

Linux一学就会之Centos8用户管理

学神来啦

Linux centos 运维 linux云计算

小程序与H5适合的场景应用都有哪些

Speedoooo

ios开发 APP开发 容器安全 Andriod开发 容器应用

短视频平台的风控系统设计

Bill Zhang

当我们谈论“远程开发”时,我们在谈论什么

Draven Gorden

云原生 开发者工具 开发工具 远程协作 开发环境

Cordova插件中JavaScript代码与Java的交互细节介绍

汪子熙

Java JavaScript 移动应用 28天写作 12月日更

【福利】腾讯WeTest专有云解决方案,限时开放招募体验官

WeTest

12 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

dart系列之:还在为编码解码而烦恼吗?用dart试试

程序那些事

flutter dart flutter 面向切面 aop 程序那些事 12月日更

云智慧正式开源运维管理平台(OMP),加速AIOps社区生态建设

云智慧AIOps社区

运维 运维监控 开源软件 运维体系 运维系统

基于星环科技大数据平台 辽宁城市建设职业技术学院打造智慧校园

星环科技

大数据

Sinfonia: a new paradigm for building scalable distributed systems--翻译理解【1】

Krysta

分布式 transaction Sinfonia DSM 两阶段提交改进

Java和ABAP中的几种引用类型的分析和比较

汪子熙

Java 引用 28天写作 abap 12月日更

Camtasia视频剪辑功能详解

淋雨

Camtasia

一场关于元宇宙公司之死的剧本杀

白洞计划

等保工作中常见导致测评结论为差的高风险项

行云管家

网络安全 等级保护 等保测评 等保结论

分享一个从源码快速构建应用的小工具

Draven Gorden

开发者工具 开发工具 开源项目

使用工具Source Monitor测量您Java代码的环复杂度

汪子熙

Java 软件工程 28天写作 12月日更 代码复杂度

模块五作业

危险游戏

架构实战营

恒源云(GPUSHARE)_CIFAR-10数据集实战:构建ResNet18神经网络

恒源云

深度学习 算法

vCenter管理软件用什么牌子好?有哪些用处?

行云管家

虚拟化 vcenter

嚯,这款AI建模工具实在太强大了,快来pick!

百度开发者中心

AI python编辑器

周边生态|RoP 重磅发布 0.2.0 版本: 架构全新升级,消息准确性达 100%

Apache Pulsar

Java 开源 架构 云原生 Apache Pulsar

☕【并发技术系列】「多线程并发编程」技术体系和并发模型的基础探究(夯实基础)

洛神灬殇

Java 并发编程 多线程 多进程 12月日更

初识JVM的内存结构

Ayue、

技术专题合集

我不用“996”,更不用“007”,可我赚的就是比你多

六十七点五

软件测试 自动化测试 接口测试 测试工程师 功能测试

PackML从会到不会——命令标签(4)

陈的错题集

标准化 PackML

模块5作业

覃飞

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