- 浏览: 216632 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (212)
- 架构师-01-文档目录 (3)
- 架构师-02-组织 (7)
- 架构师-03-实施 (35)
- 架构师-04-监督 (14)
- 架构师-05-工具 (29)
- 架构师-09-引用文集 (63)
- 专题-01-微博应用 (5)
- 专题-02-GoogleEarth (1)
- 专题-03-运行维护 (9)
- 专题-04-经纪人营平 (3)
- 专题-05-RCP&RAP (5)
- 专题-06-框架PK (3)
- 专题-07-Android (13)
- 专题-08-UI (3)
- 专题-liferay6 (6)
- 专题-extjs4 (3)
- 专题-CXF (3)
- 专题-封闭网络的社会化 (0)
- 扯谈 (4)
- 外包 (9)
- 专题-C++ (4)
- 专题-09-BI (2)
- jquery&easyui (2)
- 专题-搜索引擎 (1)
最新评论
-
brighter:
oMapper.configure(Deserializati ...
jackson 抛出 bean 中没有定义字段的错误,只好用 gson -
PassFeed_free:
public Bitmap decode(ImageDecod ...
android universalimageloader 几点改进 -
PassFeed_free:
楼主你好, 请问这个库, 在大屏显示高清图片 ,listvie ...
android universalimageloader 几点改进 -
yonghong:
楼主只是揣测
JIRA4.1 升级到 JIRA5.1 -
abdxj:
"Could NOT parse license t ...
JIRA4.1 升级到 JIRA5.1
引用说明:原文来自于http://skyuu.blog.163.com/blog/static/9959273920091024111332625,为了方便本人阅读,文本格式略有调整。
在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn网站的架构技术的演讲
可以看一下LinkedIn网站的基本情况:
2. 每个月4百万独立用户访问
3. 每天4千万Page View
4. 每天2百万搜索流量
5. 每天25万邀请发送
6. 每天1百万的回答提交
7. 每天2百万的Email消息发送
这是一个世界顶尖级别流量的网站了,看看LinkedIn的系统架构:
- 操作系统:Solaris (running on Sun x86 platform and Sparc)
- 应用服务器:Tomcat and Jetty as application servers
- 数据库:Oracle and MySQL as DBs
- 没有ORM,直接用JDBC No ORM (such as Hibernate); th** use straight JDBC
- 用ActiveMQ在发送JMS. (It"s partitioned by type of messages. Backed by MySQL.)
- 用lucene做搜索Lucene as a foundation for search
- Spring做逻辑架构Spring as glue
下面是随着流量增加,LinkedIn的架构演化:
2003~2005
2 一个核心数据库,
3 在Cloud中缓存所有network图,Cloud是用来做缓存的独立server。
4 用Lucene做搜索,也跑在Cloud中。
2006年
2 把搜索从Cloud中移出来,单独一个Server跑搜索
3 增加Databus数据总线来更新数据,这是通过分布式更新的核心组件,任何组件都需要Databus
2008年
2 每个服务有自己的域数据库
3 新的架构允许其他应用链接LinkedIn,比如增加的招聘和广告业务。
The Cloud
2 Cloud大小:22M nodes, 120M edges
3 需要12GB RAM
4 在生产环境要跑40个实例
5 从硬盘重建Cloud一个实例需要8个小时
6 Cloud通过databus实时更新
7 关闭时持久化到硬盘
8 缓存通过C++实现,用JNI调用,LinkedIn选择C++而不是Java有两个原因:
2)垃圾收集暂停会杀死整个系统,LinkedIn用了最新的GC程序
10 Sun提供了2TB的RAM
Communication Architecture交流架构包括:
Communication Service是用来提供永久信息的,比如收件箱里面的消息和email
2 客户端用JMS发送消息
3 消息通过路径服务器来到达相应的邮箱或者直接放到email进程中
4 消息发送:同时使用Pull主动寻求信息(如用户需要信息)和Push发送信息(如发email)
5 使用Spring和LinkedIn专业Spring插件完成,使用HTTP-RPC
Scaling Techniques
2 通过类别来划分:用户信箱,访问者信箱等
3 等级划分:用户ID等级,Email等级等
4 所有的操作都是异步的。
PPT分享:
- LinkedIn Communication Architecture
- A Professional Network built with Java Technologies and Agile Practices
----------------------------------------------------------------------------------------------------------
创建消息:
1 客户端通过 JMS 发帖子
2 消息通过路由服务器发到合适的贴箱或直邮流程
3 支持多会员或访客数据库
传递消息:
1 客户解发或定时任务触发消息传递
2 异步传送
3 批处理合并多个消息到一个收件消息
4 消息内容主体通过 jsp 漂亮展示
5 定时调度可以按照用户热度、延迟时间、系统负载进行调整
6 需要处理退回的消息和再次发送
7 提醒系统也走相同消息路由
故障恢复:
1 消息被退回
2 丢失消息的地方:
数据库问题
代码bug
内容传递bug
服务不可用
3 避免宕机
扩容:
1 功能分区:
发送、收到、归档
2 经典分区:
会员邮箱
访客邮箱
企业邮箱
3 范围分区:
会员ID 分区
邮件词典分区
4 异步流
微博:
1 用于大量短期存活的消息分发弹性
2 多种客户端方式都有效(web app,RSS,api,mobile,third-party...)
3 2007年是简单 UI, 2008 年是干净 UI
4 第一个阶段
(1)基于拉架构
(2)收藏:负责收集数据,并发收集提高性能
(3)解决:抓取状态,批查询队列,使用 EHCache 缓存数据
(4)发送:xml 格式
(5)经验教训:单一服务器更新故障,应该花时间调整http最大连接数和超时,不要将最常用的数据放到 EHCache 性能很差。
5 第二阶段
(1)“Don't call me, I'll call you”
(2)当事件发生后,使用推方法更新
(3)不再搜索读取非常快
(4)利弊:发送出去的微博从来没被读取,需要更多的存储空间
(5)推送
- 通过 JMS 推送
- 总体数据存储在每个目标用户的一个 CLOB 列中
- 传入的微博合并到总体数据结构时使用乐观锁,避免锁争
- 增加一个新的收集器用于从数据库中读取数据
- 使用池执行微博流的任意转换(将10个微博折叠成1个)
- 低估了微博的处理量
- CLOB 块大小设置为8k,导致大量浪费,这是不可回收的
- 实时监视、配置 JMX 规范是很有用的。
- 使用一个溢出缓冲区
- 减小更新的大小
- 增加一个 varchar(4000)字段担任缓冲区
- 当缓冲区装满了后,转存到 CLOB ,清空缓冲区
- 避免 CLOB 的超过 90% 更新(取决于类型),保持更多的存储弹性
- 单一数据库是搞不定的
- 参照完整性是不可能的
- 需要考虑成本因素了:数据库、硬件、存储
- 丢失数据是个问题了
- 数据仓库和分析成了问题
- 垃圾数据攻击和数据搜刮
- 所有事情都分区:用户群,地域,功能
- 缓存是好的,即使影响比较温柔
- 放弃 100% 的数据一致性
- 建立异步流
- 建立和报告考虑
- 预料可能在任意点失败
- 不要低估成长的轨迹
- 时间跨度
- 内存规模
发表评论
-
深入理解Java:SimpleDateFormat安全的时间格式化
2014-06-26 01:45 411原文引用自:http://www.cnblogs.com/p ... -
注册MS CRM 2011 online
2014-04-24 00:38 444http://www.cnblogs.com/StoneGa ... -
微信架构推测
2013-08-06 09:45 1302原文:http://wenku.baidu.com/vie ... -
arc-04-10-手机应用的性能测试
2013-01-05 15:01 626手机性能测试的工具一大堆,但专门针对开发手机应用的性能测试工 ... -
GraphicsMagick 介绍及安装
2012-12-26 16:56 1175引用说明:原文来自 http://paris8.org/a/b ... -
在windows系统中生成数字证书-V3
2012-12-10 16:43 969引用说明:原文来自 http://zhouyongqiang. ... -
如何从最大用户并发数推算出系统最大用户数
2012-11-19 14:52 1373引用说明:原来来自 ht ... -
使用JIRA搭建企业问题跟踪系统
2012-07-20 09:33 0原文来自:http://www.blogjava.net/zh ... -
Eclipse rcp/rap 开发经验总结
2012-01-11 23:48 1183有牛人将 Eclipse RCP & RAP 开发经验 ... -
VMware Server 在 CentOS 下的安装与配置
2012-01-08 09:46 1042引用说明:原文来 ... -
rdesktop:Linux 下的远程桌面客户端
2012-01-07 11:37 890引用说明:原文来自于 http://blog. ... -
解决 Oracle 11g存在密码过期问题
2012-01-04 09:52 749引用说明:原文来自 ... -
角色权限,RBAC
2011-12-27 23:00 809引用说明:原文来 ... -
Spring Security 2 配置精讲
2011-12-12 20:10 733引用说明:原文来 ... -
Linux下Mongodb的分布式分片群集(sharding cluster)配置
2011-12-12 09:45 779引用说明:原文来自于http://www.linux ... -
使用 JReble 实现 tomcat 热布署
2011-11-24 09:42 2054甚至有人为了实现热部署,放弃各种框架(struts, spri ... -
基于MongoDB的好友消息动态的实现思路
2011-10-18 13:45 1503引用说明:原文来自 ... -
微薄后台架构浅析
2011-10-11 14:00 741引用说明:原文来自于http://blog.sina.c ... -
通过 Flick 看数据库集群
2011-09-19 14:14 746原文参见 http://www.cchere.com/arti ... -
利用DNS+GeoIP+Nginx+Varnish做世界顶级的CDN
2011-08-10 11:45 1216http://bbs.3344.eu/archiver/ser ...
相关推荐
介绍著名社交网站LinkedIn的Java架构技术
Samza是由LinkedIn开源的一个分布式流...近日,LinkedIn资深SRE(网站可靠性工程师)JonBringhurst发表了这篇博文,阐述LinkedIn是如何利用Samza与Yarn、Kafka进行扩展的。ApacheSamza是一个开源框架,可以帮助开发者
WikiPedia 技术架构学习分享 Tailrank 网站架构 LinkedIn 架构笔记 Yahoo!社区架构 Craigslist 的数据库架构 Fotolog.com 的技术信息拾零 Digg 网站架构 Amazon 的 Dynamo 架构 财帮子(caibangzi.com)网站架构
linkedin开发者javaone会议报告,阐述了linkedin架构路线图,对于大型WEB站点开发很有参考价值。
使用MERN Stack的Linkedin原型介绍使用Restful Web...系统架构使用的技术叠放使用的技术代管前端与ReduxReact2个AWS EC2实例后端节点js 3个AWS EC2实例消息/队列卡夫卡4个AWS EC2实例数据库MySQL AWS RDS 图形数据库
我们所熟知的,存储虚拟化、ServerSAN、超融合架构(HCI)都是SDS的一部分。2011年8月21日,Netscape创始人马克·安德森(MarcAndreessen,硅谷著名投资人,投资了Facebook、Groupon、Skype、Twitter、Zynga和LinkedIn...
十位两院院士及来自Amazon、IBM、微软、Facebook、LinkedIn、Intel、RedHat、思科、Databricks、新浪、搜狐、中国电信、中国联通、中国移动、百度、阿里、腾讯、京东、360等机构的近百位实践者一起分享了百余场行业...
阿里巴巴高级技术专家、Aliware MQ总架构师、Apache RocketMQ联合创始人、Linux OpenMessaging规范发起人冯嘉(Von Gosling),华为云主任工程师时金魁,过往记忆技术博客博主、Qunar数据架构师吴阳平倾力推荐。...
促成这次架构改造的一项关键的技术就是ApacheKafka消息队列。它不仅成为了我们基础架构的关键组成部分,还为我们正在创建的系统架构提供了依据。ArchSummit深圳2016将于07月15-16日在华侨城洲际大酒店举行,最新日程...
10.2.1 序列化和反序列化技术点64 载入日志文件10.2.2 UDF、分区、分桶和压缩技术点65 编写UDF 和压缩分区表10.2.3 数据合并技术点66 优化Hive 合并10.2.4 分组、排序和explain 10.3 本章小结11 ...
技能与能力热衷于通过代码和基础架构创建可重复的研究,并使用现代云技术开发高级分析解决方案。 具有使用传统SQL(RDBMS),NoSQL和现代云数据仓库技术(如Redshift,BigQuery,Spark,Hive,Drill和Presto)的丰富...
干净的建筑扑扑应用程序 由 , , 和Flutter sdk组成的干净的架构新闻应用程序。 主要目标是使用测试驱动设计风格的架构(受启发)来构建可读取,可维护,可测试和高质量的Flutter应用。... 奥马尔Gamliel - LinkedIn
加入Ray时,他将回顾React的组件架构,并涵盖关键技能,例如处理事件,将代码分解为自定义子组件,使用引用管理表单字段以及设置排序和搜索。 每节课的重点是使用React创建Web界面的细节,因此您将能够轻松地将技术...
这些技术使用AngularJS和... 在此过程中,您将探索AngularJS MVC架构的基础知识以及将自定义用户信息存储在Firebase NoSQL数据库中的步骤。 了解如何创建基本路由以根据目标URL加载不同的内容,以及如何创建基本控制器
Azkaban是Linkedin公司推出的一个任务调度系统,目前在企业中应用非常广泛。对于大数据项目而言,工作流之间互相依赖且通常在零点左右调度执行,一个可以完善部署工作流且能实现报警功能的调度系统十分重要。 本套...
开源世界应该致谢的五家公司 Square、LinkedIn、Google、Facebook... 游戏公司的那些奇葩事 前端开发 跨域方法汇总 JavaScript多文件下载 写一个更好的Javascript DOM库 Hybrid APP开发者一定不要错过的框架和工具 ...
Node.js正迅速成为Web开发社区里最有影响力的技术之一。你一定想快速掌握Node.js,学习如何用JavaScript开发服务器程序。有了这本指南,你就能学会用Node构建高度可扩展的服务器程序,理解它的事件循环架构如何降低...
公司和个人网站是信息的重要来源,查看公司的LinkedIn个人资料,以确定高级经理,董事和非技术人员。 很多时候,最薄弱的密码属于许多公司的管理人员。 搜索公司网站上的“关于我们”页面也可以找到薄弱的目标。 IP...