基于开源技术的移动社交网络开发实例PPT格式课件下载.pptx
- 文档编号:14647534
- 上传时间:2022-10-23
- 格式:PPTX
- 页数:46
- 大小:3.13MB
基于开源技术的移动社交网络开发实例PPT格式课件下载.pptx
《基于开源技术的移动社交网络开发实例PPT格式课件下载.pptx》由会员分享,可在线阅读,更多相关《基于开源技术的移动社交网络开发实例PPT格式课件下载.pptx(46页珍藏版)》请在冰豆网上搜索。
应用介绍:
具有基本社交应用的功能,一对一分享和私聊和好友一对一分享和私聊2.建圈子为亲人、密友、同学、团队建私密圈子,为兴趣、奇思妙想、社交组织建公开圈子,吸引志趣相投的人。
3.找圈子找志趣相投的圈子,从陌生人到朋友4.分享无拘束-每个圈子都是私密空间,分享更自由5.聊天无干扰以圈子为单位聊天,圈子间互不干扰6.二维码加好友、加圈子扫描二维码加好友、加圈子,第一部分:
特点介绍,1、独一无二的聊天消息标签功能。
在其他聊天app里,需要跟进、值得保存的信息,淹没在流水一样的聊天消息里,事后难以找回。
在“点滴”,您可以用标签,在聊天时,轻松地标识出特别的消息,事后通过标签,方便地找回这些消息。
一旦您和家人朋友同事,在聊生活、聊工作时,使用了话题标签功能,您会发现,它是您最重要的助手。
特点介绍:
2.聊天和分享保存在云端,换手机时自动同步3.可以撤回长达7天内的聊天消息4.分享时可以同时指定多个圈子或朋友5.所有聊天、分享均经过加密6.可为每张图片添加文字说明和链接,每张图片可以是一个故事。
第二部分:
技术概况,REST,J2EE平台:
JPA/JTA/JMS等,MQTT协议,Solr全文搜索,Shiro安全认证,SpringMybatisHibernate,Redis缓存,FastDFS文件存储,MAVEN,V1.0主要技术高内聚,低耦合,Jetty、Tomcat、GIT,REST,Android,IOS,NodeJSJqueryHtml5,QueueBaseonErlangGO,App,Web,系统架构V1.0:
快速原型,小众用户后期增加operation-manager,REST,J2EE平台:
JPA/JTA/JMS等,S全文搜索,V2.0技术变更,KafkaCluster,STORMCLUSTER,系统架构V2.0:
ScaleOut与大众用户群,技术点,MQTT协议在移动端的贡献:
小型传输、耗电量小、降低网络流量。
Mosquito+Erlang。
信息交换,平台,1.Solr自定义增量索引的设计,可提高系统扩展性、可维护性,快速找到失败索引。
2.基于Redis,MQTT,FastDFS构建scaleout的图片管理系统。
3、快速敏捷构建:
Spring,Maven,Rest简化平台间的交互及部署。
逻辑架构部署图:
simpleisbeautiful,平台模块体系图:
快速上手与迭代,第三部分:
详细实现,一基于Solr的圈子活动搜索广度与精度的权衡,1.基于优先级的增量索引设计。
2.mmseg4j中文分词与词库扩展。
【压测结果更甚胜庖丁分词】3.建立活动/圈子/空间信息各自私有的core。
4.配置相关属性以进行索引和检索。
5.SolrAdmin进行索引分析。
6.Java的Client包SolrJ。
1、为什么不用更简化,以往性能表现更好的ElasticSearch2、为什么用基于正向最大匹配算法的开源实现mmseg4j,而不用精确度更高的基于逆向匹配算法的开源实现-广度与精度之间的权衡3、mmseg4j,代码维护在github上,可以方便的管理问题与源码贡献。
独一无二的基于优先级的增量索引:
幂等同步扩展性:
按Priority索引(现有均为P1),Solr增量索引信息表:
index_nets,SyncManager定时将新增的数据添加到index_nets中。
IndexManager用于管理基于优先级的Timer对index_nets中的新增数据进行索引。
MysqlCircle/Actitiy/message,MysqlIndex_nets,SyncManager,SolrIndex库,IndexManager,P1Timer,P2Timer,P3Timer,IndexManager,IndexManager,搜索中的怪事情,首先从SolrAdmin中找答案,搜索中的怪事情从SolrAdmin中找答案-具体事例,1、助词惹的祸,输入关键字“大师的圈子”进行查询,搜索出:
“六指琴魔的上海钢琴师”。
解决方案:
配置停止词:
stopwords.txt,包括语气组词等无意义的词,实例,2、停止词:
“问题”惹的祸:
有一段description的内容为:
“今天的时间有点紧,下面大家开始问问题吧”。
以“问题”为关键字没有输出结果,只有当输入“问”或者输入“问问题”时才能有结果输出。
解决方案:
查看stopwords.txt中,果然存在“问题”这个关键词,去掉后解决问题,实例,3、maxword算法替换complex算法:
“脸谱为员工开放了很多福利,比如员工可以参加各种体育活动,为家人提供专属的空间等。
”如果使用complex算法,只有输入“体育活动”才能搜出结果,但用户希望输入“活动”即有搜索结果。
3.1、complex算法:
“体育活动”是整体,3.2、maxword算法:
“体育”和“活动”分开了,实例,4、maxword只最多支持2个字惹的祸:
对于内容“林书豪来中国,来北京了”:
如果我们只使用关键字“林书豪”便可得出上面的结果,这似乎是我们要的结果,但如果索引库中存在一段内容是“来自华山的林平之练就了葵花宝典”,你会发现我输入“林书豪”后,上面的内容也会被搜索出来。
于是使用SolrAdmin可知,这是因为词库中缺少“林书豪”,林书豪被活生生的拆分成了“林”,“书”,“豪”。
将“林书豪”加入词库后,由于,小经验:
于是在词库words.dic添加“林书豪”,但是添加后还存在同样的问题,这是因为maxword算法最多只支持2个字,于是在词库中同时加上“书豪”和“林书”就可以提高准确度了。
实例,SolrCloud集群HA与分布式索引,SolrCloud中完整索引(Collection)的逻辑图,SolrCloud中提供NRT近实时搜索:
Redis缓存机制缓解近实时,首先来看下索引和Solr实体对照图:
Shard更像组的概念,每个Shard存储的Doc各不相同,但同一Shard下的Doc相同,互为副本。
SolrCloud批量添加索引,批量索引路由,需要高并发能力,SolrCloud中创建索引可以分为5个步骤(如下图所示),对Solr更新索引和创建索引的几点总结,1、leader转发的规则1)请求来自leader转发说明当前本身为replica:
那么就只需要写到本地ulog,不需要转发给leader,也不需要转发给其它replicas。
如果replica处于非active状态,就会将update请求接受并写入ulog,但不会写入索引。
如果发现重复的更新就会丢弃旧版本的更新。
2)请求不是来自leader,但自己就是leader,那么就需要将请求写到本地,顺便分发给其他的replicas。
3)请求不是来自leader,但自己又不是leader,也就是该更新请求是最原始的更新请求,那么需要将请求写到本地ulog,顺便转发给leader,再由leader分发。
每commit一次,就会重新生成一个ulog更新日志,当服务器挂掉,内存数据丢失的时候,数据就可以从ulog中恢复。
2、建索引的时候最好使用CloudSolrServer,因为CloudSolrServer直接向leader发送update请求,从而避免网络开销。
3、批量添加索引的时候,建议在客户端提前做好document的路由,在SolrCloud内进行文档路由,开销较大【路由:
对索引分类,哪类索引写到哪个逻辑的Shard上,该逻辑Shard对应多台Solrcore】。
SolrCloud索引的检索基于索引的Shard的个数,把查询转为多个子查询,SolrShardSplitting/ReSharding:
将原有Shard的Replica均匀的分布到更多的Shard的更多的Solr节点上去,SolrCloud与Zookeeper配置比较简单,SolrCloud索引操作的基本架构图,二FASTDFS集群架构:
为小图片管理系统而生视频网站,相册网站动态扩容,相对GoogleFS:
轻量级对等:
没有leader分组/分卷冗余备份负载均衡线性扩容应用级分布式文件存储,基于FastDFS的文件上传与下载,文件上传:
1.Client询问Trackerserver上传到哪个Storageserver2.Trackerserver返回一台可用的Storageserver(IP地址和端口)3.Client直接和该Storageserver建立连接,进行文件上传,Storageserver返回新生成的文件ID(包括组/卷名和文件名),文件上传结束。
文件下载:
1.Client询问Trackerserver可以从哪台Storageserver上下载指定的文件,参数为文件ID(包括组名和文件名)2.Trackerserver返回一台可用的Storageserver(IP地址和端口)3.Client直接和该Storageserver建立连接,完成文件下载。
简单的配置和API,线下配置事例:
connect_timeout=2network_timeout=30charset=UTF-8http.tracker_http_port=8080http.anti_steal_token=nohttp.secret_key=FastDFS1234567890tracker_server=192.168.1.156:
22122storage_server=192.168.1.155:
23000,StringfileAbsolutePath=PROTOCOL+trackerServer.getInetSocketAddress().getHostName()+uploadResults=storageClient.upload_file(file.getContent(),file.getExt(),meta_list);
privatestaticTrackerClienttrackerClient;
privatestaticTrackerServertrackerServer;
privatestaticStorageServerstorageServer;
privatestaticStorageClientstorageClient;
实践之:
基于FastDFS、MQTT,Mysql/Redis的文件、图片管理系统的开源实现,三MQTT协议转发消息:
Mosquito,ErLang轻量级移动应用系统的首先,MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是一套轻量级跨平台的基于发布/订阅消息传输协议,其设计思想开放、简单、轻量、易于实现。
专门为低带宽、不稳定网络以及计算和处理能力受限的设备所设计,该协议采用小型传输,耗电量小,能大大降低网络流量,最小化数据包并有效分配与传输,非常适合移动系统上面的应用。
MQTT协议提供了3种类别的信息传递服务质量,值分别是0、1、2。
其中Atmostonce(值是0)至多一次,消息发布完全依赖于底层的TCP/IP网络,会发生消息丢失;
Atleastonce(值是1)至少一次,确保消息到达,但可能发生消息重复;
Exactlyonce
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 技术 移动 社交 网络 开发 实例