速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

网络安全之命令执行漏洞复现

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

Go易错集锦、优秀开源包、实战案例合集

Go学堂

Go 内容合集 签约计划第二季 技术专题合集

更快更稳更易用: Flink 自适应批处理能力演进

Apache Flink

大数据 flink

一个程序员眼中的裁员潮

HoneyMoose

分布式系统设计之常见的负载均衡算法

闫同学

负载均衡 11月月更 分布式系统设计

基于Jmeter的百万级tps性能测试实践

环信

Jmeter 性能测试

组织赋能,统一企业门户实现高效化、移动化协作

WorkPlus

IM即时通讯私有化部署,WorkPlus助力企业构建安全办公环境

WorkPlus

教学:制作 GitHub 同步近期博客卡片

小鑫同学

前端 Github' 11月月更

【LeetCode】数组元素积的符号Java题解

Albert

算法 LeetCode 11月月更

web前端面试技巧-如何自我介绍?如何应对hr?

肥晨

前端面试 面试技巧 11月月更

Pytorch实现经典模型AlexNet模型

Studying_swz

深度学习 11月月更

JS in CSS:一键支持响应式布局

iofod jude

前端 后端 低代码 iofod

简单组合逻辑电路

梦笔生花

Verilog LED数码管 11月月更

官宣|Apache Flink 1.16 发布公告

Apache Flink

2022-11-15:这里有 n 个航班,它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings , 表中第 i 条预订记录 bookings[i] = [firsti, lasti,

福大大架构师每日一题

算法 rust 福大大

Baklib|信息管理和知识管理是如何影响你的业务的?

Baklib

知识管理

有趣的 Go HttpClient 超时机制

捉虫大师

Go HTTP 11月月更

IM开源项目OpenIM部署文档-从准备工作到nginx配置

Geek_1ef48b

如何在SpringBoot项目中,实现记录用户登录的IP地址及归属地信息?

wljslmz

日志 IP springboot 登录 11月月更

OpenSergo 流量路由:从场景到标准化的探索

阿里巴巴云原生

阿里云 微服务 云原生

算法题学习---两个链表的第一个公共结点

桑榆

算法题 11月月更

IO原理(二):多路复用

苏格拉格拉

reactor nio epoll IO多路复用 IO模型

Baklib|SaaS产品,实现企业流程数字化

Baklib

SaaS

漫画|微信群聊的程序员们

肥晨

程序员生活 11月月更 程序员漫画

Docker Compose快速部署多容器服务实战

闫同学

Docker 容器 11月月更

裁员潮血洗硅谷是坏事还是好事

HoneyMoose

Baklib|我的企业是不是需要一个维基页面呢?

Baklib

维基

【愚公系列】2022年11月 微信小程序-app.json配置属性之requiredBackgroundModes

愚公搬代码

11月月更

数据指标体系搭建步骤

穿过生命散发芬芳

11月月更 数据指标体系

当前API安全产品现状

阿泽🧸

API 11月月更

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