关于流云

*我们是谁?
我们是天边漂泊的流云
常怀着游子的愁绪
我们曾贪慕青天的高远
也会迷恋新月的柔情
但终有一天我们寻到了故乡
哦,原来她正是这满目疮痍的大地
于是,我们等待风起时把我们连成一片
甘愿化成雨水,浇灌大地

*我们想做什么?

总则
第一条 适应变化
       兵无常势,水无常形。流云应该能够看到、适应、影响甚至主导各种变化因素,包括技术、市场、人心以及天下大势。唯有顺势而变,方能成其大事。
第二条 保持开放
未来流云能做什么和要做什么,我们不做任何限制。
第一阶段的定位
第三条 流云目前处于互联网创业的探索和团队磨合期
       这是我对我们目前状况的基本判断。需要大家的认同。这个阶段,我们要做并且能做的事情如下:
1.         学习、思考、分享创业知识。(举 个例子,我会通过读一些书,了解创业需要什么样的具体的知识,然后形成自己的判断,最后写出总结,放到流云的公共文档存储空间,大家在对其内容进行探讨, 最好争取形成比较一致的结论,大家对某个主题的探讨中最好有争论、质疑,这样,才能使自己和别人的想法更加成熟和正确)
2.         形成和思考创意idea对于其中的好idea,进一步进行分工调研。
3.         探索团队沟通和合作模式。(虽 然我们不能说现在就是在一起创业了,但我们可以认为我们是在探索如何创业,而思考并尝试如何将拥有各项强大“技能”的好友聚集起来,探讨创业的事,是所有 事情的开始。在做的过程中,会遇到问题,这些问题也会在以后可能的创业过程中遇到,如果现在就思考并解决了这些问题,以后就会更有把握了,况且,我觉得我 们搞着搞着,真有可能搞成真的创业!谁说不可能呢!)
4.         技术、IT资讯、以及创业方面的资讯分享。(这个毋庸置疑!)
    5.         以开放的姿态,发现、寻找、邀请善良、优秀、志同道合的人加入。
*我们如何协作?
博客
1.  流云博客
简介:google的博客系统,应该没有“mg词”过滤这个东西,需要翻墙才能访问。
用途:发布团队组织决策、最新消息等。发布一系列技术文章、分享创业心得、读书心得等。
网盘
1.  微软OneDrive
简介:初始有7GB免费空间,没有“mg词”过滤这个东西。有时可能需要翻墙才能访问。
用途:墙外网盘的用途,你们都懂的
2.  百度网盘
简介:容量大,2G,访问速度快
用途:分享一般文件,目前主要考虑电子书。
群组
1.  微信群
用途:侃大山、及时交流心得、讨论团队行动等。
2.  QQ
用途:较正式的会议
*如何加入我们?
一、      意义
也许你觉得现在谈什么“添加新成员”还为时过早,但其实正是时候。我们不能等到有人可能加入的时候,再来谈如何让他/她加入,得先有一套大家都认可的流程,才能顺利高效地通过加入新成员来增加流云的力量。
本流程试图解决以下问题:
1)      如果目前的成员发现有靠谱的人,想让他/她加入,接下来他该怎么办
2)      团队如何考察和决定某人是否让其加入
3)      团队如何主动去物色并吸收人才
4)      如何告诉新加入的人我们在做的事情
5)      如何给新加入的人约束,以至于他/她不会对团队的利益造成损害
6)      新人应该具有多大的权限、权利
7)      新人要履行什么样的义务
8)      等等问题
问题似乎有点多,但我相信,只有解决这些问题的流程建立起来的,流云才能具备有效的“可扩展性”,当有优秀、善良、有和我们类似想法和志向的人出现在我们的视野中时,按照这条流程,我们能够很快和他/她一起合作、探讨甚至真的开始做事。因此,在最开始的时候,也就是现在,就要先把合作中可能的隐患解决掉。
二、      流程
写在前面:以下流程除标红部分,其余部分可以根据实际灵活进行。
1.        推荐
成员发现靠谱的人,把ta的情况介绍给大家。靠谱的标准我认为是:善良、可靠、优秀,大家可以有自己的标准。介绍内容的话,主要是背景和ta能给团队带来什么。
2.        决议
团队探讨并决定是否让其加入,目前,采用一票否决制,即必须所有人都同意其加入,才能进入流程的下一步。
3.        沟通
决定让ta加入之后,推荐人和ta进行沟通
1)吃饭介绍:介绍流云是什么,要做什么,加入之后的好处和义务等。
2)书面资料:比口头稍微形式化的东西
3)流云积累的对外媒介:比如blog等,可以展现给ta我们做的东西。
这个过程推荐人可能需要不断的反馈信息给团队的每个人。
4.        加入
通过ta对流云的了解,如果ta决定加入,那么,需要ta给出一份口头或书面的个人加入说明,说明他对团队的理解和自己要在团队中扮演什么样的角色。
团队根据这份说明,再次进行决议,如果没有致命的缺陷,就应该同意ta的加入。
这个时候可能需要一份更正式的权利义务协议书、保密协议书。当然,最开始的时候,并没有这样做的必要性。
在目前没有权限区分的情况下,团队的所有东西都为ta敞开。
5.        熟悉
ta一份全面的介绍流云的材料,类似新兵指南的东西,ta熟悉我们已有的东西。比如文档、分享、沟通渠道,都建立起来。
到此,ta就可以和大家精诚合作了。
6.        退出机制
在目前阶段,采用以下退出机制:
主动提出退出者:可以走,没有任何限制,但再也没第二次回来的机会。
被动退出者:如果长时间不活跃,对团队没有贡献,我们认为该伙计已经心不在“焉”了,请自觉离开。

创业之如何注册公司

一、      引言
我为什么要了解如何注册公司。也许你会说:这是细枝末节的事,只要有团队有牛逼的想法并且可实现有能力实现,注册公司只是分分钟的手续上的事。这点我也是这么认为的。那么,我又怎么了解起来了呢,原因只有一个:
了解注册公司的条件(比如资金、经营场所、团队规模、运营公司必备知识),然后看自己缺什么,并且,从现在开始就去学习、积累、弥补这些不足。
“非创业不可”不是一句空话。
通过了解之后,我对创业下一步该做什么这个问题的答案确实清晰了很多。“一步一擂台”,下一步走起……
二、      如何注册公司
1.       企业类型
表 我国可登记注册的私营企业类型
代码 企 业 登 记 注 册 类 型
100
171
172
173
174
190
-内资企业
     -私营企业
          私营独资企业
          私营合伙企业
          私营有限责任公司
          私营股份有限公司
另外,我们还常听说个体工商户。下面我们介绍这些企业的概念。
私营独资企业和私营合伙企业的投资者都需要对企业债务负无限责任(合伙企业是连带无限责任)。两者的区别从名称上就可以看出来,前者是一人投资,后 者需两人及两人以上合伙投资。个体工商户不是企业,是公民。即,个体工商户,是指有经营能力并依照《个体工商户条例》的规定经工商行政管理部门登记,从事 工商业经营的公民。
私营有限责任公司和私营股份有限公司则都是“有限的”,即,投资人只需要按出资额对企业的债务承担责任。前者的投资者数量可以只有一个人,这时就是公司法中提到的“一人有限责任公司”。后者的投资者不能只有一个人。
有限责任公司和股份有限公司的主要区别在于:
l 股份有限公司可以发行股票
l 股份有限公司的股东转让股份更加自由
l 股份有限公司的财务状况必须公开
那么,如果想要从有限责任公司变更为股份有限公司是否可行?《公司法》第九条【公司性质改变】有限责任公司变更为股份有限公司,应当符合本法规定的股份有限公司的条件。股份有限公司变更为有限责任公司,应当符合本法规定的有限责任公司的条件。
2.       注册有限责任公司的条件
l  符合法定人数的股东(2-50)
合法的经营场所(根据《注册资本登记制度改革方案》中:“(三)简化住所(经营场所)登记手续。申请人提交场所合法使用证明即可予以登记。对市场主体住所(经营场所)的条件,各省、自治区、直辖市人民政府根据法律法规的规定和本地区管理的实际需要,按照既方便市场主体准入,又有效保障经济社会秩序的原则,可以自行或者授权下级人民政府作出具体规定。”可知,某地区租赁的住宅房是否满足作为营业场所的条件,需要查看当地政府的规定。目前,北京市规定,注册经营场所必须是商业楼房。
l  名称、标志、组织结构、公司章程
l  开设基本账户和纳税账户

注册资金(根据《注册资本登记制度改革方案》中:“放宽注册资本登记条件。除法律、行政法规以及国务院决定对特定行业注册资本最低限额另有规定的外,取消有限责任公司最低注册资本3万元、一人有限责任公司最低注册资本10万元、股份有限公司最低注册资本500万元的限制。”可知,注册有限责任公司可以不用注册资本。注册资本虽然没有下限了,但注册资本关系到企业是否可以顺利经营,应该设一个合理的值,这些资金不需要在注册时立马实缴
3.       注册有限责任公司的流程
l  准备好以上条件中列出的相关材料

验资报告(根据《注册资本登记制度改革方案》,验证报告取消
l  注册:取得执照和印章
l  办理组织机构代码证
l  办理税务登记
l  开设银行基本账号
l  税务报道,领取发票
市场上,有注册代理公司可以提供注册代理、财会支持、商用注册地址租赁等服务。注册代理费用数百元(不包括另外数百元工本费),财会支持和商用注册地址租赁各需要数千元每年。
4.       结论
我们需要注册有限责任公司,这样可以避免无限责任,方便公司未来的扩展,同时可以积累现代公司的运营知识;不注册股份有限公司的原因是开始时,没有 发行股票的需要,等到有这个需要时再将有限责任公司变更为股份有限公司也是可以的。另外,股份有限公司在运营上可能会更复杂,而在公司开始阶段,应以业务 为主,尽量简化流程。
注册有限责任公司的条件中,可以说都没有太大的困难,但都是需要一件件去做的事,包括:
l 前置条件
n 知识:熟悉商业法律法规、熟悉财务流程、熟悉必要的人事管理方法、熟悉公司运营基本知识
n 可盈利业务:先有想法,然后有个小团队探讨、完善这个想法,团队还初步将这个想法转换成了初步的产品或服务,团队对这个产品的未来都持乐观态度
l 确定公司的主营业务
l  确定投资者,投资者确定出资额、组织结构、规章制度、分工合作方式
l  然后根据主营业务确定公司名称、logo
l  租赁商业用房(自租或通过注册代理公司)
l  注册登记(自办或通过注册代理公司)
l  最后,开搞!(此前要有预算、收益预期、行动计划等)

web服务端技术概述之高性能技术

/**
*@简介:本文介绍web服务端的高性能技术,或者说网站性能优化技术
*@创建时间:2014/7/14
*/
一、      什么是网站性能
我们知道,web系统是一个由一个服务端和众多客户端构成的分布式应用系统。该系统的主要功能是接收用户的请求后返回响应结果给用户。那么,从用户使用的角度来看,网站的性能指的是用户操作的响应时间:
       用户响应时间:用户通过客户发起一个操作,到看到客户端返回的响应结果之间的时间间隔。
       网站服务端开发工程师,更多关注的是服务端应用系统(指承载业务逻辑的核心系统,比如Apache+PHP)和相关子系统(比如数据库、缓存系统等)的性能。这些系统的性能指标主要有:
系统响应时间:对系统的操作,从发出操作请求道返回操作结果之间的时间间隔。
系统并发数:系统同时能够处理的请求的数目。
系统吞吐量:系统单位时间内处理的请求数。
系统性能计数器:描述系统性能的一些数据指标,比如system load、对象与线程数、cpu、内存、磁盘IO、网络IO等指标。
       顺便提一下,对于运维人员,所关注的网站性能又有所不同,他们关注的性能是服务端系统基础设施(服务器、网络)本身的性能以及这些资源的利用率。
       对于服务端开发人员,之所以要关注上面提到的服务端系统的4个性能指标,是为了能够使服务端的设计能够满足整个web系统能够提供足够短的用户响应时间。这是业务决定技术设计的一个体现。离开了用户视角的性能,优化服务端做的性能就成了无的放矢的蠢事。
       因此,下文关注的网站性能指的是服务端的4个系统性能。
二、      如何测试(测量)网站性能
我们可以通过模拟真实请求场景,从小规模的请求并发量开始,不断增加并发量,来测试不同并发量下系统的响应时间、吞吐量、性能计数器等性能指标。
       需要知道系统在以下3各阶段的性能指标:
       性能测试:正常运行区间的性能
       负载测试:系统最大负载能力(找出最大负载点)
       压力测试:系统最大承压能力(找出崩溃点)
另外,如果加上稳定性这个指标,还测试系统在特定条件下、特定业务压力下在某段适宜长度时间段内的运行稳定性。
三、      性能优化步骤
1.       利用日志找出哪个环节的响应时间造成系统瓶颈。
2.       利用监控数据,分析导致瓶颈的原因,比如找出是cpu、内存、磁盘、网络问题还是架构设计不合理,或者确实是资源不足等。
3.       使用下一节的高性能技术对服务端性能进行优化。(性能优化也应考虑web前端的优化技术,不过这不在本文的讨论范围内)
四、      服务端高性能技术
以下是本文的重点了,我们将介绍目前互联网业界常用的能够有效提高web服务端性能的技术,通过这些技术,我们的服务端应用系统就能够跻身高性能的行列。
正如上文提到过的,技术是服务于业务的,也就是说,本节所列的高性能技术主要要解决的问题是:如何在高并发访问的情况下,缩短用户视角的响应时间。同时,需要注意的是,这些技术不可避免的会导致服务端架构的复杂化以及系统内部的网络延迟,这样可能会导致性能优化后,高并发访问的响应时间缩短了,但低并发访问的时间却延长了,这个问题需要我们心里有数。
CDN
能够在网运营商机房部署的CDN服务器缓存服务端的内容(要有更新或同步机制),这样,客户端能够在网络的第一跳就能访问到所需要的内容。
另外,CDN技术还能够将客户端的访问流量导到离该客户端最近的内容提供商的机房,这样同样可以缩短响应时间。
反向代理
反向代理是一台服务器(应该也可能集群),它在部署在web服务器前,代理网站web服务端的http请求。
在这里通过缓存数据和使用负载均衡技术(均衡地转发http请求到web服务器集群)缩短响应时间。
分布式缓存
缓存指将数据存储在访问速度相对较高的存储介质中。在web后端系统,这一般指把原先放在磁盘上的数据缓存到内存中。
缓存的目的是提高数据的访问速度和减少计算时间(把计算结果缓存起来无需重复计算)。
内存的缓存,本质上是一个内存hashtable。
缓存的使用同样要考虑业务,业务必须满足一些特点才适合使用缓存,这些特点包括:
1.       数据读写比高,写入缓存的数不能是频繁修改的,且被读取的次数应该很多次。
2.       有热点数据。
3.       能够忍受一定时间的数据不一致。(缓存的失效时间可能带来的数据不一致)
使用缓存的另外一些注意事项:
1.       缓存崩溃,不应该导致数据库承受不了压力而跟着崩溃,可以使用缓存集群来改善缓存的可用性。
2.       使用缓存预热使系统在缓存建立数据时的负载均衡。
3.       将不存在的数据也存起来防止缓存穿透(高并发请求缓存中不存在的数据,直接穿透缓存给数据库造成压力)
上面指出,单台缓存有可用性不高的缺陷,那么,现在一般使用分布式缓存,指的是部署在多个服务器组成的集群中的缓存。一下介绍一个典型的分布式缓存系统——Memcached。
Memcached由客户端和服务端组成,客户端部署在每台应用程序服务器(Apache+PHP)上,服务端部署在缓存集群的每一台服务器上。客 户端和服务的直接的通信使用TCP协议(也支持UDP),通信协议的序列化使用一套基于文本的自定义协议,Memcached的服务端使用 libevent这个事件触发的网络通信库,该库具有稳定的长连接特性。最最重要的是,Memcached使用:
一致性hash算法在集群中路由缓存数据的读写。
关于一致性hash是什么以及如何进行路由的,以后再介绍。敬请期待。
异步操作
异步操作的概念很简单,即将请求数据先存储在一个消息队列中,数据库作为消费者来取队列中的数据。这样,用户写数据库的操作就无需等待数据库,只有把要写的内容扔到队列中就可以直接返回了。等到数据库写完,再给用户一个异步的通知。
这种模式的基本前提是,消息队列服务器的速度要远快于数据库服务器。
       需要注意的是,使用消息队列,可能需要适当修改业务流程进行配合。
使用集群
       使用集群的目的,是将请求均衡地分发给应用服务器,避免单一服务器因为负载压力过大而导致高响应时延。
代码优化
多线程:系统会为每个用户请求创建一个线程进行处理,使用多线程可以在IO阻塞或多CPU系统中充分利用CPU 资源。对于计算密集型任务,线程再多也没用,因为CPU资源就那些;而对于IO密集型任务,多线程有助于提供任务的并发度,因此可以提供系统吞吐量,改善 系统性能,缩短高并发时的平均响应时间。
资源复用:对于无需重复的资源,使用单例;使用对象池复用对象实例,减少对象创建和资源消耗。比如数据库连接池、线程池。
数据结构:好的数据结构能够大大优化程序性能。
垃圾回收机制:该机制可能会对web服务端的性能产生很大影响,比如java垃圾回收机制中的全量回收会对系统的性能产生较大影响。
存储性能的优化
当前的一个事实是:机械磁盘的连续访问速度快而随机访问速度慢。而随机访问性能表现好的SSD(固态硬盘)目前还不太成熟,没有大规模投入使用。
       当前的数据库或文件系统,通常会对数据进行排序后存储,以加快数据检索的速度,传统的关系型数据库一般用B+数,但B+数中的数据访问多涉及随机读写,磁 盘性能差;另外,NoSQL产品采用了LSM数作为主要的数据结构,由于LSM更多地利用了内存,因此磁盘访问次数大幅度较少,加快了访问速度。
       即,在当前的以机械磁盘做为主要存储介质的系统中,LSM具有更快的速度。
RAID
       RAID可以理解单机上的多块磁盘构成的磁盘阵列。用来实现数据的并发读写和数据备份(增加可靠性)。该技术在传统的关系型数据库和文件系统的较常用。而在NoSQL以及分布式文件系统中,多用HDFS。
HDFS
       HDFS是在存储集群的多台服务器上进行数据并发读写和备份。
       备份指当应用程序写一个文件时,会被另外复制到另外两台机器上。
       并发指通过MapReduce并发技术框架,可以启动多个计算子任务同时读取多个文件块。至于MapReduce是什么以及如何做到这么牛掰的功能,敬请期待后续文章。
       总结一下我们的高性能技术:   
技术本质 实例
缓存 CDN,反向代理,分布式缓存
异步 异步操作
负载均衡 集群
并发 多线程、RAID、HDFS
复用 对象池
冗余 RAID、HDFS
       对于服务端研发工程师而言,和开发最相关的当属分布式缓存、代码优化(多线程、对象池、数据结构)、异步操作(消息队列)
五、            一些待学习的较深入的主题
分布式缓存

分布式缓存原理剖析(一致性hash原理)
分布式缓存实例的使用
Mapreduce并发技术框架原理
B+树和LSM树原理深入学习
消息队列技术概述
服务器集群构建原理和方法
PHP和JAVA高并发代码优化技术
……
(长路漫漫,敬请期待)
六、      参考资料
《大型网站技术架构-核心原理与案例分析》

web服务端技术概述之高可用技术

/**
*@简介:可用性关系到网站的生死,甚至比性能更重要,本文介绍网站常用的保证其可用性的技术。
*@创建时间:2014/7/14
*/
一、      什么是网站可用性
很简单,可用性就是网站的可访问性。它的度量指标是正常运行时间占所有运行时间的比例。测量方式是实际运行一个服务,测量其不可用的时间。
网站为什么不可用?主要的原因是服务器硬件故障,比如磁盘,比如网络等。那么,所谓的保证网站的可用性,就是要在服务器可能因硬件故障而怠机的前提下设计保证网站可用性的网站架构。
二、      保证网站可用性的基本方法
网站可分为3个层次:
应用层:负责主要的业务逻辑
服务层:提供公用(通用)的服务
数据层:提供数据的读写
每个层次的系统,因为其所提供的功能不同,使用的可用性技术也有所区别。概要的可用性技术如下表所示:
系统 可用性技术
应用层 负载均衡
服务层 负载均衡
数据层 冗余备份
三、      应用层的可用性技术
对于无状态的请求,当应用集群中的某台服务器当机时,负载均衡服务器会通过心跳检测技术检测到,它会将怠机的服务器从集群中移除,并进行失效转移,即将原来转发给该服务器的请求转发给其他服务器。
对于有session状态的应用集群,比较成熟的方法是使用session服务器集群将状态和应用分离,以使应用服务器怠机不影响session。当然还有别的方法。
四、      服务层的可用技术
基本的方法也是使用和应用层类似的负载均衡技术。此外还有一些实践中产生的高可用性技术或策略:
服务器按业务的重要程度进行分级管理;
设置超时时间以及时通知应用;
异步调用以使任务在时间顺序上解耦;
服务降级以扛住高峰并发压力;
使用幂等设计保证应用在重复调用服务时产生相同的结果。
五、      数据层的可用技术
基本的方法当然是备份了。备份分为冷备份和热备份。冷备份指定期备份,缺陷是不能保证数据始终一致和不能保证数据可用性(在切换到备份的过程始终可访问,并且在用户无感知)。热备份指实时备份,即数据写入时即备份到其他存储空间中去。热备份又可分为:
异步热备份:先写入一台服务器后即返回成功的响应,至于备份到其他机器,是之后再异步地进行。这就可能有后续写操作失败的可能。
同步热备份:同时写入多台平等的机器,都写成功了才返回。由于采用了并发写的技术,速度上和异步的方式差不多。
另外值得一提的是CAP原理:
数据系统无法同时满足数据一致性、可用性和分区耐受性(跨网络区域的伸缩性)。
因此,大多数网站选择牺牲部分一致性。
六、      从软件方面保证可用性
网站发布采用优雅发布(即平滑过渡,集群中的机器一部分一部分地逐渐发布),需要知道的是,网站发布时,实际上必须重启(或中断)应用系统,这等于怠机的效果。
       采用web自动化测试保证质量;
       进行预发布验证;(在和线上环境一样的预发布服务器上进行发布并检查结果)
       代码控制,一般使用主干发布,分支开发;
       使用火车发布模型的自动化发布,提高发布效率,当然该模型必然存在一些问题;
       使用灰度发布,有2个内内涵,一个其实指的就是优雅发布,另一个指AB测试。
七、      进行网站监控以保证可用性
监控需要采集的数据包括:
用户行为日志(服务端采集和客户端采集是2种采集手段)
服务器性能监控(OP负责服务器系统基本性能的采集)
运行数据报告(需要RD加入特定的数据采集逻辑)

八、    参考资料
《大型网站技术架构-核心原理与案例分析》

电子资源汇总

电子书类
1.编程随想分享的电子书
简介:层次较高的图书,特别是zz类书。
链接:
https://onedrive.live.com/?cid=F5B0090663FEEADA&id=F5B0090663FEEADA!828