鼹鼠工厂系列文章:从零开始实现完整的社交网络系统1(序言)

来源:互联网 发布:派派社交软件 编辑:程序博客网 时间:2024/06/13 09:28

       Human knowledge belongs to the world!

社交网络,源于英文单词SNS(Social Network Service),即社交网络服务。


 1     

就在一周前,腾讯公司股价飙涨,一度达到439港元,市值达到40845.37亿港元(5228.27亿美元),超越同样是做社交网络的Facebook,成为全球第五大市值的公司,这在整个世界互联网行业里引发了不小的关注,我们不禁惊诧于这只帝企鹅萌态外表下的强悍,同时也在思考:这家创立于1998年11月,仅19岁的公司如何做到在短短十几年之间成为互联网上的超级巨无霸?社交网络到底意味着什么?在这一领域还剩下哪些机会?我们还能够从中挖掘到什么?



 2    

从过去的2017年里,虽然QQ、微信依旧一家独大,但我们看到其它应用也十分活跃,以陌陌为例,在2017年第一季度,陌陌净营收达2.652亿美元,月活跃用户达到8520万,创下历史新高,第二季度营收达3.122亿美元,净利润7380万美元。虽然第三季度数据得明晚九点钟才公布,但在可以预料的将来,这也是一笔令创业者感到非常羡慕的收入,整个社交领域都呈现资本比较活跃的状态,一些我们日常中并没怎么注意到社交app,比如探探,于今年6月获得了由欢聚时代、众为资本、元生资本等机构的7000万美元D轮融资,由此可见,整个社交领域依然存在机会,一切取决于寻找到一个正确的切入点。

鼹鼠工厂从创立伊始就在关注社交网络,我们的一个重要的研究方向就是社交网络背后所涉及到的各种技术问题,并试图从零开始独立构建一套完整的社交网络,并将其中所涉及的全部知识分享给鼹鼠工厂的粉丝们,但凡做互联网技术工作的童鞋们日常工作之中总会有类似需求,对于刚入职不久的小伙伴们,所能想到的方案就是借助比如环信、极光、融云之类的第三方来完成自己的系统,在这个过程中除了会遇到各种坑之外,还得不断的满足老板提出的各种奇葩功能要求,这种情况下,与其花大力时间去研究如何使用别人家的通讯系统来满足自己家的业务需求,不如自己从零开始独立开发一套,站在数据后台,你,就是上帝!那种掌控一切的感觉本身就是特别爽快的,从本章开始,我们将从零开始构建一套完整的社交网络,通过本系列文章,你将可以拥有一套完全属于你自己的社交通讯系统。


 3    

显然,从技术这个角度出发,整个即时通讯系统的关键技术在于服务器后台,我们的编码工作也将从服务器开始,按照我们的[超级企鹅]计划,我们将尽快完成这套即时通讯系统的后台服务器代码,届时包括android端和IOS端甚至是PC端的源码都将纷纷开源出来,一些技术牛掰的童鞋也可以按照鼹鼠工厂定义的网络通讯协议,自己写客户端接入到我们的服务器中来,或者干脆自己开发服务器端,以提升自己的编程实力,对那些开放自己所写源代码的童鞋,我们将予以红包奖励,有兴趣参与技术开发讨论的可以加入我们的QQ群:鼹鼠工厂开发群:


鼹鼠工厂开发群   QQ群号:588452389


言归正传,回到主题,要实现这样的一套系统,显然需要借助高并发长连接来实现,就个人喜好而言,性能最理想的当然是使用C++语言基于Linux的epoll机制来实现高并发处理,腾讯的微信后台就是这么干的,关于这部分,用兴趣的童鞋可以参考其开源项目libco:


https://github.com/tencent/libco


如果有擅长C++的童鞋愿意挑战,也可以尝试使用C++来实现一套类似的系统来搭建后台业务,就目前而言,为图简单省事、最短时间内部署,我将使用Java来实现一套即时通讯系统后台,并在这个基础上搭载我开发的微讯App供鼹鼠粉丝作为客户端实验(以前一直使用第三方推送来实现的消息接收发送),在前期用户规模有限的情况下,这绝对足以满足我们的所有业务需求,就Java而言,可供我们选择的性能比较优秀的NIO框架就Mina和Netty了,两者本是一个程序员所写,相比之下,Netty更加优秀,所以我们暂且打算基于Netty来实现我们的系统。

      Netty封装了绝大多数底层NIO操作,以便我们专注于业务本身,所以使用起来也非常简单,简单几句代码即完成了初步的Netty服务器后台代码:

        

       结语:

        当然,这段代码几乎不能产生任何作用,它仅仅是一个即时通讯后台的初始化代码,万里长征我们才站上了起跑线,接下来,我每走一步将以文章的形式记录下来我们的步骤和方法,供鼹鼠工厂粉丝们阅读,欢迎订阅鼹鼠工厂技术文章系列,欢迎加入鼹鼠工厂!


原创粉丝点击