您现在的位置:首页
--> 五四陈科学院
2010年的时候,我们开始最早的一波做小米的服务器的同学,基本都很少互联网经验,七拼八凑的把米聊上了线,这么多年过去了,很多技术框架沉淀到了公司各处团队中去了。
今天再来看,其实有很多细节,当时真的没考虑(现在也是坑)。
前些天看到了老板的二十年前的文章《程序人生》,深有感触,于是也萌发了写一写的想法,看看二十年后,自己的认识是否会有所改变,当然了,即便作为职业码农近十年,很多观点依然不能构成一种完整且保证正确的人生观。
当愤怒的用户,张牙舞爪地告诉你他遇到问题的时候,往往已经病入膏肓。作者同全国各地愤怒的用户亲密接触了很长的时间之后,做出了以下总结,希望对后来的人们能够有一点启发。
总结这些年经验,进行构架演进的方向选择时,大致要做到下面的目标:1,可快速开发部署 (五分钟写出来一个经过测试的hello world并可访问/调用,并可在公网访问);2,天然可扩展(业务层无状态,尽可能全部放到最后);3,自动化(内存不足了,除了报警,应该自动加点机器进去; 新的项目,基础代码应该都不用写,自动生成即可)。。。
最近在研究网络层的接入问题,一些心得记录在下面。
AMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现。
一个互联网技术企业,绝对不是老板出多少钱就一定不会再出现安全漏洞的,也不是老板出的钱越多就代表越重视的,真正的重视体现在研发人员的日常工作中。你的企业没有出现过安全问题,不代表你的团队没有短板,更不代表你的线上没有漏洞,更不代表你的用户数据没有在黑市上买卖。不在乎有没有漏洞,就是认真。
• IO不再神秘
随着所有的在高可用服务器设计上的炒作,以及nodejs背后的风行,我想关注一些IO的设计模式,却一起没有足够的时间。现在正在完成的一些研究,我想最好记下这些资料以备查。让我们跳上IO bus兜风去。
过去的三年,一直奋斗在中国移动互联网一线,历经各种坑爹的情况。以下特做记录。
做单芯片系统和蓝牙模块的厂商主要有:Bluegiga(蓝兆),Texas Instruments(德州仪器),Nordic Semiconductor(北欧半导体),Cambridge Silicon Radio(CSR公司),Broadcom Corporation(博通公司),这几家公司,基本掌控了全球所有的蓝牙、无线、voip、音视频解码等核心技术。(技术门槛岗岗的!)
scribe是facebook开源的分布式日志系统。严格说它只是一个日志处理的节点,与分布式系统相比差很多复杂的节点间的控制过程。不过也贵在它很精简,不容易出现问题。两年多时间以后,线上还没出现过一例scribed自己crash掉的情况。
小公司,三五个人,扯开嗓子开干的情况下,不妨参考一下过去我们淌过的坑。 1.网络 在中国,网络成本是比较贵的(包括托管费用)。分析你的目标用户,如果用户是特别集中在南方或者是北方,这能省些钱,多线机房还是很贵的。同时,移动互联网,特别是中国特色的情况下,各种运营商挂js,各种基站网络不通,如果所在的机房在搜索引擎上一条记录都没有的话,那会很惨,基本上你的用户在手机上是很难过去的。 如果是百分之百的手机上的应用后端,前期数据量不大的情况下,可以考虑租用一些双线机房的机器。搞大了再自己买机器吧,能省则省。 2.硬件 如果要考虑硬件了,说明你的业务量已经到一个阶段了,当然也不排除高富帅创业过程,上来先来一堆高端服务器的。 内存条:注意你买的机器的主板,主板与内存的配合至关重要。常见的三通道主板,尽可能使用三条相同的内存条,高端四通道主板,使用四条相同内存条。
1.scala的数组与java相比是可变的数据结构。
2.for(i <- 0 to 2) 这里的向左箭头是指i的范围,两头是闭区间。
3.list是不可变的,不需要new,list与list之间用:::(三个冒号)可以做连接,::(两个冒号)会产生新的维度的list。
4.var可变,val不可变。崇尚val,不可变对象和没有副作用的方法。
5.Unit类似java的void。
6.object是特殊的class,是单例。
7.maven也可以搞定scala,但是更好用的是sbt。
提供移动互联网做app是个酷毙的事情,同等产品条件下比拼的是渠道。怎么样让渠道人员(非技术)快捷地拿到想到的标识有相关渠道信息的包,是个关键的问题。 因为平台不一样,打包手法也不尽相同,下面总结下54chen在工作过程中遇到的问题和解决的办法。
提供riak_admin只是一个bash脚本,当riak_admin join被执行时,都是在执行riak_kv_console join。
riak_core是一个单独的OTP应用,提供了所有必须的服务,以完成一个现代化的、表现良好的分布式应用。riak_core开始于Riak的一部分。当代码在建立各种分布式应用普遍有用时,我们决定重构并且分离出来核心部分,使其便于使用。 分布式系统是复杂的,riak_core可以满足这些大量复杂的需求。在深入代码之前,我将分离这些需求为明显的分类,且给出每项的概况。 注:如果你是急性子,想跳过后面的直接读代码,你可以通过hg或者git检出riak_core的代码。 节点存活 & 节点关系 riak_core_node_watcher是负责反馈riak_core_cluster内部节点状态的进程。它使用net_kernel有效地监控了许多节点。riak_core_node_watcher也有能力将一个节点按程序预定踢出clus
• 服务接入层小结
接入层 是指普通用户与核心业务逻辑中间的过程。现在常见的服务接入层,像nginx、lvs、php这些都可以算是。 观点 一种观点认为:接入的量不应该影响系统的正常运行,也就是不能接入不能处理的用户请求,类似上图中前图。 另一种观点认为:接入层应该尽量接入所有用户,类似上图中后图。 做法 nginx: nginx如果用做proxy,后端挂其他服务的话,是一个纯粹的NIO server。对用户来说,nginx是长连接(ht...
经过上周一周朋友们帮忙测试和bug fix,nginx_http_hashdos_module已经达到可以线上使用的水平,下面是使用记录。
hashdos这个事,严格意义上不是各种语言的错了(不过perl的确处理得很好)。 借鉴tomcat的作法,实现了下面这个nginx-http-hashdos-module,通过设置hashdos(默认on)的开关和body_max_count(默认值1000),对nginx后面的服务进行安全防护,相比对php或者java进行patch,这或许是最好的办法了。
过去一年时间里,都在做中国移动互联网下的API设计工作,所面对的情况可能是最具中国特色的了。如果你在尝试构架一整套的新的API供你的客户端使用,可以尝试以下的几点: 1)api所使用协议,要能够不怕被加js、加广告和各种代码。 全国各地的运营商,有习惯挂广告、加代码等等,要做的事情就是在客户端做各种解析判断。实践证明,这帮孙子的设备是检测http协议的head头里的content-type,如果是html/t...
近3天十大热文
- [73] Twitter/微博客的学习摘要
- [65] find命令的一点注意事项
- [65] Go Reflect 性能
- [64] IOS安全–浅谈关于IOS加固的几种方法
- [63] 如何拿下简短的域名
- [63] android 开发入门
- [62] Oracle MTS模式下 进程地址与会话信
- [62] 流程管理与用户研究
- [60] 图书馆的世界纪录
- [59] 读书笔记-壹百度:百度十年千倍的29条法则
赞助商广告