相关推荐
-
电子商务平台技术选型和架构设计
最终一致性(Eventually consistent)意味着系统保证数据最终一致性,系统的数据副本不会因为网络通信延时或其他原因而超前于数据真实状态,系统组件在任何时刻都可以访问到最新的数据副本。 2.2.11 API API...
-
分布式数据访问层(DAL)
概述分布式(Distributed)数据访问层(Data Access Layer),简称DAL,是利用MySQL Proxy、Memcached、集群等技术优点而构建的一个架构系统。主要目的是为了解决在高并发、大数据流操作遇到的和数据访问有关的诸多问题...
-
专访:采用分布式数据访问层
【IT168 报道】分布式(Distributed)数据访问层(Data Access Layer)(以下简称DAL)是综合MySQL Proxy、Memcached、集群等等技术优点而构建的一个软件系统。目的是为了解决在构建大中型网站时遇到的和数据访问有关的...
-
卷积神经网络超详细介绍
海量的有标记的训练数据,也就是李飞飞团队提供的大规模有标记的数据集ImageNet计算机硬件的支持,尤其是GPU的出现,为复杂的计算提供了强大的支持算法的改进,包括网络结构加深、数据增强(数据扩充)、ReLU、...
-
这一年,这些书:2022年读书笔记
Note: 以下 `markdown` 格式文本由 `json2md` 自动转换生成,可参考[JSON转Markdown:我把阅读数据从MongoDB中导出转换为.md了](https://blog.csdn.net/u013810234/article/details/113360229)了解具体的转换过程。...
-
Robot Operating System 2: Design, Architecture, and Uses In The Wild
主张以下原则: 分布式 与类似的复杂领域一样,机器人技术中的问题最好通过分布式系统方法来解决[23]。需求被分成功能独立的组件,例如硬件设备驱动程序、感知系统、控制系统、执行程序等。在运行时,这些组件有自己...
-
Chubby — 用于松耦合分布式系统的锁服务
例如,一个应用程序可能使用锁来选举一个primary,然后这个primary在一段相当长的时间可能是数小时或数天里,处理所有对数据的访问。这两种使用方式意味着对锁服务器的不同的需求。 粗粒度的锁在锁服务器引入的负载...
-
网摘
采访分布式数据访问层(Data Access Layer)作者许超前 http://www.javaeye.com/wiki/interview/1931-data-access-layer nginx, lighttpd, squidhadoop, cassandra http://nginx.org/http://www.nginx.com.cn/ http
-
Linux 操作系统原理介绍
地址总线指定了数据传输的内存位置(地址),数据总线保存了传输的数据。数据总线是双向的,它允许CPU读取,也允许CPU写。控制总线包含了各种信号线用于在系统中发送时钟和控制信号。有许多种不同的总线类型,ISA和...
-
大数据的概述
在分布式计算中,由于数据量的大小及格式超出了典型数据库软件的采集、存储、管理和分析等能力,因此需要采用新的技术来完成当前数据量的处理及分析,于是大数据(BgDaa)技术就应运而生。 一、大数据的产生 大数据:就是...
-
集成电路芯片半导体中英文对照术语词汇表
data center 数据中心 data center 数据中心 data communication 数据通信 data flow 数据流 data hungry 需要大量数据的 data line 数据线 data mask 数据掩码 data path|datapath 数据路径 data preamble 数据前...
-
(转)Linux Kernel核心中文手册
微处理器处理二进制数据:这些数据由 1 和 0 组成。这些 1 和 0 对 应电气开关的开或关。就好像 42 代表 4 个 10 和 2 个单元,二进制数字 由一系列代表 2 的幂数的数字组成。这里,幂数意味着...
-
基金会总线协议分析(FF协议)
FF协议 一、总体介绍 基金会总线(FF, Foundation Fieldbus)是在过程自动化领域得到广泛支持和具有良好发展前景的技术。其前身是以美国Fisher-...它以ISO/OSI开放系统层上增加了用户层。用户层主要针对自动化
-
计算机网络I-考前指导复习提纲
每一层的地址: domain name域名:应用层(application) port端口第四层(OSI的)(transport) IP地址是第三层(network) MAC地址:第二层(TCP/IP的network access) What network devices are operating at each layer?...
-
左耳听风——笔记二:程序员练级攻略
经典图书 经典论文 分布式事务 Paxos 一致性算法 Raft 一致性算法 Gossip 一致性算法 分布式存储和数据库 分布式消息系统 日志和数据 分布式监控和跟踪 数据分析 与编程相关的论文 其它的分布式论文阅读列表 小结 ...
-
四川大学软件学院操作系统笔记
关于作者 操作系统分数:96/100 友链 可以结合 yy 同学的中文笔记,很详细:四川大学软件学院 操作系统 期末复习知识点202302 这篇博客的使用方式 此博客笔记结合《操作系统——精髓与设计原理(第九版)》英文版和 ...
-
DRBD9用户指南
处理过时数据的策略. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.16. 三路叠加复制. . . . . . . . . . . . . . . . ...
-
硬件工程师学习英语必备
1 - 英文电子专业词汇(硬件工程师学习英语必备) 1 backplane 背板 2 Band gap voltage reference 带隙电压参考 3 bench top supply 工作台电源 4 Block Diagram 方块图 5 Bode Plot 波特图 6 Bootstrap 自举 ...
-
关于Internet的92问与答
1.什么是Agent(代理程序) 答: Agent(代理程序)是在客户机/服务器计算模式中,为客户机端程序或服务器端程序作数据准备和数据交换的系统部分。例如,在一些数据库查询系统中,用户可以采用自己喜欢的格式提出查询...
32 楼 Qring 2009-10-10 14:09
31 楼 wzjin 2009-10-09 11:49
30 楼 许超前 2009-09-29 01:16
谢谢
29 楼 许超前 2009-09-29 01:10
一)
这么多个业务范围,都很复杂吗?新浪的业务范围更多,,,,如何切分业务,,,应用切割,
我想您应该相信手机之家的研发团队在这些个方面的认知和经验。您不妨访问一下手机之家网站http://www.imobile.com.cn/,尤其是全动态的论坛http://bbs.imobile.com.cn/。方便的话开一下YSLOw,观察一下展现速度。
二)您的言语里多次出现Cache这个字眼,我想这是很多做网站的技术人员的共识。正是因为Cache如此重要,所以DAL集成了Cache(可以内置也可以外延),这个Cache对应用来说是透明的。
三)至于您关心的命率问题,我在这里稍微描述一下。手机之家现在有4组DAL服务,以下是自近期升级或reload(重载配置和元数据)以来的Cache命中率统计:
a)
[rowCacheHits] => 1999443615(96.53%)
[rowCacheMisses] => 71820652(3.47%)
b)
[rowCacheHits] => 728834651(82.44%)
[rowCacheMisses] => 155230407(17.56%)
c)
[rowCacheHits] => 717269426(93.35%)
[rowCacheMisses] => 51101159(6.65%)
d)
[rowCacheHits] => 217927450(74.06%)
[rowCacheMisses] => 76326220(25.94%)
其中,b组服务命中率低的原因是:上面跑的是论坛,全动态的,更新频繁;
d组服务命中率低的原因是:应用层又做了缓存了,到DAL这边基本上都是之前未曾有过的请求。
四)
我就是觉得他们的思路是有问题,解决什么问题,
一)如何降低CPU负载及减少内存占用。
二)如何提高查询条件的分析速度。
三)如何更有效地路由到相应的库和表上。
四)如何提高缓存的命中率。
五)如何更有效的进行数据复制。
这五个是难点吗?
DAL发展至今,在大架子基本上敲定的情况下,这5个对我们来说已经成为重难点。最近,DAL已经部署到外部的项目上,我更是觉得做产品到了后来就是做细节了。
至于,我为什么这么说,也是有依据的。
1)DAL的缓存占用现在已经比较可观了,如何减少内存占用已经成为一个重难点。
以下是手机之家网站4组DAL缓存占用情况:
a)5.2G, b)12G, c)3.7G, d)6.2G。
缓存大了,是有喜也有忧。喜是因为数据被缓存了;忧则是担心进程出问题。不过,就目前来看,表现还不错,运行很长一段时间才会出现对老代的收集。一般耗时在0.2秒以内,我们认为是可以接受的。同样是4组缓存服务的垃圾回收情况:
a)
430610.121: [GC 430610.121: [ParNew: 970596K->44174K(990336K), 0.0256880 secs] 4481307K->3554885K(5184640K), 0.0258610 secs] [Times: user=0.19 sys=0.00, real=0.03 secs]
430620.486: [GC 430620.487: [ParNew: 976270K->48820K(990336K), 0.0262000 secs] 4486981K->3559531K(5184640K), 0.0263790 secs] [Times: user=0.19 sys=0.00, real=0.03 secs]
430634.904: [GC 430634.904: [ParNew: 980916K->50728K(990336K), 0.0299380 secs] 4491627K->3562274K(5184640K), 0.0301230 secs] [Times: user=0.21 sys=0.00, real=0.03 secs]
430647.934: [GC 430647.934: [ParNew: 982824K->37053K(990336K), 0.0329200 secs] 4494370K->3550926K(5184640K), 0.0331400 secs] [Times: user=0.22 sys=0.00, real=0.03 secs]
b)
416275.295: [GC 416275.295: [ParNew: 990336K->48297K(990336K), 0.0973960 secs] 10629874K->9712340K(12524672K), 0.0974940 secs] [Times: user=0.54 sys=0.02, real=0.09 secs]
416300.211: [GC 416300.211: [ParNew: 980393K->58240K(990336K), 0.1081660 secs] 10644436K->9750993K(12524672K), 0.1082560 secs] [Times: user=0.57 sys=0.02, real=0.11 secs]
416323.653: [GC 416323.653: [ParNew: 990336K->58240K(990336K), 0.1131280 secs] 10683089K->9781286K(12524672K), 0.1132320 secs] [Times: user=0.63 sys=0.02, real=0.11 secs]
416344.535: [GC 416344.535: [ParNew: 990336K->45931K(990336K), 0.1059780 secs] 10713382K->9796606K(12524672K), 0.1060800 secs] [Times: user=0.60 sys=0.02, real=0.11 secs]
c)
430107.117: [GC 430107.117: [ParNew: 488106K->27846K(495168K), 0.0482880 secs] 3289951K->2832064K(3640896K), 0.0485100 secs] [Times: user=0.15 sys=0.00, real=0.05 secs]
430124.541: [GC 430124.541: [ParNew: 493894K->19566K(495168K), 0.0484850 secs] 3298112K->2827443K(3640896K), 0.0487180 secs] [Times: user=0.15 sys=0.00, real=0.05 secs]
430140.861: [GC 430140.862: [ParNew: 485614K->22204K(495168K), 0.0491390 secs] 3293491K->2832961K(3640896K), 0.0493860 secs] [Times: user=0.16 sys=0.00, real=0.05 secs]
430155.071: [GC 430155.071: [ParNew: 488252K->22652K(495168K), 0.0585010 secs] 3299009K->2837236K(3640896K), 0.0587300 secs] [Times: user=0.17 sys=0.00, real=0.06 secs]
d)
346635.015: [GC 346635.015: [ParNew: 985396K->51289K(990336K), 0.0575730 secs] 5606751K->4682230K(6377232K), 0.0577020 secs] [Times: user=0.32 sys=0.01, real=0.06 secs]
346684.600: [GC 346684.600: [ParNew: 983385K->58240K(990336K), 0.0652490 secs] 5614326K->4701406K(6377232K), 0.0653740 secs] [Times: user=0.35 sys=0.02, real=0.06 secs]
346737.473: [GC 346737.473: [ParNew: 990336K->42276K(990336K), 0.0550940 secs] 5633502K->4694264K(6377232K), 0.0552260 secs] [Times: user=0.31 sys=0.01, real=0.05 secs]
346784.224: [GC 346784.224: [ParNew: 974372K->37784K(990336K), 0.0535490 secs] 5626360K->4698018K(6377232K), 0.0536790 secs] [Times: user=0.30 sys=0.00, real=0.06 secs]
看起来还可以,但是我认为还是有提升的空间,最近一直在弄这个问题。
2)DAL2.x性能相比DAL1.x有了提升,但还不够,我们和Memcached比起来还有一点差距,profile了一下,发现瓶颈在查询分析上。但问题是查询我已经做了一定的优化。
以下是一些在Linux Imobile-11 2.6.18-128.7.1.el5 #1 SMP Mon Aug 24 08:21:56 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&jdk6上运行的统计数据:
1)复杂情况:id IN (6, 7, 8, 9) AND (a>b AND (c IN (1,2,3,4) OR d NOT LIKE "ab%" OR e<=3) OR f=6) or id=4
10000000(1千万)次单线程建树耗时测试。
10377ms 963669.654042594棵/s
10265ms 974184.120798831棵/s
10286ms 972195.216799533棵/s
2)通常情况: siteId=1 OR cateId=5 AND publishTime<=1251216000 AND articleType=2
10000000(1千万)次单线程建树耗时测试。
3840ms 2604166.666666667棵/s
3705ms 2699055.330634278棵/s
3769ms 2653223.666755107棵/s
3)简单情况: postId=1
10000000(1千万)次单线程建树耗时测试。
647ms 15455950.540958269棵/s
644ms 15527950.310559006棵/s
643ms 15552099.533437014棵/s
要想在性能上和Memcached不相上下,查询分析自然也成了重难点。
DAL2.x是有了相对较好的实现,但在这点上,DAL还有提升的余地,这也是我博客上迟迟没有后续更新的一个原因,因为我认为还没达到预期的目标。
3)至于3、4、5,我说一下3,其它的就不在这赘述了,时间不早了。
选择合适的库和表,不仅要考虑schema是否匹配,还要考虑索引是不是合适,以及是不是能产生最优的结果。最优选择往往是一个困难的过程,但索引选的不好,在表比较大的情况下,我想后果大家都知道。这也是我把它列为重难点的原因。
28 楼 许超前 2009-09-29 01:09
谢谢
27 楼 许超前 2009-09-29 01:08
26 楼 kingrom 2009-09-28 14:39
这么说吧,一个Data Access Layer群,只能解决业务数据整合的概念,并不能对业务切分,应用切分。所以啊我觉得他考虑的不够周全,不稳重。。。。
25 楼 kingrom 2009-09-28 14:29
* 首页
* 手机大全
* 选机中心
* 手机新闻
* 3G
* 手机游戏
* 手机软件
* 手机彩图
* 和弦铃声
* 手机主题
* K-JAVA
* 电子书
* 交易
* 软件签名
* 软件检测
* 答题赢奖
* 手机论坛
这么多个业务范围,都很复杂吗?新浪的业务范围更多,,,,如何切分业务,,,应用切割,
24 楼 dennis_zane 2009-09-28 14:00
我就是觉得他们的思路是有问题,解决什么问题,
一)如何降低CPU负载及减少内存占用。
二)如何提高查询条件的分析速度。
三)如何更有效地路由到相应的库和表上。
四)如何提高缓存的命中率。
五)如何更有效的进行数据复制。
这五个是难点吗?
我看了从头看到尾巴,就没有看出什么新思路出来,,,还分布式数据访问层。。。看不出来。轮子。。知道不。。。
是没有什么新思路,然而如果能将上面5个问题解决好就已经非常了不起。真正的问题在于,我们不知道超前已经实现到什么程度,DAL是如何解决这5个问题,这部分没有谈,而这个才是我关心的。考虑到这只是一个访谈介绍,你也不能指望别人透漏什么,毕竟不是开源的东西,有兴趣你完全可以找他私人聊聊。
至于是不是轮子,我不敢下结论,我们公司内部也是在做此类分布式的数据访问层,每个公司遇到的情况不一定相同,通用的产品总有一些不适宜或者不趁手的地方,因此另起炉灶也不是什么特别奇怪的事情吧,我们还自己搞MQ呢。
23 楼 kingrom 2009-09-28 13:53
我就是觉得他们的思路是有问题,解决什么问题,
一)如何降低CPU负载及减少内存占用。
二)如何提高查询条件的分析速度。
三)如何更有效地路由到相应的库和表上。
四)如何提高缓存的命中率。
五)如何更有效的进行数据复制。
这五个是难点吗?
我看了从头看到尾巴,就没有看出什么新思路出来,,,还分布式数据访问层。。。看不出来。轮子。。知道不。。。
22 楼 dennis_zane 2009-09-28 13:35
就象个傻子,要自己写个框架出来,不借用其他的框架。这个架构是不可取的。
你看看现在的企业项目或者老外的项目,尽可能的简单化。4年的工作经验就象一张白纸,
你认为你称职吗?怎么样,就鄙视你。
你这人可真莫名其妙,我都看不下去了,你在质疑什么?说了一通废话之后就开始人身攻击了?你说别人不规范,超前问你是什么规范,你又顾左右而言他扯一些众所周知的常识来质疑别人,你看看你的逻辑站不站得住脚。
21 楼 kingrom 2009-09-28 12:49
就象个傻子,要自己写个框架出来,不借用其他的框架。这个架构是不可取的。
你看看现在的企业项目或者老外的项目,尽可能的简单化。4年的工作经验就象一张白纸,
你认为你称职吗?怎么样,就鄙视你。
20 楼 kingrom 2009-09-25 11:43
你这个你没有考虑到,最大化地提高查询的效率是1、对分库分表的结构拆分精简,2、应该对查询的语句进行优化,
做产品与做项目是两回事,你开发DAL是为了解决什么问题?效率?高可用性?良好的性能?易于编程?安全?
19 楼 许超前 2009-09-24 01:41
一)不知您所说的规范是指什么?
二)DAL可以选择是否开启Cache。
三)DAL2.x并不是为某一个项目或系统专门定制的。目前已经有几个项目在使用。
四)对于这个采访里的言辞,我已经非常谨慎了,怕的就是夸大其辞、误人子弟。如有谬误,烦请指正,本人诚心接受,谢谢。
18 楼 tianyue 2009-09-21 16:05
17 楼 kingrom 2009-09-20 13:39
16 楼 kingrom 2009-09-20 13:28
这个应该重写了DATA ACCESS LAYER ,CACHE缓存应该是自己写的,很多地方感觉你们的DATA ACCESS LAYER不是很规范,纯粹是以项目做的。解释的也不是很清楚及理解错误。
15 楼 许超前 2009-09-18 01:40
@axxxx2000
您好。
@mpl398235717,mudong , 超级潜水员
DAL现在是还没放出来,有些特性需要完善,还有些特性需要添加。
预计是年底或明年年初,能有个说法。
不过,在这之前,我会以其它的形式,比如发Blog、参加会议等和大家一块分享、讨探一些想法和做法。
@Arbow
别这么说自己。我只是想把这个软件做好。
@dennis_zane, lordhong, keating,fangwei,C_J
谢谢。
14 楼 C_J 2009-09-18 01:01
13 楼 fangwei 2009-09-17 12:38
许超前:每周大概80个小时左右。
嗯,我等每周40小时的民工就是没得比
真是强大... 佩服~~~~~
景仰之
12 楼 七月十五 2009-09-16 20:59
有了DAL,经后大家架构的时候就有思路了
为什么一定要求源码呢?
11 楼 mpl398235717 2009-09-16 11:07
10 楼 mpl398235717 2009-09-16 11:06
9 楼 wxq594808632 2009-09-16 10:41
想办法让老人多发言,同时也给新人提供一个学习成长的地方。比如可以弄个师徒频道(有点SNS的味道),老人可以招学徒,新人可以拜师傅
这个很期待。。
8 楼 axxxx2000 2009-09-16 10:00
7 楼 keating 2009-09-16 08:49
还差3小时!
6 楼 lordhong 2009-09-15 22:04
许超前:每周大概80个小时左右。
嗯,我等每周40小时的民工就是没得比
真是强大... 佩服~~~~~
5 楼 超级潜水员 2009-09-15 16:54
4 楼 mudong 2009-09-15 16:04
3 楼 gmizr 2009-09-15 15:48