51CTO博客开发
作者:道业Dubbo的官方首页在这里:http://code.alibabatech.com/wiki/display/dubbo/Home很荣幸,作为这样一款业界使用率和好评率出众的RPC框架的维护者,今天这个文章主要是想帮助那些热爱开源的同学,更好的来研究dubbo的源代码。一、Dubbo整体架构1、Dubbo与Spring的整合Dubbo在使用上可以做到非常简单,不管是Provider还是C
最近在一次压测过程中暴露出notifyclient的一个死锁问题,发生死锁的场景是消息的可靠异步发送,具体过程是:(生产者)消息发送线程拿到队列锁,当队列未满的时候写入消息,释放锁,当队列满的时候,释放锁,等待队列空条件。(消费者)刷盘线程拿到队列锁,当队列有数据的时候,取数据清空队列,释放锁,再把取出来的消息数据刷盘持久化;没数据的时候,释放锁,等待队列非空条件。这是一个典型的多生产者-单消费者
因官方BookPerformanceTuning部分章节没有按配置项进行索引,不能达到快速查阅的效果。所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正。配置优化zookeeper.session.timeout默认值:3分钟(180000ms)说明:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeepe
中间件团队组织的Coding4Fun的第三期已经结束,这次参与的同学很活跃,报名的有20多人,最终有17人在gitlab上提交了代码。把这次活动以及大家的经验总结一下。任务:里有一个大文本,文件请从 http://10.125.9.144:8000/document.zip 获取,在解压后大约有20m(实际比赛时文件是1.1G)。 文本中都是英文单词,空格以及英文的标点符号: [.,;-~"?'!
关于这期的coding4fun,我选择的是hashmap方式实现。整体思路和流程大家可能都差不多,C++同学们的总结写的很好,一些逻辑优化都有总结,我这里介绍下java实现的一些优化吧。使用ByteString代替String开始读出文件转成String对象,然后通过String对象操作,代码写起来都比较方便。但是有一个问题,文件读取出来的byte[]转成String对象非常耗时,一个1G的Str
在这次的coding4fun活动中已经有很多同学分享了精彩的优化思路。我的思路其实大同小异,下面就挑一些于众不同的地方分享吧:第一个不同点:在结构上选择了简化版的Trie作为查找结构。简化版Trie的结构就是一颗n叉树,每个节点对应一个状态。选择简化版Trie的原因是它的树状结构很容易用CAS实现无锁并行,而相比hashtable没有hash冲突和rehash的问题,相比复杂Trie结构如Doub
团队的编程比赛,题目是给一个文本文件,在去掉二十个常用词以后,统计出现频率前十位的词。我采用的是哈希表,c++语言实现。1.使用mmap,将内容映射到内存。2.文本分割,处理边界条件,在ranges[]中指明每个区间的开始和结束位置。3.Worker线程中分块处理,对于每一个单词,在哈希表中相应位置查找,插入。4.Worker线程结束后,得到了有统计结果的哈希表,将结果进行过滤(去掉20个常用单词
近日团队举办了编程比赛,题目是:解析一个大文件,用最快的速度统计出出前频率最高的前十个单词。终最得了第四。这里我说说我的做法:首先,大致看了一下大家的代码,发现大家都是自己去实现多线程的,其实没必要,可以利用openMP只需要几行注解就可以实现并行计算,例如:编译器就会自动编译启动cpu_count个线程来计算,很爽,有木有!编译时只需要加上两个参数就可以了,只是要gcc4.1以后的都支持另外就是
上次我们提到了使用有序的数组来进行二分查找,从而提高映射查询的效率,使时间复杂度从O(n)降低到O(log2N).本周让我来介绍一下二叉树。一谈到二叉树,相信很多人一定会有一个疑问:这玩意儿有什么用?(当然这么多人里面肯定包括大学时候的我--)其实,我个人觉得这并不怪我们,是教科书写的有点问题,开始的时候没有给到大家明确的学习意义,开始就去讲如何遍历,如何从树变森林,如何做树的前序中序后序遍历。但
一般来说,如果你希望数据能够被快速的找到,那么最主要的两种技术手段就是二分查找,或者使用Hash函数。今天来介绍一个最简单的数据结构,有序数组来组织的二分查找,当然,我的主要目标是介绍前人解决问题的思路,而非算法本身,所以不会尝试用比较难理解的公式和伪码来描述问题。使用二分查找的前提条件是:1.数据能够按照某种条件进行排序,比如S={0,1,2,3,4,5,6,7,100,101,102}就是排好
上周是硬件,本周终于来到软件领域,明确的欠一个帐,文件系统这块因为东西比较多,我还没完全总结好,先欠着~本周,让我们做一些准备,来谈谈映射。计算机就是个分型的系统,而映射这种数据结构,是计算机中非常基础和常见的一种数据结构,从cpu到文件存储,再到分布式文件存储,其核心都是映射。抄书:映射就是:使得对A中的每个元素a,按法则f,在B中有唯一确定的元素b与之对应,则称f为从A到B的映射,记作f:A→
照章节目录,本周的主题是SSD。在外面,介绍SSD的文章非常之多,在我的文章里面就不重复其他地方介绍过的知识了。赶在睡觉时间之前发出来,希望大家能够轻轻松松了解点知识,然后合眼睡觉~在本篇文章中,我想着重的分析以下几个问题:1.在不同厂商的实现中,SSD的读写iops为什么会有如此之大的差距?2.SSD的优势在于没有寻道时间了,为什么4K随机写还会是个性能大瓶颈?3.FLASH控制器,看来成败就看
上次介绍了磁盘,这篇来介绍一下RAID要介绍RAID技术的原因,其实是因为目前大部分分布式存储在做的事情其实RAID在很多年前就已经做到了,所以如果你希望做存储相关的事情,那么RAID是必须要理解,但不一定要用到的概念:)计算机要存储和读取数据,主要依托这么两个部件:1.通信管道和通信协议,心灵感应还需要靠电波通信呢不是?~一般来说这通信管道在计算机内就是总线,使用电信号,在计算机外则很多选择,可
原文档见:http://gitlab.alibaba-inc.com/middleware/coding4fun-3rd/blob/master/observer.hany/design.md淘宝中间件第三期编程比赛,题意概述:读入一个文件,统计其中最常出现的前10个单词。系统设计按照题意,可设计如下简单拓扑图。图中方块表示计算节点,箭头表示数据流动。注意:Counter和Selector之间需要
在本章,我们稍微涉及一些硬件和操作系统层面的事情。计算机是由硬件和软件组成的,而所有软件的唯一目标就是尽可能最大化的利用下层硬件能够提供的特性,完成上层的功能。所以才会有人说,硬件是骨头,软件是血肉,骨头决定生物的形态,软件决定生物的神态。不过,依然请放心,我们不会讨论复杂的东西,作为一个软件工程师,也没有人会要求我们去写一个磁盘存储器的硬件驱动代码~在这里,我们只讨论那些为了后面我们理解软件存储
上次我们在最后一部分,给出了一个事务操作的模型和内部简单实现的方式,以期让大家能针对事务有一个比较简单的印象。今天,我就尝试针对事务的基本特性做一个简单的概述。当然,因为仍然是概述,所以不会特别深入的去介绍和分析内部的机制,只希望能够将一些难以理解的概念,用举例子的方式协助大家能够更容易的理解事务的基本概念。 谈到事务,我们要做的第一件事,就是理解,什么叫做事务,以及为什么要有事务。事务这个概念的
在上一章中,我们简单的描述了组成一个小型数据库的核心组成部分,那么在本章,我会用一些常见的操作,将这些组件串联起来,让大家对这些东西如何被有机的组织起来完成了大家的功能的。但需要注意的是,这里面提到的顺序,可能在不同的数据库内会有些许的变化,因为这些组件的执行顺序,没有明确的规范和约定要求某个数据库一定要这样,更多的只是因为数据库发展了这么多年而形成的约定俗成的执行模式场景描述,我们有个关系表叫T
如果想要了解存储,我比较推荐的方式还是从了解数据库开始。从目前来看,数据库发展了这么多年,各种理论相对的比较完善,面对各种应用场景,其核心处理模式也已经非常的成熟了,在新的海量数据的时代,人们只是对扩展性提出了更高的要求,而对数据存储的其他方面却仍然希望能保持之前的水平。 而从目前实际的发展来看,基本上目前发展的核心思路并没有绕开人们在数据库理论领域内所积累的那些关键的特性。因此,如果你希望能够快
上次我们谈到,因为互联网应用的实际需求与传统数据库之间出现了不匹配的情况。 于是,破坏与重构就成为了新时代的主音。对互联网应用而言,最急需的需求,就是处理大量用户输入的海量数据,进行一些逻辑处理后再将结果返回给用户。因此,对于在线数据处理来说,可水平扩展的容量指标,可无限增长的写入tps和读取qps,是互联网企业的最大,最急需的需求。相比较而言,为了追求性能和容量的尽可能最大化,其他的指标则被迫的
为了提升系统的性能,进一步提高系统的吞吐能力,最近公司很多系统都在进行异步化改造。在异步化改造的过程中,肯定会比以前碰到更多的多线程问题,上周就碰到ZooKeeper客户端异步化过程中的一个死锁问题,这里说明下。通常ZooKeeper对于同一个API,提供了同步和异步两种调用方式。同步接口很容易理解,使用方法如下:ZooKeeper zk = new ZooKeeper(...); List ch
她的前身是综合业务部的团队博客,然而我们不仅仅是博客,我们背后是一群有干劲、爱折腾、爱技术的人。所以积累了大量的原创性文章,得到了很多业内朋友的鼓励和肯定。她期待你的目光,心念你的关爱,幻想你的赞美,并期待你的参与。《ITECH》PDF下载地址:http://yunpan.alibaba-inc.com/F2FXBgaS(仅供阿里内部员工下载,域账号登陆)
有人说,旅行最大的好处,不是能见到多少人,见过多美的风景,而是走着走着,在一个际遇下,突然重新认识了自己。额,当然,我们这些粗人没人那么得文艺,其实我们很简单,就是想见见太阳,没错!6月中下旬,当一年一度的梅雨季节光顾杭州,江南梅雨特有的缠绵加上夏天雷雨固有的凶猛,让这座本就不缺雨水的城市,俨然成为了一个水上世界。整天阴雨的天气,倒是在这炎热的天气带来了一丝清凉,可总让人有些压抑与不爽,于是,我们
软负载配置中心-Diamond:Diamond用于存储静态配置,并能够提供配置变更动态推送功能,结构简单,超高可用性。在全网被使用于存储不经常发生变化的配置信息。开源介绍:http://code.taobao.org/p/diamond/wiki/index/联系人:九任(email:jiuren@taobao.com)雷文(email:leiwen@taobao.com,新浪微博:chrisre
杭州的雨季就要过去了,又到了小动物们交配觅食的季节,工程狮和程序猿们又开始活跃起来……公司免费T恤加上满头蓬乱的发型,再来一双开了线的人字拖,霸气四溢,痞气横流;路上行人避之不及。他们自诩屌丝吃货,游走于街坊小店和各个小区餐馆,治国方略,公司业务,买房生子,再到DOTA战术无所不谈,选几个周围狮猿常去的地方给大家,广告嫌疑略重,都是淘宝商品团队的精选场所,送给有需求的朋友们。---------割割
上回我们说到随着互联网的爆发式发展,数据库概念领域又一次发生了摇摆,伴随着互联网的特殊需求,一批有着新鲜血液的NoSQL数据库涌现了出来,层次模型又从封印中苏醒,站在了大家面前。这里就自然而然会有一系列的疑问产生了出来,为什么层次模型变种的NoSQL会出现并得到了一些人的认同?他满足了什么需求?关系模型在什么地方不能满足大家的需求了?那么,我们就从应用场景出发,尝试回答一下这些问题吧。提到NoSQ
本文曾发表于2013年4月的《程序员》杂志近年来,随着用户数和PV的增加,淘宝网的后端服务器数量增长很快;并且我们知道,Web页面延迟时间和转化率之间有着直接的关联。出于提升系统吞吐量、降低成本、减少页面延迟、提升用户浏览体验、提高交易转化率的考虑,淘宝网在性能优化领域做了很多尝试。本文将从应用性能分析、基础设施优化、应用自身优化、前端性能优化这四个方面,对淘宝网的优化尝试做一个总结。应用性能分析
说起淘宝网用户串号,我的印象里技术bug原因的有两起。2010年,这个串号持续的时间比较长,我估计应该存在几年时间了。从淘宝的论坛里隔三差五会爆出案例来,xxx突然在访问我的淘宝页面时进入了别人家的账号,第一感觉是发现“所有已买到的,或者已卖出的商品”都不是自己的,并且可以对这些信息进行任意的操作,比如删除,下架。另一起是,淘宝2012年11的时候爆出来的串号,突然有个卖家告诉我他进入了别人的店铺
自从NoSQL概念横空出世,关系数据库似乎就成了众矢之的,似乎一夜之间,关系数据库和SQL就成了低效,高成本,速度慢的数据处理模式的代名词。在很多地方都能看到类似:”我的项目初创,应该选择什么NoSQL产品才能快速的开发?”这样的问题。正因有人提出这样的问题,才坚定了我把这篇文章放在了第一章的决心。主要的目标是希望借助这样一个形式,让大家能够比较清晰的认识到类似NoSQL,SchemaFree,R
(一)数据层产品——TL沈询1)TDDL/Cobar/malanda/TDDLSequence分布式数据层对应cobar特性是无server.多层结构支持直接简单主备Mysql直连。也支持分库分表。还有sequence。都是这套组件上的东东啦。相关文档:http://baike.corp.taobao.com/index.php/TDDLTL:沈询主要联系人:君瑜捷辰雷文齐昊ata:http://
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号