現(xiàn)在市面上的編程語言以面向對象為主流。面向對象先要從一些最基本的做起。比如我24歲就結婚了,不然怎么面向對象編程。然后剛結婚就生娃了,不然對象跑了咋辦?new一個?創(chuàng)建銷毀開銷很大的,還是生個娃持續(xù)持有對象的引用的好。
為啥有些人開口說話能說很久,有些人說話有一搭沒一搭的?據(jù)我觀察發(fā)現(xiàn),動手干活差不多的兩個人,會說的將來發(fā)展的會更好。原因從具體實例來感受一下。
和朋友聊天,真的,好幾年前人人網(wǎng)出來的總有點技術極客精神,聊天我們聊技術。人家問我你們視頻是怎么存儲怎么播放的。我說我就是做內(nèi)容,meta的,其他和我無關。天兒就聊死了,自己的格局就下來了。如果說我做的有開發(fā)平臺的東西,里面有上傳視頻的。先調(diào)用云存儲的接口進行一個初始化,他們返回給我們一個視頻介質上傳url。JS端將介質分片的方式上傳到url上。如果網(wǎng)絡中斷或者瀏覽器關閉啥的,可以調(diào)用續(xù)傳接口用新返回的url繼續(xù)傳。續(xù)傳接口帶著總文件大小和目前已經(jīng)收到的文件的大小,JS可以依據(jù)這個判斷從哪個分片繼續(xù)傳。云存儲在另一個部門,他們負責和云轉碼部門進行通信,云轉碼將介質轉成各種格式,至于從原始高清文件轉成各種碼率,怎樣取樣的,DRM數(shù)字版權管理又是怎么做的,由云轉碼部門負責。他們內(nèi)部是用什么策略分發(fā)到各個DNS節(jié)點上的。調(diào)度部門又是怎樣調(diào)度來節(jié)約視頻網(wǎng)站最寶貴的帶寬的,具體細節(jié)我不是很清楚。云轉碼部門將轉換好的各種碼率和視頻url通過MQ的形式傳給我們,我們存到數(shù)據(jù)庫里。
那人家就又問了,MQ你們用的啥呀?我說apache的qpidd。額~~,人家不知道,聊天就聊死了。所以得說MQ都差不多的,和rabbit mq一樣都是基于AMQP高級消息隊列協(xié)議的。這是公司統(tǒng)一的集群,說是安裝部署挺方便的。主流的編程語言也都支持,所以就用了。因為主要是跨部門的通信,主要以方便,節(jié)約溝通成本為主,所以我們的消息體也就是json先壓縮再base64。也沒用protobuf那些二進制的,因為萬一遇到問題,二進制可讀性差,缺乏自描述,不容易排查。
高并發(fā)服務必須有一些緊急方案,比如服務熔斷,降級,隔離,限流,異步RPC等。服務熔斷,降級,隔離大家比較傾向于用netflix開源的分布式服務彈性框架Hystrix。Hystrix也可以限流。但是我們服務用的guava的RateLimiter這種成熟的令牌桶算法來實現(xiàn)。
服務限流是個很簡單的事情。我們的代碼也就幾百行,但是里面有一套比較完整的設計思想,目的是根據(jù)一定的策略(如:url, 平臺來源,url+平臺來源)來做一個業(yè)務細粒度的限流。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26