於洋子,開源項目貢獻者。專一於高併發高性能服務端架構設計與開發工做。現爲魅族高級工程師,目前負責 C++微服務架構設計和開發。在於洋子看來,技術這個行業是須要深耕細做的,尤爲是服務端開發防方向。本期,他將與你們分享這幾年來他的技術經驗,在工做中遇到難題是如何攻破的。c++
一、可否先介紹一下你本身(技術背景、工做經歷、學習經歷)架構
我叫於洋子,目前在珠海魅族科技工做,主要是負責C++微服務架構設計和開發。期間也參加過一些其餘如flyme通信、推送平臺、實時大數據統計等項目的開發。併發
二、當初使用C++構建微服務框架是基於什麼樣的考慮?框架
當初是出於幾點考慮:異步
1.C++的性能很是不錯微服務
2.人員招聘簡單,在項目初期c++就已是很是流行的語言了,相對來講人員比較好招高併發
3.C++的可定製性是最好的,好比咱們發現異步模型開發效率不理想時,能夠自行定製一個libgo這樣的CSP模型的協程庫來替代異步模型。性能
在編碼方面也定製了不少語法糖簡化咱們的編碼複雜度、提升開發效率。學習
三、聽聞你在魅族參與過多個項目,那在這過程遇到的最令你印象深入的技術難題是什麼?測試
印象最深入的要屬咱們今年年中作的一次架構分離,最初flyme通信業務與咱們的PUSH項目在架構上是深度耦合的,服務端、客戶端、甚至連協議都是耦合在一塊兒的。
後來咱們發現這種耦合給業務形態相對簡單的PUSH項目帶來了不少沒必要要的麻煩,咱們決定把他們在架構上分離開,變成兩個徹底獨立的項目。
在架構分離的過程當中,最大的難點就是如何作到既要從舊版本平滑過渡到新版本、又要分離的足夠完全,不能藕斷絲連。同時服務端還要對兩個版本作到徹底兼容,讓部分不肯升級的老用戶也能夠繼續順暢地使用咱們的服務。
爲此,咱們通過了爲期兩週的預研和討論,最終制定了"數據上行架構"和"數據下行架構"兩套即可以適應當前全部業務流程、又足夠簡潔的通用子架構:上行請求所有
在兼容層轉換成新協議,再經過MQ傳遞給flyme通信服務;下行請求所有由直接發送信令改成推送通知,在兼容層將推送從新轉化爲舊版信令。再將全部業務流程所有梳理一遍,按照這兩套子架構的模式進行重構,最終花了2個月左右的時間完成了此次架構分離。
四、咱們瞭解到,你專一於高併發高性能服務端架構設計與開發工做,那有沒有一些「過來人」的經驗分享給開源中國上那些剛入行的朋友呢?
首先,熱烈歡迎「新入坑」的朋友們(開個玩笑~~)。我要恭喜大家,大家很是有眼光,選擇了一個很棒的行業。
1. 建議剛入行的朋友們不要急於在某一個領域進行深度探索,先讓本身有必定的技術廣度,多多瞭解行業,選定一個本身感興趣的方向再進行深度探索。
2. 淡泊明志,寧靜致遠。技術行業,尤爲是選擇服務端開發方向,毫不是能夠速成的,必定要抱着數年磨一劍的心態去深刻探索,纔能有所斬獲。我建議在深刻探索以前,你應該先找個女友或者男友,由於你對技術的探索可能會持續一輩子。
3. 正所謂一人智短衆人智長,多與同行、同事進行面對面的交流,多聽也要多說,一般都能有不錯的收穫。
五、做爲開源項目貢獻者,近期你有沒有接觸新的開源技術或有哪些新技術(新項目)能夠推薦給你們的?
首先要隆重推薦一下咱們魅族的開源項目:libgo. 這個項目旨在全面提高C++語言在服務端方向的開發效率,歡迎廣大C++er一塊兒參與進來。
而後,推薦一下google今年開源的benchmark,很是不錯的性能測試lib,語法上和google的gtest一脈相承,使用簡單快捷,結果展現清晰美觀。很好地解決了性能測試中常見的預熱、時間精確度等問題。
六、你對源創會及開源中國社區有什麼意見和建議?
這是我在同事的推薦下,第一次參加源創會。總體印象很是好,在形式和內容上很是好,觀衆也聽得很專一。今天下大雨,但到場率100%,知名度是很高的。我建議源創會能夠加大宣傳力度,讓更多的人蔘與進來。
我本身的開源軟件有新的版本發佈都會在開源中國社區投遞新聞。目前尚未項目託管到碼雲平臺,若是後續有時間會考慮託管。
七、最後,你想對Oscer說些什麼?
開源這方面,國內與國外相比仍是有些落後的,但其實不論是開源做者數量仍是基礎技術,國內都不該比國外差,開源是不少互聯網公司的基石,但願更多的人蔘與進來,把咱們國內的開源事業作的更好。