说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

细品这杯香浓的咖啡——阿里中间件高级专家沈询的Java之旅

HTML文档下载 WORD文档下载 PDF文档下载
一叶知秋,回顾我的Java之路,最感谢还是阿里巴巴能够给我们这些技术人员创造出这样有挑战的业务场景和业务需要,也感谢有这样一群人能够为了这个目标一起努力到现在。

Java的不解之缘

看到这个专题名字的第一眼,真是感慨万千:Java已经有20年历史了啊,我竟然也用了这语言8年了,真是转眼一瞬。

王晶昱(花名:沈询)

回想起8年前的我,应该是正在大学宿舍里努力地从网上搜索C语言的各种教程,在“值传递和指针传递的区别是什么?”“如何避免引用计数循环引用?”等问题中东突西撞不得要领吧。然后在某天,我偶然间看到了一门据称比C++简单的Java语言,恰巧还碰上一个好老师——莫倩老师,自然而然地激发起我去了解和学习Java的兴趣。现在还记得当时在学习《ThinkinJava》时,我还不是特别理解BruceEckel介绍Java与C++的差别时提到的一句话:“Java是一种生产力语言”。当时我看着这句话,心里一直在想:语言嘛,应该大同小异,能有什么生产力提升?一个解释型语言怎么可能超越编译语言呢?

转眼,我使用Java已有8个年头了,现在想想,Java真的带给了我很多:它尽可能地避免我写出错误的代码。它不需要我去计算指针偏移量,也不需要我去关心垃圾回收问题,连Collection类都有DougLea这样的大神做好了封装。这些语言内建机制和类库极大地减轻了我的头脑负担,让我能够更加专注地完成业务逻辑。而最让我惊喜的是,Java一直不懈地追求JVM虚拟机的持续优化,各种眼花缭乱的锁优化、动态字节码编译调优、GC新算法等JVM优化层出不穷。

在最近的几年,我也可喜地看到,在Oracle的带领下,Java语言的演进变得非常迅速。当我还在熟悉Java7的forkJoin框架的时候,支持Lambda的Java8已正式发布了。

现在,我也想从我个人角度,给Java点个赞。确实,对我而言,这是一门生产力语言,而Java也成功地帮助阿里巴巴、淘宝走过了高速发展时期,并造就了我们阿里的一支明星团队:阿里巴巴-共享业务-中间件和稳定性平台。

说起这个团队,其实它在内部的名字一般称为Java中间件。你看把Java放在了团队的名字里,这就是真爱啊!从2007年开始,我们就逐渐发现,外部企业级中间件并不是非常适合我们互联网业务的实际发展需要。面对着每年翻番的用户量和用户请求,我们不得不开始进行分布式应用体系的探索。当时可真是没什么能够参照的,全都得靠自己去探索,经过了三年多不断摸索,我们彻底地将系统进行了服务化、分布式改造。


目前,整个阿里集团几乎所有的应用都在使用这些中间件。我想,这也是阿里技术体系的精华所在吧。

最近这几年,阿里的核心技术体系架构已经非常稳定可靠了。我们又在这些核心中间件的基础上,不断地深入细化运维体系,尽可能地做到自动化、智能化,为集团节省了比较多的设备成本和运维成本。在2015年,Java中间件更是响应了阿里集团上云的梦想,将阿里集团七年的技术积累,一股脑地搬到了云上,目前所提供的主要产品有:企业分布式应用服务(EDAS)、分布式关系数据库(DRDS)、分布式消息服务(ONS)。它们都是使用Java编写的,为大家量身定做的分布式中间件,与互联网应用体系相结合,能够非常轻松地实现企业IT架构的随需定制和可线性扩缩。如果大家有需求,可以按照自己的需要来进行选择。

Java一起成长

能够取得这样的成绩,Java功不可没。除了我上面提到语言特性对我们的帮助之外,在团队之中,我们也非常关注整个Java的生态体系。基本上,无论我们有什么新的想法,都可以立刻在Java的开源世界中找到对应的一些实现,里面有很多还非常靠谱,Netty、Tomcat、Ibatis、Hibernate、Spring、Struts、ZooKeeper、Hadoop、Mahout、Cassandra……我能举出无数的开源软件,它们都对我们的平台积累起到了非常大的作用。

同样的,我们也在积极尝试将自己系统的积累反馈回到社区里,大家可以在github.com/alibaba下面找到很多我们开源出来的软件,在这里面我想特别的提几个:RocketMQ(消息队列)、Druid(连接池)、FastJson(JSON解析引擎)、Dubbo(RPC框架)等等。这些开源软件与其他友商的各种开源、闭源的Java软件一起丰富了Java生态体系,也让我们解决问题变得更加轻松。

对我个人而言,Java的生态体系之所以能够这样丰富,主要原因在于它编写一次、多点运行的特性,以及一直坚持着的向下兼容能力。这些都非常有利于Java生态体系的积累和演进,也造就了现在如此丰富的Java开源软件环境和体系。

提到Java的向下兼容能力,我也想稍微聊一下我的看法。我经常能看到很多人谈到,Java的历史包袱太重了,为了兼容这些历史遗留的包袱,Java的演进已经非常困难,这会导致Java语言的崩溃。针对这个问题,我个人的看法是:首先,Java作为一个被这么广泛的使用的语言,有着这么深厚的系统积累,完全不考虑系统的兼容性而演进整个系统,这其实是比较危险的,对其他革新进行兼容并包可能才是它最好的发展方向。就目前而言,我几乎没看到过哪个语言能够比较好地解决这种语言升级所导致的软件断层问题,所以,更多的只是两害取其轻的过程吧。同时,我也非常高兴地看到,依托于JVM,我们有了大量的新的语言实现,这里面有Groovy,Scala,JPython等等。它们都非常优秀,这些新生的语言与Java一起,进一步丰富了整个Java的生态体系,也更加坚定了我对Java生态体系的信心,它一定还能再战十年!

寄语现在,展望未来

一叶知秋,回顾我的Java之路,最感谢还是阿里巴巴能够给我们这些技术人员创造出这样有挑战的业务场景和业务需要,也感谢有这样一群人能够为了这个目标一起努力到现在。

能够跟这些大牛们一起工作,耳濡目染,不断提高,是我的工作生涯中最为宝贵的一笔财富。而如果能够回到过去,我最想告诉8年以前的自己:“要买房!”

笑~~

其实是:“还是要特别注重基础,操作系统、网络、算法数据结构、离散数学、数据库原理与实践,这些看起来枯燥而无味的基础科学,是我目前感到知识最为匮乏,但却最为急需的部分,要了解它们是必须付出非常多的时间才有可能理解通透些。而这些基础的扎实程度,就直接决定了你的高度”。可惜,我没办法在21天内学会C++,这些建议,也就只能提供给还有机会实践的各位做参考了。

作者简介:王晶昱花名沈询,阿里高级专家,来自阿里巴巴中间件和稳定性平台。目前主要负责阿里的分布式数据库DRDS(TDDL)和阿里的分布式消息服务ONS(RocketMQ/Notify)两个系统。


本文选自程序员电子版2015年5月B刊,该期更多文章请查看这里。2000年创刊至今所有文章目录请查看程序员封面秀。欢迎订阅程序员电子版(含iPad版、Android版、PDF版)。

快速大量地更改控件内容-Delphi资料 快速动态创建MenuItem-Delphi资料 利用Delphi 5中调用Excel 97 利用Delphi的Tbitmap控件抓取屏幕图象 利用delphi美化你的菜单 面向组件的系统开发方法-Delphi资料 强大的树型编程控件TeeTree1.01-Delphi资料 确定MEMO控件中的当前行和列-Delphi资料 让字体左、右对齐-Delphi资料 如何给TListBox加上水平的滚动条?-Delphi资料 如何快速选择一个组件的父亲-Delphi资料 如何用Delphi编写自己的可视化控件 如何用VB创建控件-Delphi资料 生成程序组和项-Delphi资料 实现超级链接-Delphi资料 实战Delphi数据网格色彩特效 使dbgrid的某几笔资料变色-Delphi资料 树形图(Treeview)的使用概述-Delphi资料 透明FORM-Delphi资料 为列表框添光彩-Delphi资料 限制FORM的大小-Delphi资料 用Delphi开发分隔线组件 用Delphi设计拨动、跳线开关组件 用Delphi 设 计 拨 动、 跳 线 开 关 组 件 用Delphi实现JPEG格式图像的显示 用Delphi制作动态有声标签 运行时生成控件-Delphi资料 在DBGRID中实现COPY、PASTE功能-Delphi资料 在Delphi程序的About窗口中建立URL连接 在Delphi中利用Tbatch组件完成数据批处理 在Delphi中巧改窗体文件实现控件数组化 水平考试与资格考试及格分别是多少分? 如何再网页中实现打印功能,份也打印。 我发现了一个网站的BUG,我该怎样进去? 到处都是泡泡,俺看的想吐,晚上再来算了。 怪事, 屏幕变黑白 我的问题_6 MYSQL中like的问题 请教打印预览问题 请问,如果我想把,file edit tools window这个主菜单栏动态去掉,怎么做? 如何用程序代码实现在Memo文本编辑框中被选中的文字加下划线。 怎样分析tcp报文(我很急呀) *.idl文件如何使用? 各位大侠,怎么写一个php在线打分的程序阿? 我测试一下 感兴趣的去试试! IE外壳扩展的程序 Delphi 6.0的一个Bug??? 我怎么把字符串放进缓冲里?急急急!!! 恭喜 zhipop 喜得漂亮的可爱的千金 几个小问题想请教大家 如何将浏览器的地址栏里的IE图标换成自己的图标? r俺明天想去给我的宝马生生级,不算显示器,3000元左右,请各位大侠们赐教该什么配置 2000下写的程序,NT 4.0workstation上为什么不能跑? 启用新主页下载数据窗口编辑器 请教Qbasic中的几个问题..... 用BCB如何向Oracle8.0.5中更新BLOB 用ODBC编程时发现错误:nvarchar 类型无数据类型同其绑定,用CString 出错!如何解决? 救命,救命!!!!!!!!!!!! 【 这两天好像来了很多新人嘛!来报个到吧! 】 请教:如将一个 FormView 的 ScrollBar 去掉 在asp中怎么定义可变长的数组? 关于文本框的问题(你能回答吗?) X档案第三季有一集叫《网络情人》,讲的什么内容? 如何登陆interbase de local server? 确定星座是按农历,还是公历????? 请问哪里能买到苹果7300主板,大概多少钱? vc高手快来帮我 我可以通过style定义普通字体的大小,却不能定义表格中字体的大小 BDE + SQL AnyWhere6.0问题!求救!SOS! 最新消息:泡泡是个PLMM 如何实现关机前所有文挡的自动保存 兄弟要进行一项庞大的工程 . 输全国县以上地区的编码. 我用powerbulider设计了一个报表,如何能在vc程序中使用这个报表 如何用回车键代替tab键在sle之间移动焦点 讨论:关于翻译英文文章的版权问题????????? 【 本人收到N多从+888发来的短信息,内容是:此信息无法显示!Faint! 】 如何将程序做成30天的试用版本并禁止拷贝? 请问select top 10 * from table order by time , time字段有很多相同记录 如何能得到UNIX下的C语言编程软件及书籍? how to install XWindow at RedHat7.1 with NVIDIA GeForce2 MX 在win2000上使用什么即时查杀病素的软件 500克等于多少个100毫克 现有0.1摩尔每升硫酸钠额溶液300毫升,0.1摩尔每升的硫酸镁溶液200毫升和0.1摩尔每升的硫酸铝溶液100毫升,这三种溶液中,硫酸根离子的浓度之比是()A.1:1:1 B 3:2:2 C.3;2:3 D 1:1:3 小学单位换算公式 2000毫升水有多少千克此问题对我很严重.还请各位尽量回答我. 1摩尔每升的碳酸钠100毫升,加入50毫升2摩尔每升的硫酸钠,将所得溶液稀释到200毫升我算的答案是2摩尔每升,老师说不对, g和ml怎么换算? 50毫升B摩尔每升的ALCL3溶液加入50毫升A摩尔每升氢氧化钠溶液当A小于等于3b时生成氢氧化铝的沉淀物质的量 配置500摩尔每毫升的Na2SO4溶液,需要硫酸钠的质量是多少克?配置500mL0.2摩尔每毫升的Na2SO4溶液,需要硫酸钠的质量是多少克? g跟ml要怎么换算啊? 向20毫升氯化铝溶液中滴入2摩尔每升氢氧化钠溶液时,沉淀质量与所滴加氢氧化钠溶液体积(ml)铝离子完全沉淀时沉淀质量为0.78g,假设溶液中有氢氧化铝0.39克,则此时用去氢氧化钠溶液的体积 吨,升、立方米、立方分米、立方厘米、克、毫克,换算如题 ug/ml和mIU/L的换算公式 向20毫升氯化铝溶液中滴入2摩尔每升的氢氧化钠溶液时,得到氢氧化铝沉淀的质量与所滴加氢氧化钠溶液体积关系如图所示.(1)图中A点表示的意义是____________.B点表示的意义是____________.(2)上 每立方厘米0.16毫克换算成千克每立方米 换算~l和ml100ml药兑水2000l那80ml水加多少药?是80ml水~不是80ml药~ 如何配置0.5摩尔每升的无水碳酸钠溶液500毫升 例如1A= mA = uA1V= kV请各位给我初二全部物理的单位换算,进率 我的药物浓度是:6mg/ml 分子量为150kd .换算成mmol/L,怎么换算啊?换算公式是什么? 实验室用NaCO3·10H2O 晶体配制500毫升0.1摩尔每毫升的碳酸钠溶液 应称取NaCO3·10H2O 多少克 物理上单位换算一千米每时等于多少米每秒? g到斤的换算公式 取500毫升碳酸钠溶液与300毫升浓度为一摩尔每升的盐酸反应,在不断搅拌下将碳酸钠溶液逐滴滴入盐酸中与将盐酸滴入碳酸钠溶液中,所产生气体的物质的量之比为3:2.则碳酸钠的浓度是多少? 物理单位换算关系 g、μg的换算公式谢谢了,1克=1000毫克 1毫克= μg 配制500毫升2摩尔每升的硫酸溶液需浓度为百分之九十八,其密度为1.84克每立方米的浓硫酸呵水各多少 一吨每立方米等于多少千克每立方分米?一千克每立方分米等于多少克每立方厘米?千克每立方米等于多少千克每立方分米?. 液体与质量关系?如何换算?500ml酒=多少斤?要计算过程? 如何配制溶液500毫升的碳酸钠溶液 求数学单位换算 1L=?立方cm 1平方米=?平方厘米 1平方分米=?平方厘米求数学单位换算 1L=?立方cm1平方米=?平方厘米1平方分米=?平方厘米 单位 CC与ml 如何换算?CC是什么单位?ml又是什么单位?这两个能换算么? 用98%浓硫酸配制500毫升1.0摩尔每升的硫酸溶液? 尺与平方米的单位换算是什么样的? CC是什么单位?与ML能换算吗? 用98%的浓硫酸(密度为1.84克每毫升)配制1摩尔每升的稀硫酸100ml,需要硫酸多少? 网络10兆等于多少m 西西cc(作为单位)与ml怎么兑换? 需要0.5摩尔每升的硫酸500毫升若使用溶质的酸进行配置,问题是:1.该浓硫酸的物质的量浓度 2.需要浓硫酸的 兆的单位换算一兆等于多少? 200g等于多少ml牛奶? 在20毫升0.1摩尔每升醋酸溶液中逐滴加入20毫升0.1摩尔每升的氨水溶液,溶液导电能力逐渐增强.为什么? 二十兆流量等于多少M? 200g水=?ml=?mol 将20毫升0.1摩尔每升的醋酸钠与10毫升0.1摩尔每升的盐酸混合溶液显酸性,溶液中个离子浓度的比较 单位换算20分之13吨等于多少千克 静脉滴注一滴是多少ml?如何将滴速和ml数转换? 下列溶液中含氯离子物质的量浓度最大的是( ) A.30毫升0.2摩尔每升KCI溶液 B.20毫升0.1摩尔每升氯化钙溶液,C.10毫升0.1摩尔每升氯化铝溶液 D.100毫升0.25摩尔每升氯化钠溶液 角度单位换算的公式要详细点的1度等于多少秒多少分 50度41分20秒等于多少度写出来详细 50%的NaOH溶液密度为1.525g/cm3,计算它的物质的量浓度,配制1 mol / L的NaOH溶液100 mL,需上述溶液多少?我的解法是:50% *1000*1.525g/cm3C= -----------------------------------≈19.1mol40g/mol0.1mol/L * 0.1LV= --------------- 舍得的含义?如何舍得,如何取舍 把2.5毫升0.1摩尔每升的硫化钠溶液与1毫升0.1摩尔每升的亚硫酸钠溶液和7毫升0.1摩尔每升的盐酸混合后,充分反应后生成的产物中硫元素的存在形式为()1.S2.S,H2S3.S,SO24.S,H2S,SO2可答案是3阿 单位换算公式都有哪些? 怎样辨别舍得酒的真假想买一瓶给老爸,还怕买到假酒,请懂行的朋友帮帮忙!积分不多, 24毫升浓度为0.05摩尔每升的NA2SO3溶液恰好与20毫升浓度为0.02摩尔每升的K2CR207溶液完全反应,已知NA2SO3被K2CR207氧化为NA2SO4,则元素CR在还原产物中的化合价是多少设CR在还原产物中的化合价为X,0.0 单位换算的公式!(1)70微米=()米=()毫米(2)0.05分米的二次方=()米的二次方=()厘米的二次方(3)200厘米的三次方=()米的三次方=()升(4)10的-10次方米=()纳米=()微米(5)3 250毫升等于多少毫克 配制0.2摩尔每升硫酸钠溶液50毫升,需要称取固体硫酸钠的质量是多少 单位换算公式长度、重量、面积、体积等的换算公式每个分类的公式 越具体越好!还有啊 长度单位【寸、尺…】 重量单位【斤、钱…】 请问250毫克等于250毫升吗? 将100毫升0.3摩尔每升的硫酸钠溶液和50毫升0.2摩尔每升的硫酸铝溶液混合后,所得溶液中硫酸离子的物质的量 长度单位换算公式
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn