那个能叫架构说明吗
陈速收到了一封标题是“直播系统架构”的新邮件,一看发件人是葛栋山。看来葛栋山终于将直播架构梳理完了,他打开邮件内容一看,几乎要笑出声来。
原来葛栋山弄的这个所谓架构说明,就是在内网用开源软件搭了个服务,以可视化的方式呈现线上部署节点的逻辑关系。但这仅是部署说明啊,跟架构一毛钱关系也没有。
陈速决定去找葛栋山好好聊一下。葛栋山看见陈速过来,客气地让座,问道:“陈老板找我有啥事?”
“我刚看你发的那个邮件了,” 陈速开门见山地说,“洪总不是让你梳理架构吗?那个能叫架构说明吗?”
“哎,你不知道,陈老板,” 葛栋山苦着脸说,“你说这直播的事,其实最清楚里头细节的就是你了。我这人却又最不喜欢做别人做好的事儿。我喜欢弄新东西,要是让我研究公司没用过的一些开源工具,解决新问题,这个我乐意。”
“可整理直播架构这事,也不是一点意义也没有呀。” 陈速觉得葛栋山这人还挺有意思的。
“我知道,” 葛栋山点点头,“领导们当然希望直播这事儿,能有越多人了解越好。但我是真没兴趣,就这么着吧,我顶多做成这样了。领导要是不满意,我也没办法了。”
“哟,可以呀,” 陈速有点哭笑不得了,“也不怕你们领导削你呀。”
“这个随便,”葛栋山顽皮地笑了笑,“我手上也不止忙这一件事呢。别的事催得比这紧啊。”
陈速摆摆手就走了,葛栋山这性格还真是出乎他意料。看来现在的小伙伴们都是有自己想法的,不像自己刚入行那会儿,给个什么活都咬着牙干。
经过测试组那边的时候,詹季明招呼上了:“陈老板,过来一下,有个事问你。”
“怎么了,老詹?”陈速转到了他身旁。
詹季明却没有马上开口,而是伸着脑袋望了望,小声地说:“你知道钟展鹏带着葛栋山,在看CLS的代码吗?”
“我不知道,怎么了?”陈速下意识地就回了这一句,随后他从詹季明的眼神里读懂了更多的意思,但他不想去迎合詹季明的猜测。于是陈速补充说:“这不奇怪啊。洪总最近不是让葛栋山编写直播系统的架构说明吗?有些细节肯定得看代码才知道啊。”
“哎,我听说的不止这些,”詹季明又是一副欲言又止的样子,“算了,也许是我搞错了。陈老板你忙去吧。”
陈速无奈地笑了笑,他一边往回走的时候也一边在想一个问题:如果真如詹季明所说,他们已经在看CLS的代码了,那怎么从来没有问过自己问题?正常来说,先让陈速讲一遍代码逻辑,他们自己再看不是更顺利吗?
陈速现在有点明白詹季明的疑虑是什么了,但为此担心却又显得虚无缥缈。不管怎样,还是那句话,先做好自己手上的工作吧。
可靠UDP传输
陈速定定神,想着CLS要配合P2P传输增加哪些功能。不防身后有一个声音说道:“陈老板,有空没,问个事?”
回头一看,原来是刘成玉,陈速赶紧拉过一张空椅子让他坐下。陈速问着:“成玉兄,你这边想了解啥?”
“主要是关于你的CLS,它的原理是咋样的?” 刘成玉直奔主题。
陈速对于技术交流向来抱持开放心态,他从不认为人人都可以看到的代码能隐藏些什么。陈速拿过一张A4打印纸,随即边画边讲解。从源站编码服务到超级节点,再往下是各个省会的二层中转,再下来是省内的各个地级市节点。
陈速画了一张树形结构的示意图,刘成玉频频点头,并不时在关键处提出一些问题。与刘成玉的交流是畅快的,陈速从他的提问中就知道刘成玉完全明白了自己的意思。与一个优秀的技术人交流是一件很快乐的事情,陈速想说这大概就是心有灵犀一点通的感觉吧。
随后刘成玉又问了陈速CLS在内部实现细节上的诸多问题,陈速也一一如实相告。最后,刘成玉笑着说:“陈老板,你这套东西其实实现得挺简单的啊,这才是它运行得这么稳定的原因吧?”
“哎,成玉兄果然是明白人,” 陈速大有相见恨晚似地拍了拍他的肩膀,“不过这也是后来一路简化下来的结果 。你不知道第一版设计出来的时候,那结构有多复杂,哈哈。” 陈速想起当初肖平安做的那些设计。
“这样是最好的,” 刘成玉似乎也心生感慨,“点播那边有些东西就是过于复杂了,但因为很多东西是遗留下来的,要想改也不容易。现在是只要程序能运行不崩溃,谁也不敢动。但如果想要增加个功能,那就要了命了。”
陈速闻言也是一阵沉默,只得再拍了拍他的肩膀。陈速看着梁江峰没日没夜的加班就能体会到,相比于他,陈速总是到点下班,这让梁江峰是羡慕不已。
“那这样吧,传输协议就不用增加了,还复用CLS的吧。” 刘成玉又把话题扯回了眼下的工作上。
“我这没问题,我把协议文档发给你吧。” 陈速说着就动手打开Foxmail,给刘成玉发工作邮件。
忽然,陈速想到了一个之前思考过的问题,这会儿正好可以问刘成玉:“成玉兄,我想问一下,就是P2P这边节点间互传数据用UDP的话,怎么解决丢包乱序问题?”
刘成玉闻言也是想了一会儿,才说:“我就这个事跟洪总也聊过一次,打算做一个工具库,实现一个简单的可靠UDP传输。陈老板这儿有什么好主意?”
“我也想不到啊,” 陈速实话实说,“我就想要保证不丢包不乱序,那得有出错重传吧?还得有拥塞控制吧?滑动窗口也得有吧?那这一套整下来跟实现一个TCP协议栈有啥区别?”
“是,如果考虑得太完美,最后的结果就是又实现了一个TCP协议。” 刘成玉也表示认同,但他随后补充说:“不过洪总的意思是可以不必那么全面,达到最核心的要求就可以。我想这里头最要紧的还是数据不能少,所以出错重传是核心。至于乱序,就不在传输这一层解决,反正咱们的私有协议头里有序号,就放到缓存实现里去考虑了。”
“原来是这样想的……” 陈速一边点着头也一边陷入了沉思,连刘成玉什么时候离开的也不知道。之前陈速认为这是一个无解的问题,所以他为此纠结了很久。但现在看来,做不到完美的解决,那么就从最核心的问题开始想办法,在功能上做出一定的妥协,也不是不可以。
陈速有点意识到,凡事追求完美的做法,并不见得都是最合适的。根据实际情况,能把问题先解决掉才最重要。否则,按陈速之前的思维方式,这事儿连设计都出不来。陈速觉得自己还是挺有收获的。