【源创专访】魅族高级工程师于洋子:服务端架构设计与开发,数年磨一剑

于洋子,开源项目贡献者。专一于高并发高性能服务端架构设计与开发工做。现为魅族高级工程师,目前负责 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说些什么?

开源这方面,国内与国外相比仍是有些落后的,但其实不论是开源做者数量仍是基础技术,国内都不该比国外差,开源是不少互联网公司的基石,但愿更多的人参与进来,把咱们国内的开源事业作的更好。

相关文章
相关标签/搜索