现在市面上的编程语言以面向对象为主流。面向对象先要从一些最基本的做起。比如我24岁就结婚了,不然怎么面向对象编程。然后刚结婚就生娃了,不然对象跑了咋办?new一个?创建销毁开销很大的,还是生个娃持续持有对象的引用的好。

  为啥有些人开口说话能说很久,有些人说话有一搭没一搭的?据我观察发现,动手干活差不多的两个人,会说的将来发展的会更好。原因从具体实例来感受一下。

  和朋友聊天,真的,好几年前人人网出来的总有点技术极客精神,聊天我们聊技术。人家问我你们视频是怎么存储怎么播放的。我说我就是做内容,meta的,其他和我无关。天儿就聊死了,自己的格局就下来了。如果说我做的有开发平台的东西,里面有上传视频的。先调用云存储的接口进行一个初始化,他们返回给我们一个视频介质上传url。JS端将介质分片的方式上传到url上。如果网络中断或者浏览器关闭啥的,可以调用续传接口用新返回的url继续传。续传接口带着总文件大小和目前已经收到的文件的大小,JS可以依据这个判断从哪个分片继续传。云存储在另一个部门,他们负责和云转码部门进行通信,云转码将介质转成各种格式,至于从原始高清文件转成各种码率,怎样取样的,DRM数字版权管理又是怎么做的,由云转码部门负责。他们内部是用什么策略分发到各个DNS节点上的。调度部门又是怎样调度来节约视频网站最宝贵的带宽的,具体细节我不是很清楚。云转码部门将转换好的各种码率和视频url通过MQ的形式传给我们,我们存到数据库里。

  那人家就又问了,MQ你们用的啥呀?我说apache的qpidd。额~~,人家不知道,聊天就聊死了。所以得说MQ都差不多的,和rabbit mq一样都是基于AMQP高级消息队列协议的。这是公司统一的集群,说是安装部署挺方便的。主流的编程语言也都支持,所以就用了。因为主要是跨部门的通信,主要以方便,节约沟通成本为主,所以我们的消息体也就是json先压缩再base64。也没用protobuf那些二进制的,因为万一遇到问题,二进制可读性差,缺乏自描述,不容易排查。

  高并发服务必须有一些紧急方案,比如服务熔断,降级,隔离,限流,异步RPC等。服务熔断,降级,隔离大家比较倾向于用netflix开源的分布式服务弹性框架Hystrix。Hystrix也可以限流。但是我们服务用的guava的RateLimiter这种成熟的令牌桶算法来实现。

  服务限流是个很简单的事情。我们的代码也就几百行,但是里面有一套比较完整的设计思想,目的是根据一定的策略(如:url, 平台来源,url+平台来源)来做一个业务细粒度的限流。

  iOS培训,Swift培训,苹果开发培训,移动开发培训

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式