分享: Netflix Culture:Freedom & Responsibility

五月 17th, 2013 No Comments »

1. Netflix Culture:Freedom & Responsibility 1
2. We Seek ExcellenceOur culture focuses on helping us achieve excellence 2
3. Seven Aspects of our Culture• Values are what we Value• High Performance• Freedom & Responsibility• Context, not Control• Highly Aligned, Loosely Coupled• Pay Top of Market• Promotions & Development 3
4. Many companies have nice sounding value statements displayed in the lobby, such as: Integrity Communication Respect Excellence 4
5. Enron, whose leaders went to jail, and which went bankrupt from fraud,had these values displayed in their lobby: Integrity Communication Respect Excellence (These values were not, however, what was really valued at Enron) 5
6. The actual company values, as opposed to the nice-sounding values, are shown by who getsrewarded, promoted, or let go 6
7. Actual company values are the behaviors and skills that are valued in fellow employees 7
8. At Netflix, we particularly value thefollowing nine behaviors and skills in our colleagues… …meaning we hire and promote people who demonstrate these nine 8
9. You make wise decisions (people, technical, business, and creative) despite ambiguity You identify root causes, and getJudgment beyond treating symptoms You think strategically, and can articulate what you are, and are not, trying to do You smartly separate what must be done well now, and what can be improved later 9
10. You listen well, instead of reacting fast, so you can better understand You are concise and articulate inCommunication speech and writing You treat people with respect independent of their status or disagreement with you You maintain calm poise in stressful situations 10
11. You accomplish amazing amounts of important work You demonstrate consistently strong performance soImpact colleagues can rely upon you You focus on great results rather than on process You exhibit bias-to-action, and avoi  阅读全文...

解析Google集群资源管理系统Omega

四月 24th, 2013 No Comments »

1. 背景

Google的第一代/第二代集群(资源)管理系统被称为Borg,Borg设计细节因零零星星出现在各种文章中而知名,但一直未公开(比如发一篇paper)。然而,我们可从腾讯公布的Torca(Torca是google华人老员工朱会灿加入搜搜后,仿照google borg开发的资源管理系统, 链接是:“Torca:Typhoon上的分布式集群调度系统”)设计文档中可猜测一二。

而在近期,Google公布了它的下一代集群管理系统Omega(下载地址)的设计细节。论文中谈到Google经历的三代资源调度器的架构,分别是中央式调度器架构(类似于Hadoop JobTracker,但是支持多种类型作业调度)、双层调度器架构(类似于Apache Mesos和Hadoop YARN)和共享状态架构(就是Omega),并分别讨论了这几个架构的优缺点。同Google公布的其他系统类论文不同,这次它并没有公布Omega的设计架构,只是介绍了它的资源管理组件的设计思想和关键技术,个人认为这主要是因为Omega整体架构与现有的资源管理系统,比如Apache Mesos,非常类似(比如各个slave上会部署一个代理用户接收任务,向master汇报任务状态和资源使用情况等),主要不同集中在资源管理器上,所以重点介绍这个组件。

另外,从论文作者看,Omega主要是由剑桥大学和加州大学伯克利分校的两个实习生在google实习时完成的。

2. 集群管理(或者叫资源管理)系统的设计动机

集群资源管理系统是对底层硬件的进一步抽象,它屏蔽了硬件的异构性,对上层各种应用提供资源统一管理和调度。从当前公认的云计算划分看,它属于IAAS(Infrastructure-as-a- Service)。

我在“浅谈Borg/YARN/Mesos/Torca/Corona一类系统”一文中已经详细介绍了这类系统的设计动机,主要有两个,分别是提高系统利用率和服务自动化部署,google在Omega论文中也谈到了这些。

这类系统不同于现在的Hadoop,Hadoop运行的任务是快短类型的,可以运行在任何很烂的机器上,一旦任务失败后,可以很快地将之调度运行到另外一个机器上;而类似于Omega或者Mesos的资源管理系统则不同,它不仅要运行这种短类型的任务,更多的是运行一些长类型的服务,比如web service、MySQL Server等,对于这类服务,Omega应尽量将其调度到一个性能稳定可靠的节点上,这通常是通过跟踪每个节点的历史表现情况判断节点的稳定性和可靠性实现的,比如,如果你向通过Omega运行一个大约工作1个月的web service(一个月  阅读全文...

身份认证之内部认证

三月 14th, 2013 1 Comment »

前面两篇文字,都是作为“内部认证”这个话题的一个引子存在的。其实我想讨论的,是“内部认证”应该是什么样的,应该怎么做的问题。

什么是内部认证?简而言之,就是公司内部其它部门,或外部可信的合作伙伴在使用平台的时候,进行的一种身份认证方式。

微博做了一个开放平台,将微博的大部分功能开放出来,供第三方应用和网站使用。第三方应用或网站需要使用微博的功能的时候,或者说需要替用户操作他/她在微博上的数据的时候,需要征得该用户的同意,即授权。微博在收到“A用户授权B应用操作其在微博上的C类数据”这样的明确授权后,即允许应用进行相应的操作,如发微博,加关注。如果授权泄露,则收回授权。这里的泄露包含两层意思:一,用户不小心授权给这个应用,或这个应用未明确告知用户它获取了某些权限会做某些操作,用户可能会承担一定的后果,比如“被发微博”,“被加关注”,但危害性仅限于这个用户,而且被用户自己发现后,可以恢复,可以投诉(很少有应用偷偷做删微博,删关注这种用户无法自己恢复的操作行为的,因为这种行为对应用不产生任何价值,纯粹“损人不利己”);二,应用不小心泄露了用户给自己的授权,被别的应用恶意使用,这种情况,平台一般会直接收回所有对这个应用的授权即可。

但在内部认证的场景下,比如微博搜索功能,微博相册功能,对于微博平台来说,就是一个内部应用,它们的特征是:

  1. 不以用户为维度进行授权,即默认所有用户都“授权”给这些应用。
  2. 不以功能为维度进行授权,即默认大部分功能都“授权”给这些应用(某些高权限的功能,如私信,是严格控制授权的)。
  3. 正常情况下,权限验证对这些应用来说都是额外开销,因为他们都是可信来源。所以,正常的权限验证需要尽可能的轻量。
  4. 如果被滥用或恶意使用,后果很严重,你懂的。
  5. 即使出现某些问题,对整个应用“收回授权”,甚至临时的限制,都是不可接受的。必须采取其它的补救措施,比如封ip。

设计这个方案之前,我们首先确定一下我们的认证方案需要解决的问题:

  • 正常情况下不影响应用使用微博的功能,异常情况下也不能影响正常的功能使用
  • 防止微博功能被恶意使用或滥用,如应用方开发人员开后门加关注,开后门删微博等
  • 尽量防止微博功能被不小心误用,如测试环境,对方的代码bug等
  • 还  阅读全文...

身份认证漫谈之第三方认证

三月 14th, 2013 No Comments »

在大家都热衷于做“平台”,特别是“开放平台”的时代,第三方认证渐渐的成了一种标配了。

 openid 的目标是:不用注册,就想认出你是谁。后来发展应用的更多的还是各大网站的 “connect” 功能,如 google,fb,微博,qq 等,但已经失去了 openid 的设计初衷了。

 Oauth 和 Oauth2 的目标是:第三方网站想操作你的数据,问你给不给。

第三方认证的接受程度越来越高。但总体来说,第三方认证相比起用户认证来说,还是复杂的多,便捷性和安全性很难兼得。主要的设计实现目标应该包括:

  • 安全性:第三方身份确认,用户身份确认,用户授权确认,任何一个环节出问题,都可能是大问题
  • 便捷性:代码实现方便,异常自助恢复(服务中断,网络问题,如gfw等)

对于第三方认证来说,很多时候我们知道当前的方案和实现都有一些这样那样的问题,但无法从本质上进行任何的改善,只能在已有方案的基础上进行小修小补,或寻找技术之外的解决办法。为什么?因为它已经是一个生态系统,已经不是一个人,一个团队,一个公司能主导的一个事情了。

(未完待续)

阅读全文...

身份认证漫谈之用户认证

三月 14th, 2013 No Comments »

身份认证,按照百度百科的定义:

身份认证是在计算机网络中确认操作者身份的过程。身份认证可分为用户与主机间的认证和主机与主机之间的认证,用户与主机之间的认证可以基于如下一个或几个因素:用户所知道的东西:例如口令、密码等,用户拥有的东西,例如印章、智能卡(如信用卡等);用户所具有的生物特征:例如指纹、声音、视网膜、签字、笔迹等。

普通网站提供的用户注册,用户登陆功能,目的就是验证用户的身份。从技术实现上看,用户认证功能的目标应该包括:

  • 正常用户能够方便的通过认证,快速进入后续的功能使用过程。最近“用户体验”呼声越来越高,具体到用户认证这个环节,确实应该首先考虑不影响正常用户的正常功能使用。
  • 保障安全,避免恶意使用。认证功能的核心价值就在于避免用户的数据泄露,不管是被抓包,还是xss,还是网站数据库被侵入,甚至别的网站被侵入,而用户恰好使用相同的用户名密码,这都是设计用户认证功能的时候需要考虑解决的问题。
  • 另一个需要顺便考虑的问题是,避免滥用。比如垃圾用户,DDOS 。

具体的实现就不展开了,简单说来无非是这么几个点:简单的注册流程,但注册后不能立即使用所有功能(用户信用制度);https 登陆页;验证码;存储加盐(salt);操作记录(如上次登陆时间)+异常检测(非常用ip等);危险操作二次确认+可回滚(删除数据,转账等)。

100% 的安全实现方案是不存在的,我们可以做的,是根据自己的业务需要,在安全与实现代价,安全与方便之间进行权衡取舍:单个用户账号泄露,被恶意使用的危害有多大?普通用户对于认证过程的复杂性容忍度有多大?能接收多大代价的实现成本?

登陆线上服务器要求使用动态密码,网上银行要求使用 usb key,支付宝转账要求必须绑定手机,而发微博只要求提供用户名密码即可。

(未完待续)

阅读全文...

为程序员量身定制的12个目标

二月 21st, 2013 No Comments »

对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前。新年伊始,我整理了12个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用。

  • 01. 变得有耐心
  • 02. 保持健康
  • 03. 拥抱变化带来的不适应
  • 04. 学习一门新的编程语言
  • 05. 自动化
  • 06. 学习更多数学知识
  • 07. 关注安全
  • 08. 备份你的数据
  • 09. 学习更多理论知识
  • 10. 接触艺术和人文
  • 11. 向新的软件学习
  • 12. 完成一个自己的项目
  • 接下来我会对这些建议逐个介绍。

    变得有耐心

    程序员们会担心锻炼耐心付出的努力得不到应有的回报。其实,培养耐心只要付出很小的投入就能够得到相对而言很大的收获。下面是开始锻炼耐心可以尝试的一个列表,只要全身心投入其中任意一项,都可以在一个月左右脱离门外汉(成为有经验的新手)的阶段:

    烹饪、徒步、滑雪、天文、慢跑、木工、武术、舞蹈

    保持健康

    程序员通常久坐少动,因此在日常工作中会面临健康问题,但通常都被我们忽略了。一年中花整整一个月来调整你的生活习惯、 饮食和生活环境,这会促使你养成持久、健康的生活习惯。每年去一趟诊所检查血压、胆固醇和血糖,看看这些指标最近有什么变化。如果你的手腕开始疼痛或者已 经疼了很久,马上停掉手上的工作开始与“鼠标手”(重复性劳损)作战。注意你的坐姿,尤其是肩膀和脖子。我使用了矫姿器来帮助治疗。

    跟踪你的体重、摄入以及燃烧的卡路里。如果有必要,可以改变生活方式以养成健康的饮食习惯和减肥。(《Zed Shaw:程序员的常见健康问题》)

    拥抱变化带来的不适

    在我20刚出头的时候,通过观察身边年纪稍大一些的伙伴我发现有些人停滞不前而另一些则活力充沛,我试着寻找背后的原因。答案就是舒适感。舒适会让技术停滞不前。当找到一个能够为我所用的系统时,我们会一直使用它。但技术是不断进步的,而那些停留在舒适区的人永远不会意 识到这些进步能够为他们带来好处。不破不立,要让自己适应不舒适的感觉。

    下面列出的事情一开始可能会让你感到不适应:

    • 使用德沃夏克键盘
    • 使用vim替代emacs,反之亦然
    • 不使用鼠标
    • 使用不同的窗口管理器
    • 喝清咖啡不加奶油和糖,或者喝清茶
    • 尝  阅读全文...

    我的2012

    一月 21st, 2013 No Comments »

    2012年12月28日,凌晨三点半,北京隆福医院。天气预报说今天北京有小雪,但现在还没有下下来。
    @leeyanva 刚被掺进产房,衣兜里装着还没送出去的红包,我站在产房门口,等待,等待 @唐雨辰2012 的诞生。经过了一个下午加大半个晚上的阵痛,我们的唐唐终于要出来了,挑了这么一个好日子,20121228,壬辰年冬月十六,月圆,清寒。欢迎你,我的宝贝。
    2012年的另一件大事,就是房子。年初的时候,趁着北京房价的一个小低谷的机会,咬咬牙狠狠心,出手了。现在回过头看看,只觉得庆幸,因为如果那时候不出手,后来可能就再也没有机会了。房子比较旧,但好在地段非常好,为此背上百万的债,也是值得的。
    工作上,这一年终于完成了从coder向architect和manager的转变,职位,职级,角色,能力都有了一定的进步,明年,最主要的目标就是高度,看的更远,才能走的更好。换一个角度看,今年工作上的问题也不少,重点项目进度延误,kpi未完成,力挺的redis屡屡出问题,团队成长不及预期,新人融入也差强人意。
    生活上,因为leeva怀孕,今年所有的旅游计划都暂停了。于是,今年的相册里只有一些附近的照片,东到朝阳公园,南到北海公园,西到圆明园,北到奥体公园。四月份leeva回丰宁安胎,有几张老家的照片,七月份爸妈来北京,tianan门故宫长城颐和园一堆,九月份leeva大姐来,又是天安men故宫,还去了一趟央视下的海底世界,感觉很震撼。其它的就都是大肚子的了,最多的就是亮马河畔,蓝天,阳光,树荫,鲜花,晨跑的老外,扎堆的钓鱼人,和以及leeva的笑脸和大肚子。
    虽然没有旅游,但因工作原因,今年还是跑了几个地方:十月去了一趟上海,thinkinlamp 组织的华东数据库大会,在虹桥,徐家汇附近转了转。后来微博校招,先是去了天津,试了一把时速三百的城际快轨,还参观了传说中的南开大学和北洋大学(天津大学),后来又回了一趟成都,居然就住在犀浦,跟重逢的老朋友一起吃夜市,不出意料的拉肚子,还穿过宽窄巷子去吃虾,继续拉肚子。
    这一年没怎么读书,除了怀孕育儿的书以外,kk的《失控》只是粗略的扫了一遍,贝尔纳的《蚂蚁》三部曲倒是从头看到尾了。这一年也没怎么进影院看电影,除了冰河世纪4和泰囧,这还都是陪父母去看的。
    因为装修和唐唐,今年在京东,亚马逊和天猫上都花了不少钱。摇号20个月一直不中,买车的事情也只能一直拖着。
    再见,2012。你好,  阅读全文...

    转:深入理解JVM内幕:从基本结构到Java 7新特性

    十二月 12th, 2012 No Comments »

    英文原文:cubrid,编译:ImportNew - 朱伟杰

    每个Java开发者都知道Java字节码是执行在JRE((Java Runtime Environment Java运行时环境)上的。JRE中最重要的部分是Java虚拟机(JVM),JVM负责分析和执行Java字节码。Java开发人员并不需要去关心JVM是如何运行的。在没有深入理解JVM的情况下,许多开发者已经开发出了非常多的优秀的应用以及Java类库。不过,如果你了解JVM的话,你会更加了解Java的,并且你会轻松解决那些看似简单但是无从下手的问题。

    因此,在这篇文件里,我会阐述JVM是如何运行的,包括它的结构,它如何去执行字节码,以及按照怎样的顺序去执行,同时我还会给出一些常见错误的示例以及对应的解决办法。最后,我还会讲解Java 7中的一些新特性。

    虚拟机(Virtual Machine)

    JRE是由Java API和JVM组成的。JVM的主要作用是通过Class Loader来加载Java程序,并且按照Java API来执行加载的程序。

    虚拟机是通过软件的方式来模拟实现的机器(比如说计算机),它可以像物理机一样运行程序。设计虚拟机的初衷是让Java能够通过它来实现WORA(Write Once Run Anywhere 一次编译,到处运行),尽管这个目标现在已经被大多数人忽略了。因此,JVM可以在不修改Java代码的情况下,在所有的硬件环境上运行Java字节码

    Java虚拟机的特点如下:

    • 基于栈的虚拟机:Intel x86和ARM这两种最常见的计算机体系的机构都是基于寄存器的。不同的是,JVM是基于栈的。
    • 符号引用:除了基本类型以外的数据(类和接口)都是通过符号来引用,而不是通过显式地使用内存地址来引用。
    • 垃圾回收机制:类的实例都是通过用户代码进行创建,并且自动被垃圾回收机制进行回收。
    • 通过对基本类型的清晰定义来保证平台独立性:传统的编程语言,例如C/C++,int类型的大小取决于不同的平台。JVM通过对基本类型的清晰定义来保证它的兼容性以及平台独立性。
    • 网络字节码顺序:Java class文件用网络字节码顺序来进行存储:为了保证和小端的Intel x86架构以及大端的RISC系列的架构保持无关性,JVM使用用于  阅读全文...

    尝试做产品之:订阅互联网

    十一月 21st, 2012 No Comments »

    • 技术男
    • 觉得自己老碰上不靠谱的产品
    • 想试试如果自己是产品,会如何
    • 回家的路上,假想了一个产品方向
    • 在内部演讲活动上,模拟产品宣讲

    订阅互联网 from fulin tang 阅读全文...

    我的奋斗 @ 微博

    十一月 20th, 2012 No Comments »

    原计划是安排几个老人给新人讲讲自己的奋斗历史,写了一个简单的 ppt,被认为是纯粹的流水帐。在改之前,为这个版本找个地方留存一下,谨以此纪念我从毕业到成家这段折腾的岁月

    我的奋斗 @ weibo from fulin tang 阅读全文...

    无觅相关文章插件,快速提升流量