DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

2013Qcon散记

作为第一次去参加这种级别的会议,心里还是有些期待,不过由于时间点不好,只是听最后一天的演讲,回来之后也就是大抵如此的感觉,一半扯淡一半干货吧。

首先是雪球网的node.js的相关的分享。对于node.js,自己基本不熟悉,但这场演讲居然也能听的进去,果然是入门级的(对于另一些的node.js来说是不是过于入门级。。)。node.js出现的背景在于前端工程师对于仅仅学习html/js一套,对于去写jsp页面的不满,去配合后端java写业务的不满,于是前端工程师也可以用写js的方式来写后端。这里面,谈到的一个很关键一点是,node可以兼容之前的做法,即:一、用ajax的方式去获取后端数据,二、用js去拼接json数据。个人觉得这两个关键点是促成node.js发展的一个很关键的因素。而后,分享举了一些实际的工作编程中以及迁移中遇到的问题。如,node也有相关的模板语言,如何选择好的模板语言,这里提到了**[mustache][1]**,它是一种支持多种语言的轻量级的模板语言,所谓轻量级,应该是指其支持json数据尤其出色;js中也有异常处理,针对这部分的异常,如何去抓住,这里提到了 uncaughException;针对异常的抛出,node采用的是一层抛一层的方式(是不是跟java中的抛出异常不一样?),也就是上层对下层抛出的异常是透明,这样必然会带来多种嵌套的问题;最关键的是node的实际生产环境必然会有大量的并发请求的问题,这样一种并发执行会带来什么样的问题,如何去避免这样的问题?最后是相关的一个总结,

  • 如找到靠谱的错误处理,针对node的异常抛出问题,不能简单的抛出;
  • 全局变量和局部变量的区分问题,这里举的是var的例子,分享者针对这一点讲到他们的命名规则是内存变量加上_,不过个人觉得,难道前端工程师对于全局和局部变量的区分度很差吗?为什么会出现缺var这样的错误?不过这样的命名规则可以用来考虑。
  • 打日志是很好的调试工具,简单可靠。

技术上的分享大抵如此,不过在演讲过程中,一个很有意思的思路是将雪球网将某些人的言论跟金融趋势图去联系在一起,从而来验证实际的发展跟当时的言论是否匹对,将足彩的那一套沿用到金融里,而且更进一步用图标增长的方式,比足彩更形象。

然后是听了一下有道云笔记的云端架构。其实对于云端架构这个东西,其架构图基本沿用GFS那套,还是依旧的三方的架构。只不过,这里提到的笔记的需求是,1、随时编辑,2、历史版本查阅,3、协同,分享。于是,原来针对数据部分的频繁修改操作扩展到meta数据上,通过meta的数据的修改,以及对应到不同的meta数据来实现相关的笔记的需求。这种思路,类似于linux的软链接的方式。这里,说一下觉得很有意思的几个点:

  • 随着移动设备的兴起,笔记方面有移动端的需求,这在之前的分布式的框架中没有想到过的。于是,笔记方面,增加了一层协议分析层,遵从不同的设备使用不同的api的方式,虽然pc端和手机端看到的内容是相同的,但其内部的api处理的方式是不同。例如,pc端,可以采用一块一块读取的方式呈献给用户信息,meta数据的处理也可以部分放在客户端来进行,但在移动端,就不行,需要全文完整地传递完后呈献给用户,并且相关的meta的处理也会随着内容一起上传回去。也就是,底层的数据相同,但针对不同的端,其处理、读取的方式是完全不同的。
  • 针对笔记,免不了并行操作,这就要考虑相关的操作隔离。这里在我们平常所谓的数据锁的基础上再加一层,剔除逻辑数据块锁,其仅保证对同一数据的操作分发到同一个逻辑存储模块,这样我们不用直接跟底层的数据块打交道,只需对我们所设计的逻辑数据块来操作,这样带来的好处也是明显的,逻辑数据块的大小和相关的锁操作是我们可以自定义的,灵活。
  • 底层云这块,架构方面依然是文件系统那套的规则,果然是,越底层,其大变化的周期越长,而这里更需要上层所谓的微创新,需要你根据特定的环境所做的一点小的变化。其实对于java这种企业级的框架以及语言来说,这个道理也是说的通的。

第三场的演讲则是jboss云方面,这场基本在扯淡,首先扯了一大堆的构建企业混合云的必要性和背景,然后是介绍其所在jboss团队推出的as7。这里有意思的一点是,云针对多租户应用架构的变化。这里提到了针对这种情况,会出现两种对象,一是有状态的对象,这种通过调用者和应用名称可以锁定,另一种就是无状态的对象,需通过传递两个以上的信息来锁定。这里的思路,可以用在icafe的流程引擎中,针对action方面,也存在有状态的action和无状态的action,所以这块的多租户应用架构,可以去考虑实现在icafe的流程引擎中。

最后一场的演讲则是ebay的下一代数据集成平台的介绍,其核心在于介绍ETL,即这种用在数据仓库中,去萃取和提取相关的信息,而ebay方面则用在日志的抽取和转置上。这个跟上周oracle的那个bi系统很类似,一样也是利用ETL来转置数据。这里讲几点:

  • 类似这种日志处理的程序来说,其需要考虑多种数据源的流入,例如,需要多个数据库的多张表的情况,所以关于数据源的配置必须是灵活多变的,
  • 由于数据源的灵活多变,所以其处理过程也是千变万化,于是,提出了
ETL ID specific State files
```,这个是实现所谓的metadata driven everything的基础。这里的ETL metadata是指,ETL过程中的workload, data lineage, ETL Job State, Resource tracking and metrics等。通过这些信息,我们可以了解这次ETL的所有信息。
*	定期的对metadata进行collection操作,分析其中的信息,例如,可以统计每张表的使用频度,方便我们进行数据的合理化处理。

可能ETL方面更加不为人所知,最后一场涉及到的名词也是所有听到的演讲中所涉及到的专有名词也是最多的。像什么VDM,TDWI等。不过,其ETL的过程很类似icafe的流程引擎部分,只不过有一点很重要的是,icafe关于数据的层次的划分很不明显,虽然有很多的表,但表之间的关系,并没有层次关系,没有很强的metadata的特征,这块可以在后面进行加强和改造。

基本上,四场演讲听下来,人也有些疲倦,然后是坑爹的吃中饭环节,会议的自助,尤其针对屌丝程序员这种,基本不够看的。。哎,于是,直接出了会议,跟着另一个路盲的同事,幸亏有百度地图,找到麦当劳,凑合一顿。于是第一次的Qcon之旅over。




[1]: http://mustache.github.io/ "mustache"