title: 中期打算 date: 2012-01-28 10:32:21 updated: 2012-01-28 10:32:21 tags:
- 成就 uri: —
人活一世,长则百年,短则半百,总是要做点什么才不会虚度。现在在系统集成公司干得不是很称心,需要自我反思一下。
你现在想获得什么东西?为什么?
我现在的视野较为开阔,能够keep pace with政治、经济等方面,但技能水平局限于IT这个行业,目前只能通过IT行业的工作养活自己。我想达到自我成就,就像俞敏洪所说的人生两种活法:我不要像草一般被人踩过而没有感觉,要像树,“活着的时候是美丽的风景,死了以后依然是栋梁之材,让人们看的时候能够仰视你,人们要用的时候能够亲近你”。我不想自己的命运被捏在别人手里,我希望能够按我的意志改变乃至解救这个“悲惨”“疯狂”“幸福”的世界。
《奇点迫近》这本书写道,2018年的一千美元可以配置1T内存的机器,相当于人脑,2010年代物联网与虚拟现实技术将离我们越来越近,2020年的电脑和人脑一样聪明,而2045年机器智能战胜DNA文明。同样还有一本奇书是Kevin的《失控》。这两本我都没看完,有时间要好好拜读一下。
无论如何,机器智能的发展不可或缺的是IT产业的飞速发展。一方面是硬件层面,更高的芯片制程,晶体管的物理极限。另一方面就是软件层面了。如何才能把分布到无处不在的计算能力进行统和、管理再切分估计是大方向。
分布式系统是一个非常具有挑战的科学研究方向。它所整合的计算能力是其它诸如人工智能、计算机视觉、虚拟现实、纳米机器人、航天、军事科技等等技术突破的基础。充分条件。将来的计算能力将成为国家重要战略资源的一部分,管理好分布式系统是极端重要的事情。
分布式系统在商用、民用方面发展的方面主要是最近炒的“云计算”。云计算有几个一方面,一是企业规模太大,计算资源过多,可以集中起来租给小客户,即各种XaaS;二是企业规模小,但业务关键,只能自己把握,计算资源过剩,需要内部整合,即私有云、虚拟化技术。
对我来说,能够掌握、研发、部署分布式系统是非常有人生影响力的事。我要掌握这种能力:理解分布式系统的架构,能够把各自、独立的计算单元组合起来提供便利的服务。在软件上解决计算能力的瓶颈、分布式的极限之后,剩下的纯粹就是物理世界的propagation了。
你需要掌握哪些技术?
云平台和虚拟化技术最后会走到一起吗?云平台牵扯到多台机器上的通讯,有关TCP/IP/HTTP,在其上设计主从协议,索引规则等等。虚拟化首先是一台机器上虚拟出多个单独操作系统,需要自己编写任务调度、内存分配等等内核的东西。VMware提出的vCenter中的资源池概念,似乎也不能跨机器分配计算能力,通过统一的网络存储,把各个操作系统均匀地装在各个实体机器的“箱子”中而已。虚拟化到了这一步,同样需要主从式的机器通讯,需要中央节点机器管理这个虚拟化网络。所以涉及到网络的话,就绕不开TCP/IP/HTTP的东西。涉及到多服务器的话,就绕不开负载平衡等等。
所以归根到底,只要机器上了规模,要真正把这些智能整合运用的话,一些技术是共通的。从软件到硬件列举下:
-
典型应用——Hadoop,MapReduce——这个好像属于分布式系统的行业运用,和我方向有些无关,但需要了解业务怎么跑,才好设计系统嘛。
-
多租户——不同的session,不同的view
-
多用户高并发——多进程多线程编程,非阻塞式API
-
网络环境之下——TCP/IP/HTTP协议
-
分布式cache——先了解下Memcache吧
-
分布式文件系统存储——GFS的理解,Cassandar实现的SSTable
-
各服务器响应不能慢——负载均衡
-
服务器高可用性——双机热备,心跳软件
-
防灾能力——数据备份及恢复log,事务日志
你如何达成自己的目标,大方向说?
走产业和学术有两条路。从产业来讲,可以去公司干,也可以创业一般跟着吴朱华一样的人干。就我现在来讲,其实两条路都不错,去公司能结识更多的人,认识妹子的可能性大,风险成本更小。去创业的话,自我锻炼自不必说,这将是宝贵的一笔人生财富,同样令人垂涎欲滴。
去学术的话,真心只想去美国读研。CMU,MIT,马里兰等等。去美国读完研可以获得可观的薪水,而且离尖端科技更近一步。去美国读研的话,还能系统地培养自己的科学素养,分析解决问题,get things done的能力。如果还能通过研究所把自己的系统实现,简直是amazing的事情。不好的地方是,把妹困难,父母不好照料。
总的来说,倾向于去学术,这样可以直奔学术的最先端,估计也不会缺钱花,还可以逃离这个没有独立司法的鬼地方了。其它都是小问题。难点在于,大学不好,资历经历不够,人家看得上不。而且现在一些基础也不是很清楚,能跟得上不?
还有致命一点是:有哪些研究热点呢?在分布式这一方面,貌似都是google amazon等公司出了几个paper投入实际当中就解决问题了。学术方面比google强的大学有哪些?我还弄不清楚。万一投错胎,跟了个挫爆了的导师或项目也会很蛋疼。
转了一圈,又回来了。真说不上工作更好还是学术更好。还是往回转,赶紧把基础东西学会搞扎实吧笨蛋!
目前怎么办?
结合系统工程师的工作吧,先学习硬件部分的东西。比如负载均衡、双机热备、Oracle数据恢复等等,可以在上班的时候完成。
几个能力。
-
硬件能力:系统监控软件使用,心跳软件使用,数据库恢复。使用nginx,hadoop,cassandra
-
架构能力:理解分布式系统,GFS理解。数据库CAP原理。paxos算法。野村的《IT2009》IBM的《虚拟化与云计算》
-
编程能力:基础编程能力——《编程珠玑》《程序员修炼之道》;linux系统编程能力——《深入理解linux内核》;最好会弄nginx源码,加入nginx社区