SNG mini项目总结

来源:互联网 发布:单片机外部存储器 编辑:程序博客网 时间:2024/05/22 02:17

Mini项目总结

一.项目介绍

    一款懂你的陌生人社交APP

项目代码:https://github.com/fwdhz998/getyou

. 项目内容

1.产品使用流程:


 

图一 产品使用流程

2.前端框架:

 

图二 前端框架

3.后端框架

 

3 后端框架

4.算法框架:

   本项目算法框架由两部分构成,分别是用户标签过滤算法与情感分析算法,其中本项目主要完成用户标签过滤算法,情感分析算法由BosonNLPAPI提供。

4.1标签过滤:

   用户的标签分为长期标签与短期标签,长期标签由引导页设置(10),短期标签由用户的输入获得。通过长期标签的匹配与短期标签的匹配综合得出最“可能”的陌生人。

4.2情感分析:

 情感分析算法的大体由基于Word2Vec的目标分类算法实现,本项目出于时间考虑直接选用API直接调用。在此基础上,做了进一步细致根据情感因子划分的匹配算法。

 

三.项目总结

1.压测严重不过关:

 现象:MySQL数据库插入时间极短,且无复杂的逻辑交互。但为何压测如此差,经分析由以下几点:

1.数据库未建索引、没有删除表的动作导致表原来越大、没有拆分拆表、没有合理的根据业务逻辑设置表关系、未建外键、、、

2.使用的Phalapi框架对于高并发的请求表现差,可能由于单线程或者php对于线程的支持不好,可能在代码上某些php数组拷贝动作耗时过大。

3.未使用redis缓存或未使用线程池加消息队列将请求即时返回。Mysql数据库的读可以先由redis缓存起来,然后定期由redis实现持久化。

 

2.未考虑容灾问题

1.分布式session同步:

1.1进程间通信传递session数据:每一个主机都广播自己的session,这种方式会累死主机,直接pass

1.2 cookie存储方式:session里只放小数据,并且对session加密,缺点是不能在session里放大的数据,且安全性不高。

1.3 cache集群或者数据库session管理.我们把session放入到cache集群或者数据库中,每次请求的时候,都从他们中来获取。这样,所有的机器都能获取到最新的session数据。这种方案也是很多中大型网站采用的解决方案。他实现起来相对简单(利用cache集群或者主从数据库自身的管理来实现多机的互备),而且效率很高,安全性也不错。

1.4 在入口nginx处对用户cookie做一致性Hash,将某一用户分配到固定机器

1.5 搭建session服务器,各后台逻辑处理服务器直接到session服务器去拿数据。

 

2.数据库容灾

1.mysql主从备份(复制)的基本原理
mysql支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等等)。因此,要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,并在本机上执行相同的更新。然后封锁并等待主服务器通知新的更新。从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。

2.“备份”与“容灾”

   例如服务器、网络、存储哪一点出现问题,都会中断服务,所以这个时候每个点都需通过技术手段做保护,这就是容灾要考虑的事情。“备份”要停止服务的,恢复过程是需要时间的。而容灾是要不中断服务的

  (容灾类)

3高可用:及HAHigh Avaliable),一般实现方式是对2台服务器上面装HA的软件,这时候就和双机热备的概念一样了,一般正常服务时只有主机在工作,台服务器中间会有心跳的hello包,备机会一直发hello包检测主机是否活着,超过一段时间主机没有应答hello包的话,备机就会认为主机死掉,然后主动接管业务了。这样子又实现了主机的容灾了。

 

4冷备就没有什么好说了,相当于1台坏了,另外1台还要我们手动去启动,配置,才能接管坏了那台的工作。

 

5、“容错Vmware的虚拟化软件提出的一个概念,相当于1台虚拟机运行的时候,多开1台虚拟机,当一些操作在A虚机运行,会通过软件同步复制操作到B。当A虚机崩溃,B主机立刻托管业务,由于操作都是同步复制的,所以B不会丢失任何在A上的内容(包括内存里面的临时数据)。此种方式比高可用的更高级,高可用的方式B还要通过A没有应答hello才发现A崩溃了,中间还是有一段过度的时间会业务中断,但是可以实现自动的业务恢复。而容错这种方式业务完全不用中断,但是相应换来了成本需要增高,原来1台虚机,现在相当于要多开1台来与他同步,资源成本增高。

 

6、使用CDN服务器

CDN的工作原理:通过权威DNS服务器来实现最优节点的选择,通过缓存来减少源站的压力。完整的CDN工作流程:

 

·  当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。

·  CDNDNS服务器将CDN的全局负载均衡设备IP地址返回用户。

·  用户向CDN的全局负载均衡设备发起内容URL访问请求。

·  CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

·  区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

·  全局负载均衡设备把服务器的IP地址返回给用户。

·  用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

 

四.项目展望

1.产品维护用户活跃度:需要产品不断得退出新鲜的社交内容来维持产品的活跃度。

2.改善后端业务逻辑处理,缩减返回延时,采用多线程加消息队列加缓存的形式提升请求处理速度。做好容灾、负载均衡、CDN等服务器控制,尽量做出一个完整的技术方案。

 

 

原创粉丝点击