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

泄露秘密 提交于 2019-12-01 09:17:00

于洋子,开源项目贡献者。专注于高并发高性能服务端架构设计与开发工作。现为魅族高级工程师,目前负责 C++微服务架构设计和开发。在于洋子看来,技术这个行业是需要深耕细作的,尤其是服务端开发防方向。本期,他将与大家分享这几年来他的技术经验,在工作中遇到难题是如何攻破的。

1、能否先介绍一下你自己(技术背景、工作经历、学习经历)

我叫于洋子,目前在珠海魅族科技工作,主要是负责C++微服务架构设计和开发。期间也参加过一些其他如flyme通讯、推送平台、实时大数据统计等项目的开发。

2、当初使用C++构建微服务框架是基于什么样的考虑?

当初是出于几点考虑:

     1.C++的性能非常不错

     2.人员招聘简单,在项目初期c++就已经是非常流行的语言了,相对来说人员比较好招

     3.C++的可定制性是最好的,比如我们发现异步模型开发效率不理想时,可以自行定制一个libgo这样的CSP模型的协程库来替代异步模型。

 在编码方面也定制了很多语法糖简化我们的编码复杂度、提高开发效率。

3、听闻你在魅族参与过多个项目,那在这过程遇到的最令你印象深刻的技术难题是什么?

印象最深刻的要属我们今年年中做的一次架构分离,最初flyme通讯业务与我们的PUSH项目在架构上是深度耦合的,服务端、客户端、甚至连协议都是耦合在一起的。

 后来我们发现这种耦合给业务形态相对简单的PUSH项目带来了很多不必要的麻烦,我们决定把他们在架构上分离开,变成两个完全独立的项目。

在架构分离的过程中,最大的难点就是如何做到既要从旧版本平滑过渡到新版本、又要分离的足够彻底,不能藕断丝连。同时服务端还要对两个版本做到完全兼容,让部分不愿升级的老用户也可以继续顺畅地使用我们的服务。

为此,我们经过了为期两周的预研和讨论,最终制定了"数据上行架构"和"数据下行架构"两套即能够适应当前所有业务流程、又足够简洁的通用子架构:上行请求全部

在兼容层转换成新协议,再通过MQ传递给flyme通讯服务;下行请求全部由直接发送信令改为推送通知,在兼容层将推送重新转化为旧版信令。再将所有业务流程全部梳理一遍,按照这两套子架构的模式进行重构,最终花了2个月左右的时间完成了这次架构分离。 

4、我们了解到,你专注于高并发高性能服务端架构设计与开发工作,那有没有一些“过来人”的经验分享给开源中国上那些刚入行的朋友呢?

首先,热烈欢迎“新入坑”的朋友们(开个玩笑~~)。我要恭喜你们,你们非常有眼光,选择了一个很棒的行业。

      1. 建议刚入行的朋友们不要急于在某一个领域进行深度探索,先让自己有一定的技术广度,多多了解行业,选定一个自己感兴趣的方向再进行深度探索。

      2. 淡泊明志,宁静致远。技术行业,尤其是选择服务端开发方向,绝不是可以速成的,一定要抱着数年磨一剑的心态去深入探索,才能有所斩获。我建议在深入探索之前,你应该先找个女朋友或者男朋友,因为你对技术的探索可能会持续一生。

      3. 正所谓一人智短众人智长,多与同行、同事进行面对面的交流,多听也要多说,通常都能有不错的收获。

5、作为开源项目贡献者,近期你有没有接触新的开源技术或有哪些新技术(新项目)可以推荐给大家的?

首先要隆重推荐一下我们魅族的开源项目:libgo.  这个项目旨在全面提升C++语言在服务端方向的开发效率,欢迎广大C++er一起参与进来。

然后,推荐一下google今年开源的benchmark,非常不错的性能测试lib,语法上和google的gtest一脉相承,使用简单快捷,结果展示清晰美观。很好地解决了性能测试中常见的预热、时间精确度等问题。

6、你对源创会及开源中国社区有什么意见和建议?

这是我在同事的推荐下,第一次参加源创会。整体印象非常好,在形式和内容上非常好,观众也听得很专注。今天下大雨,但到场率100%,知名度是很高的。我建议源创会可以加大宣传力度,让更多的人参与进来。

我自己的开源软件有新的版本发布都会在开源中国社区投递新闻。目前还没有项目托管到码云平台,如果后续有时间会考虑托管。

7、最后,你想对Oscer说些什么?

开源这方面,国内与国外相比还是有些落后的,但其实不管是开源作者数量还是基础技术,国内都不应比国外差,开源是很多互联网公司的基石,希望更多的人参与进来,把我们国内的开源事业做的更好。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!