第七十八章 技术对接
“好。”韩非说,“温杰,你先来说说系统的情况。”
温杰站起身来,从包里抽出一沓纸,那是上午列印好的架构说明书和待优化清单。他把纸分发给技术小组成员,然后打开笔记本电脑,把界面同步到会议桌尽头的背投电视上。
“各位,我先简单过一下现有架构。”温杰点开一张图,“目前我们是单机部署,apache+php+mysql,做了基础的读写分离。sp接口这块,我写了一个独立的验证模块,走的是移动的普通通道,计费回调加入了ip白名单和签名验证......”
温杰讲得很顺,语速不快,但条理清晰。从资料库结构讲到缓存策略,从负载均衡的初步方案讲到自研的a/b测试模块雏形。虽然全程没有看稿,中间却毫无停顿。
周明一边听一边微微点头,偶尔在笔记本上记两笔。林峰盯著屏幕,手指在膝盖上轻轻轮敲著,仿佛是在模擬代码逻辑。王哲翻著那沓纸,时不时抬头看一眼温杰。
十五分钟后,温杰讲完,垂下手臂,正好跟低低的太阳消失在云层后是同一时间,他们身后那片方形的大光块也消失了。会议室里安静了几秒。
周明合上笔记本,看著温杰:“那个a/b测试模块,是你自己写的?”
“嗯,刚搭好一个框架,还是了参考了国外案例做的,想用来对比不同文案的转化率,能不能做成还不知道呢。”
周明难得地露出一丝笑意:“有想法。总部很多项目组,做了一年都没把这东西落地。”
温杰笑了笑,有些不好意思。
林峰看了看周明,不太確定该不该站起来,最后还是决定坐著。“温工,你刚才说的资料库拆分,现在到什么程度了?”
“表结构已经分好了,”温杰切出三张表格结构图,“包含了用户库、订阅库,和內容库三套,但跨库查询还没优化,目前是用应用层做聚合。比如说,要查某个用户订阅了哪些內容,需要先查询订阅库拿到內容id,再去內容库获取详情。这个逻辑现在写在php代码里,循环查询,效率肯定会有影响。”
林峰皱起眉头,手指在膝盖上敲得更加用力了:“这个聚合层早晚会成为瓶颈。等用户量上百万,一次请求可能要触发几十次子查询,响应时间会指数级上升。”
“是这样的。”温杰说,“所以我正在考虑引入缓存,把热门数据先预热到內存里,减少实时查询。”
【写到这里我希望读者记一下我们域名 101 看书网书库多,.??????任你选 】
“缓存是个方向,”王哲开口说,“但缓存策略怎么设计?是全量缓存还是按需?失效机制怎么定?这些都得提前想好,不然到时候缓存穿透、雪崩,比资料库慢还要麻烦。”
“呃......”温杰吞了口口水。韩非看见他的额头上滚下一颗汗珠,显然这些问题他还没细想过。
“不急。”韩非微笑说,“这几位过来就是为了帮我们的。这些问题你可以和几位一起推演。”
韩非看向周明。周明点了点头:“没错。你先说说你的id生成策略,怎么保证唯一性的?”
温杰吸了口气,切换到另一张图:“我用的是时间戳加机器码,再加上自增序列的组合。时间戳精確到毫秒,机器码是固定的,自增序列我放在memcached里做原子递增。因为目前是单机部署,所以机器码写死了,序列號靠memcached的incr命令来获取。如果以后要扩展到多机,机器码就需要动態分配,这个机制还没开始做。”
“如果memcached掛了怎么办?”林峰问。
“呃......那序列號会回退,有极小概率衝突,不过memcached本身比较稳定。实在不行,可以加一个备份机制,用文件记录当前的序列號。”温杰咬紧下唇,看著韩非。
会议室里安静了两秒钟。王哲和林峰交换了一个眼色。
韩非看了温杰一眼,希望自己的眼神坚定而充满鼓励。他能感觉到温杰的压力,但也知道这是必经的过程。
周明清了清喉咙:“韩社长,你们现在整个的技术团队里,就只有温杰一个人吗?”
“是的。”韩非说,“不过我们已经在计划招人,搭建技术团队了。”
周明的目光在温杰身上逗留:“你一个人能把系统做到这个程度,已经很不容易了。我刚才听下来,你的思路是对的,方向也没问题,但一个人的精力毕竟有限,有些细节和边界情况来不及考虑也很正常。我们今天来的目的,就是帮你把这些漏洞补上,把系统加固,让它能撑起更大的业务。”
温杰怯懦地笑了笑:“谢谢周工。”
“那我们开始吧。”周明说,“林峰,你负责资料库和缓存这部分,跟温杰对接一下现有代码。王哲,你准备接入用户画像系统,先跟温杰確定一下数据接口的调用方式。我负责整体架构把控和sp接口的绿色通道对接。”
“好。”两人齐声说。
林峰来到温杰身边,俯身看著屏幕:“温杰,你那个聚合查询的代码,现在能给我看看吗?”
温杰立刻切换到代码界面。
王哲打开那个神秘的黑箱子,取出一个u盘,交给温杰:“这是用户画像系统的接口文档和示例代码,你先看看,有问题隨时问我。”
韩非坐著聆听三人討论,他们似乎是在爭论某个技术细节。王哲在旁边插了几句嘴,三个人很快达成一致。
“温杰,”林峰说,“分省推送,你们现在能支持吗?”
“理论上可以。號码本身带归属地,我们推送的时候是按號段匹配的。如果要做分省定向,只需要在推送任务里加一个省份过滤条件。”
“实际效果呢?”
“呃,我们还没试过。”
“最简单的办法,”王哲插嘴说,“就是建两个任务队列。一个队列专门跑广东,一个跑浙省,其他的走默认。每个任务指定內容id和文案id就行。”
韩非心满意足,正准备起身离去,却感觉到有人在看他。韩非抬起双眼,迎上了那名女子的目光。女子没有迴避他的视线,只是缓缓地合上笔记本,將钢笔搁在一边,靠上椅背,摆出某种姿態。韩非敢打赌,她这个姿態一定是从某些资深的企业高管那里学来的,表达的意思是:继续,让我看看,你究竟有几分真本事。
韩非礼貌地对她笑了笑,起身离开会议室。
温杰站起身来,从包里抽出一沓纸,那是上午列印好的架构说明书和待优化清单。他把纸分发给技术小组成员,然后打开笔记本电脑,把界面同步到会议桌尽头的背投电视上。
“各位,我先简单过一下现有架构。”温杰点开一张图,“目前我们是单机部署,apache+php+mysql,做了基础的读写分离。sp接口这块,我写了一个独立的验证模块,走的是移动的普通通道,计费回调加入了ip白名单和签名验证......”
温杰讲得很顺,语速不快,但条理清晰。从资料库结构讲到缓存策略,从负载均衡的初步方案讲到自研的a/b测试模块雏形。虽然全程没有看稿,中间却毫无停顿。
周明一边听一边微微点头,偶尔在笔记本上记两笔。林峰盯著屏幕,手指在膝盖上轻轻轮敲著,仿佛是在模擬代码逻辑。王哲翻著那沓纸,时不时抬头看一眼温杰。
十五分钟后,温杰讲完,垂下手臂,正好跟低低的太阳消失在云层后是同一时间,他们身后那片方形的大光块也消失了。会议室里安静了几秒。
周明合上笔记本,看著温杰:“那个a/b测试模块,是你自己写的?”
“嗯,刚搭好一个框架,还是了参考了国外案例做的,想用来对比不同文案的转化率,能不能做成还不知道呢。”
周明难得地露出一丝笑意:“有想法。总部很多项目组,做了一年都没把这东西落地。”
温杰笑了笑,有些不好意思。
林峰看了看周明,不太確定该不该站起来,最后还是决定坐著。“温工,你刚才说的资料库拆分,现在到什么程度了?”
“表结构已经分好了,”温杰切出三张表格结构图,“包含了用户库、订阅库,和內容库三套,但跨库查询还没优化,目前是用应用层做聚合。比如说,要查某个用户订阅了哪些內容,需要先查询订阅库拿到內容id,再去內容库获取详情。这个逻辑现在写在php代码里,循环查询,效率肯定会有影响。”
林峰皱起眉头,手指在膝盖上敲得更加用力了:“这个聚合层早晚会成为瓶颈。等用户量上百万,一次请求可能要触发几十次子查询,响应时间会指数级上升。”
“是这样的。”温杰说,“所以我正在考虑引入缓存,把热门数据先预热到內存里,减少实时查询。”
【写到这里我希望读者记一下我们域名 101 看书网书库多,.??????任你选 】
“缓存是个方向,”王哲开口说,“但缓存策略怎么设计?是全量缓存还是按需?失效机制怎么定?这些都得提前想好,不然到时候缓存穿透、雪崩,比资料库慢还要麻烦。”
“呃......”温杰吞了口口水。韩非看见他的额头上滚下一颗汗珠,显然这些问题他还没细想过。
“不急。”韩非微笑说,“这几位过来就是为了帮我们的。这些问题你可以和几位一起推演。”
韩非看向周明。周明点了点头:“没错。你先说说你的id生成策略,怎么保证唯一性的?”
温杰吸了口气,切换到另一张图:“我用的是时间戳加机器码,再加上自增序列的组合。时间戳精確到毫秒,机器码是固定的,自增序列我放在memcached里做原子递增。因为目前是单机部署,所以机器码写死了,序列號靠memcached的incr命令来获取。如果以后要扩展到多机,机器码就需要动態分配,这个机制还没开始做。”
“如果memcached掛了怎么办?”林峰问。
“呃......那序列號会回退,有极小概率衝突,不过memcached本身比较稳定。实在不行,可以加一个备份机制,用文件记录当前的序列號。”温杰咬紧下唇,看著韩非。
会议室里安静了两秒钟。王哲和林峰交换了一个眼色。
韩非看了温杰一眼,希望自己的眼神坚定而充满鼓励。他能感觉到温杰的压力,但也知道这是必经的过程。
周明清了清喉咙:“韩社长,你们现在整个的技术团队里,就只有温杰一个人吗?”
“是的。”韩非说,“不过我们已经在计划招人,搭建技术团队了。”
周明的目光在温杰身上逗留:“你一个人能把系统做到这个程度,已经很不容易了。我刚才听下来,你的思路是对的,方向也没问题,但一个人的精力毕竟有限,有些细节和边界情况来不及考虑也很正常。我们今天来的目的,就是帮你把这些漏洞补上,把系统加固,让它能撑起更大的业务。”
温杰怯懦地笑了笑:“谢谢周工。”
“那我们开始吧。”周明说,“林峰,你负责资料库和缓存这部分,跟温杰对接一下现有代码。王哲,你准备接入用户画像系统,先跟温杰確定一下数据接口的调用方式。我负责整体架构把控和sp接口的绿色通道对接。”
“好。”两人齐声说。
林峰来到温杰身边,俯身看著屏幕:“温杰,你那个聚合查询的代码,现在能给我看看吗?”
温杰立刻切换到代码界面。
王哲打开那个神秘的黑箱子,取出一个u盘,交给温杰:“这是用户画像系统的接口文档和示例代码,你先看看,有问题隨时问我。”
韩非坐著聆听三人討论,他们似乎是在爭论某个技术细节。王哲在旁边插了几句嘴,三个人很快达成一致。
“温杰,”林峰说,“分省推送,你们现在能支持吗?”
“理论上可以。號码本身带归属地,我们推送的时候是按號段匹配的。如果要做分省定向,只需要在推送任务里加一个省份过滤条件。”
“实际效果呢?”
“呃,我们还没试过。”
“最简单的办法,”王哲插嘴说,“就是建两个任务队列。一个队列专门跑广东,一个跑浙省,其他的走默认。每个任务指定內容id和文案id就行。”
韩非心满意足,正准备起身离去,却感觉到有人在看他。韩非抬起双眼,迎上了那名女子的目光。女子没有迴避他的视线,只是缓缓地合上笔记本,將钢笔搁在一边,靠上椅背,摆出某种姿態。韩非敢打赌,她这个姿態一定是从某些资深的企业高管那里学来的,表达的意思是:继续,让我看看,你究竟有几分真本事。
韩非礼貌地对她笑了笑,起身离开会议室。