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

细品这杯香浓的咖啡——阿里中间件高级专家沈询的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版)。

Facebook开源flint:一个用D语言编写的C++静态代码分析器 AMD携手BlueStacks,下半年推出零售版双操作系统 历时6年 Github发布基于Web的桌面文本编辑器:Atom Ratchet:构建移动应用原型,新版支持Android 13个最狂帅炫酷的前沿科技研究项目 打动面试官的五大技能 乐视TV和NBA签约三年互联网电视版权 首度披露大屏运营策略 支撑4.5亿活跃用户的WhatsApp架构概览 免费使用Windows?微软推Windows 8.1 with Bing实验项目 C/C++开发者必不可少的15款编译器+IDE Amazon推荐,Facebook追踪,大数据时代的“狗仔队” NewSQL登场,NuoDB告诉你未来数据库什么样 2014 Unity亚洲开发者大会·中国站:技术课程全面解析 与其坐以待毙不如主动出击 软件如何避免惨遭淘汰 一周消息树:程序员想找好工作?那就学好Linux! 移动周报:开发者必须了解的10大跨平台工具 一周热点:领先Google 150年的数据可视化及WhatsApp架构解析 R语言为Hadoop注入统计血脉 海外游戏市场:Google与“开心农场”谈破局 2014年2月操作系统份额:Windows仍在增长 Win 7以47.31%稳居第一 2014年2月份浏览器份额:IE 8仍全球最受欢迎,Firefox跌破18%大关 跨平台2D游戏引擎V-Play:3天开发一款原生游戏 Appery.io:无编程经验,自己也能DIY移动应用 SAP携手Xamarin和Service2Media 提供移动应用开发框架 8个超实用的jQuery技巧攻略 美国国防部战略:大规模、分布式,构建数字化防御体系 针对小白的Python入门教程——Python使用说明书 耗资460亿美元,天价Olympic上广受诟病的监控和4G LSI AIS ASIA首次登陆中国 探讨最新大数据技术 “iOS in the Car”问世 苹果发布集成汽车服务CarPlay Pinterest联合创始人Evan Sharp:视觉网站标配“网格布局”的设计过程 对不起我的EMAIL是:scaner123@163.net 哪位大侠知道哪儿有sybase sql anywhere 5.5 下? help!!!assignment to be handed in!!help!! BDE的乱码问题 能否在直接关闭窗口,不提示是否关闭窗口?各位大虾请帮忙! 大家说将来是考微软的MCSE有用,还是考JAVA认证有用? 字符集 与 编码方式 有什么联系与区别? 如何将连个hub连接起来当成一个hub使用? 关于win2k professional 的CTRL+ALT+DEL的问题! 怎样表示一个窗体中的所有textbox控件? 请教。linux下nvidia geforce2 mx-100/200显卡和xwindows设置安装问题。 啥是全局变量? 心烦的朋友,一起进来聊聊! 讨论关于打包的问题,有请javamap及各位对此熟悉的大虾或有困惑的菜鸟 兄弟们拉我一把,帮忙看看这个触发器怎么写? 如何在DELPHI中加超文本联接。 各位仗义大虾,谁有图像的花样显示的算法(比如百叶,瀑布),小弟有急用,为了兴趣,也为了饭碗!谢谢! 为什么别人的机子不能访问我的资源? 我有ActiveSkin3.55和他的注册机,但是我不知道该怎么注册,谁能告诉我???? 请教高手如何做一个按钮command1,把Windows的剪贴板中的图片存成aa.jpg 哪儿有oracle的驱动程序?我想用perl访问oracle数据库,但找不到驱动。 谁有socket编程的聊天室代码? TO:skyyoung(路人甲),你有吗? sql server2000的问题 水晶报表的问题,高手请进 如何做一个具有立体感的按钮? 关于ASP的问题 急!急!关于菜单中变量的引用 怎样调用其他程序,并模拟鼠标按下那个程序的确定键 我在控制台上为什么添加组策略的时候,添加不上"本地计算机",找不到这一项, csdn现在可真烂!!!速度如牛,劲道却赶不上牛,找个昨天发的贴子都是问题,太差!!! 为什么当我在调试atl开发指南中第入章的例子的时侯没有错,而当我在activex control test container中调用确。。。。。 作一个局域网内的类似QQ的东西,用JMS好不好? 谁知道Tao Group的ElateOS,欢迎讨论。 大家说将来是考MCSE认证有用,还是考JAVA认证有用? searching..................... 如何获取数据库的连接数??? 我正在编写一个读写、显示、编辑位图的软件,请大家给点建议!(进来的均有分) 请问各位在把基于access2000的asp移植到sql7.0是要注意那些问题啊?(大家交流交流经验) 请帮帮我 菜鸟先报个到 大家好,这个问题好几天了都没解决,小弟分不多,能不能帮帮我 mysql中怎样设定远程访问权限 各位QBasic大师,能不能提供一些使用qb编程的技巧? 不胜感激! 弱水请进:oracle的REDO日志人间丢失,试图恢复时告诉我system.dbf需要进一步RECOVER,有没有好办法? 各位QBasic大师,能不能提供一些使用qb编程的技巧? 不胜感激!! 怎么把一个文件的内容读入到RichTextBox jtree问题:怎么以“我的电脑”作为根结点,小妹只能取得根结点系统根目录(c:\等),如能帮忙或给有用提示,高分相报,大家请进 送分题来了!!!!!!!先到先得呀!!!! 请教关于ListBox的问题! datagrid的一点讨论! 请问vc高手:word中的字符缩放是怎末实现的? 制造电动机所依据的主要科学知识是?A磁场对电流的作用 B磁极间的相互作用 C电磁感应现象 D电流周围存在着磁场 一个水池,常开着一个进水管.当水池水满时,打开排水管A,8小时可将水排空;打开排水管B,10小时可将水排空;打开排水管C,12小时可将水排空;同时打开排水管A,B,4小时可将水排空.那么,同时打开 物质的量的单位—摩尔对于如下反应(两个氢分子和一个氧分子生成两个水分子),从宏观和微观角度分别如何计量? 电动机原理 物理 日常用的电动机有哪些 “一些人追求奢侈品的生活”英文翻译 浪费粮食的经济学解释?中午在食堂吃饭,听到两个同事的对话:A:你饭打多了吧,糟蹋粮食啊B:糟蹋也是我消费啊A:如果你每天都糟蹋这么多,一年下来要糟蹋掉一个农民多少年的劳动成果啊B:种田 电动机的工作原理(物理8年级知识)最好配合原理图一起说明, 用讲究的不同意思造句,(1)讲求,重视;(2)对生活等方面的要求高,追求精美. 为什么粮食丰收对农民总体收益不利(西方经济学) 跟含8克氢氧化钠的溶液反应生成正盐,需要硝酸___摩,需要硫酸___摩尔,需要磷酸___摩尔 一摩尔H2O中含有多少电子? 在经济学中,决定和影响粮油价格变动的因素有哪些 某水池有一个进水管和一个排水管如果单独开进水管6小时可以注满水池如果单独开排水管8小时把水排完如果同 49g磷酸与多少克氢氧化钠恰好完全反应生成正盐? 为什么1摩尔H2O中含有10个电子 h3po4的摩尔质量 磷酸的摩尔质量为______,2mol该物质即含有磷酸分子为_____mol,共含有原子为_____mol, 5000元一吨.1克等于多少钱? H3PO4的摩尔质量为?怎么算的?不是相对分子质量的数值吗?那就应该是48啊? 为什么磷酸H3PO4内含有8个原子,则0.2摩尔的H3PO4含有1.6摩尔的原子 谢谢 一吨等于35000元,那一克等于多少元,一斤呢?有谁知道的? 8000平方分米等于 平方厘米 水池装有一个进水管和一个排水管,单开进水管,5小时可把空池注满,单开排水管,7小时可把满池水排完如果一开始是空池,打开进水管1小时后又打开排水管,再过多长时间池内将积满半池水? 用赛车马达造模型飞机有没有可能?我是个模型飞机爱好者,很想自己造一架模型飞机(不要成品).但是有很多问题没有解决.希望大家能很好地回答我的问题,再说一下关于航模的其它事项.1.如题 九年级物理电动机为什么会转 一水池装有一个放水管和一个排水管,单开放水管5小时可将空池灌满,单开排水管7小时可将水池水排完.如果一开始是空地,打开放水管一小时后又打开排水管,那么再过多长时间池内将(方程解 用玩具赛车上的马达能发电吗?如果能,它的原理是什么不过它本身也许要电? 九年级物理电动机为什么会转讲解 一个水池装有一个排水管和一个注水管,如果单开进水管5小时可以把空池注满,如果单开排水管7小时可将水池水排完.如果一开始是空池,打开注水管1小时后又打开排气管,再过多长时间池内有 用玩具赛车的马达能让自己做的飞机飞起来么?材料有哪些急求~ 九年级物理电动机为什么会转动教案 奢侈品的价格弹性;必须品的价格弹性填空题:奢侈品德价格弹性——;必需品的价格弹性—— 2m3的冰全部熔化为水,质量为( )kg 体积为( ) (P冰=0.9X10的三次方kg/m3) 将线圈引线一端的绝缘漆全部刮掉,另一端刮去半周后电流在电动机里面怎么走?--------------(刮一半)-----| |----------------(不刮)---------------比如电流总左往右走,然后上去再向右走,然后是往 100公斤15克那么1斤多少克有等多少两数学家来 看看啊 着急啊 n(H2O)等于一摩尔 其质子的物质的量为什么是十摩尔啊! 某水池有一个进水管和一个排水管,如果单独开进水管,6小时可以注满水池.如果单独开排水管,8小时把水排如果同时开放进水管和排水管,那么多少小时可以吧水注满?变:如果先开进水管2小时, 0.15公斤等于多少克 1摩尔H2O的质量是多少?H2O的摩尔质量是多少 一个水池,有甲乙丙三个水管,甲乙是进水管,丙是排水管,单开甲管用6小时将水池注满,单开乙管8小时将水一个水池,有甲乙丙三个水管,甲乙是进水管,丙是排水管,单开甲管用6小时将水池 黄金15钱等于多少克 举例说明 什么是富有弹性 单位弹性 缺乏弹性 完全无弹性 完全弹性 的商品 一个水池装有一个进水管和一个排水管,如果单开进水管3小时可以把空池注满,如果单开排水管5小时可以把一池水放完,现两管同时开,几小时可把空池注满 物理发电机与电动机的原理 超市里有哪些东西经常促销?这些东西从经济学角度看是富有弹性还是缺乏弹性?如果它们缺乏弹性为何还要促销?商品降价后收益增加还是减少(经济学公式分析)? 2摩尔水约含几个摩尔氢原子这些氢原子与几个摩尔过氧化氢中氢原子质量相同? 谁知道物理电动机和发电机的原理,以及它们的应用!说的具体点!总之关于电动机,发电机的全部都要! 玩具遥控车的驱动马达常带着的104μF电容是有什么作用 9.8g硫酸与多少g磷酸所含分子数相同,所含氢原子数之比是多少,摩尔质量分别是 电动机运用什么原理?将什么能转化成什么能?发电机呢 遥控车马达的问题我想让遥控车跑得更快些,所以买了一个扭力强劲的马达,结果我把马达换上遥控车动都不动?换上原装的可以转``不知道为什么?还有遥控车的马达上面有一个小东西,上面写着 9克水与 克磷酸中所含的分子是相同,克磷酸中所含的氢原子数相同,摩尔磷酸中所含氢原子数相同 物理学中,电生磁和磁生电的原理是什么,并说出电动机和发电机的工作原理? 最近看了一个帖子,说有刷电机也需要电调,于是玩具车的问题立刻在我脑中回荡:玩具遥控车的马达为什么没有电调.拆开遥控车看一看,确实没有,但发现马达的两个电极上有一个小黄颜色的 简易小电动机制作包括材料以及做法.所以不用太高级. 物理学中的电磁是怎么的 发电机和电动机 雷速登闪电冲线(极速)遥控车马达转速每分钟转多少圈如:银超霸马达最高空转转速为3500转/分钟 电动机工作后为啥会发热 一个水池的容量是1200升,它有A、B两个进水管和一个排水管A、B两管单独注满水池分别要9小时和10小时.现水A、B两管单独注满水池分别要9小时和10小时.现水池中存有一部分水.如果A管单独进水, 物质的量与摩尔质量有一块锌片插入CUSO4溶液中,一会取出,在锌片表面有CU析出,干燥后称量发现锌片质量比原来减少了0.2g,求参加反应的ZN物质的量和反应后ZNSO4的质量、请写下过程、谢谢!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn