1、股票圈

  股票圈是基于微信关系链的股票讨论私密社区,是首个把微信好友关系链和股票软件融合起来的一个软件。开创了基于私密关系链的股票社交之先河,我们借助微信好友关系链的巨大平台优势,使用户在股票圈里可以与好友分享股票观点,实时互动。在这里,可以看到微信好友中有多少股民好友,与他们畅聊股票,分享投资心得。(下载方法:APP搜索“自选股”)

3、创意点的产品功能/使用场景介绍

   (一)个人中心

       ①、在第四个页卡中完成微信授权后,可登陆个人中心;

       ②、支持查看好友列表、设置隐私、邀请微信好友;

       ③、支持查看主题聚合页、收藏资讯等;

   (二)股票评论入口

      ①、个股底层页底部,通过点击看好/看空按钮,并输入观点,即可发表至股票圈;

      ②、股票、基金等均可进行评论及分享,实时生成分时/收盘线,或者货币基金七日年化/万分收益等绘图。

      ③、app内资讯、公告、研报等也可以分享到股票圈。

 

   (三)股票圈主时间轴

      ①、可以查看好友的股票观点、资讯公告分享等,并参与顶/踩互动;

      ②、支持纯文字发送,插入图片,关联股票关键字;

      ③、支持消息提醒、以及帖子分享到朋友圈等。

 

4、股票圈的创新之处

   (一)股票行情与微信朋友圈相结合:股票圈是国内首款基于微信关系链的股票讨论社区。在这里,用户可以实时看到他的微信好友(同时使用股票圈)分享的股票资讯,以及好友对资本市场的各种讨论。

   (二)通过后台实时计算程序强大的处理能力,可以实时的提供给用户好友主题的聚合计算结果。接口响应速度平均值在100ms以内。这里使用了Gearman这套框架,把复杂的计算逻辑转发到后端的几个节点上,避免了接入层服务器的阻塞。

   (三)高并发集群环境下有序ID号的取得。(已有的发号器可以支持集群环境下ID号的迅速分配,但不能保证整个集群系统里ID号码的有序)

   (四)微信账号体系在原有自选股QQ账号体系上的兼容。(原有的自选股使用QQ的验证方式,股票圈使用微信的验证方式)使老用户在不丢失已有自选股的前提下,关联自己的微信号码;同时也为新的微信用户自动分配QQ号码来使用自选股。

5、股票圈的技术亮点

    股票圈是一个支持多种设备访问的分布式系统。目前支持的前端有iOS和Android设备,后台是一套具有高度可伸缩性的Web服务系统。

   (一)、主时间轴

    用户的每一个请求都需要在后台进行一次如下的处理过程。

        

为了保证好的用户体验(用户的等待时间<1秒),必须优化查询方法。具体的实现方法是:

   Step1:在接入层(下图的WebServer)把用户的好友过滤一次,仅查找发过主题的用户,提交到实时计算系统(Gearman)。Gearman是一套分布式的计算框架,由一个专用的Client接收请求,把任务转发给后台的一个worker,由worker来负责完成聚合计算的任务。

   Step2: 实时计算系统接收到请求,会把请求转发到后台的一个worker。

   Step3:每个worker会查找每个好友的符合条件的主题列表(目前每次请求10个),依次从缓存,数据库中查找。

   Step4:合并所有的主题并排序,并且条件尽可能多地计算出一个有效的有序的列表。(目前一次返回10条记录,实际排序后的结果应该不小于10条)

       例如:用户有3个好友,每个用户的前10个主题排序,返回时间轴的前10个,最好的结果是返回3*10=30个。最差结果是返回1*10=10个。通过计算最大的结果集并缓存起来,可以降低后续请求的重复计算量。

   Step5:由实时计算系统返回的主题id列表,接入层再获取对应的主题内容,以及回复和踩赞信息。

   (二)、发表主题和消息通知

    当用户数量多的时候,为了给操作用户及时的响应,直接写入数据库变得不太现实,所以使用了RabbitMQ作为缓冲,由一个专用中转系统来完成延时的写操作。而且用户的发表主题,发表回复,踩赞等操作都会有相关的通知操作。这里RabbitMQ还实现了异步的消息通知功能,中转系统在后台还负责向用户的好友推送提醒消息(有好友发布新主题,回复,赞踩等)。同时由于推送消息需要第三方服务器的支持,为了保证用户可以准确地、完整地收到消息,我们使用了推拉结合的方式进行消息推送。即除了服务器直接把消息推送给客户端之外,客户端还定期地从服务器拉取消息列表,这就要求后台服务器有很强的处理能力。

   (三)、主题,评论的ID生成策略

    分布式系统对于有序ID号码的分发一般都是由集中式的Sequence来完成,但是对于高并发的系统一个Sequence难以满足需求。因此这里使用了时间戳+发号器的方法。集群环境下发号器的原理是采用预分配号段的方法为每个node分配一个递增的ID段。所以发号器可以保证每个ID号码的唯一性,但不能保证有序性。我们通过在发号器返回的ID前增加时间戳的方法来保证有序性。(如果1秒内有多个主题同时发布,那么这些主题不需要严格的有序,因为从用户的角度看,不会区分1秒内的操作究竟哪个靠前,哪个靠后。)这样,我们的实时计算程序可以只通过ID号码就可以进行聚合计算,比传统的通过时间戳排序的方法降低了复杂度。

   (四)、与现有自选股的集成

    目前的自选股系统是基于QQ号码来管理用户的,股票圈是基于微信的openid来管理用户。为了解决2套系统的融合,股票圈对未注册过自选股账号的用户,登陆股票圈的时候自动分配一个QQ号码;对于自选股的老用户,在登陆了自选股之后,再用微信登陆股票圈会自动建立绑定关系。原有自选股的安全验证模型也由原来的qq号,密码验证方式转变为qq号,密码和微信openid,token两种验证方式相结合的模型。

整个系统的架构图如下所示:

系统上线以来的一些数据(iOS上线二个月,Android上线一个月):

   (一)接口访问量日均千万级别。

   (二)接口平均响应时间在100ms以内。(除用户发表主题等图片上传操作)

6、股票圈的意义及未来

    股票圈是首个把用户对股票的行情观点和微信好友关系链结合在一起的专业垂直社区。借助微信庞大的用户群,既可以为股票圈带来更多的新用户,还可以通过用户的互动来增加用户粘性。给原本比较枯燥的炒股行为,加入互动的元素。

对于后续的发展,

  1、下一个版本会引入公众账号,让用户可以看到一些名人对特定股票的看法,供用户参考。

  2、也可以统计出哪些股票受到的关注多,以及有多少人看涨,有多少人看跌。后台统计出结果后展现给用户,帮助用户做出正确的投资决策。