??xml version="1.0" encoding="utf-8" standalone="yes"?>BlogJava-其他技术区http://www.ymeg.top/misc专注于Java技?/description>zh-cnSun, 25 Aug 2019 07:32:40 GMTSun, 25 Aug 2019 07:32:40 GMT60一文读懂前端技术演q:盘点Web前端20q的技术变q史http://www.ymeg.top/jb2011/archive/2019/08/22/434487.htmlJack JiangJack JiangThu, 22 Aug 2019 10:05:00 GMThttp://www.ymeg.top/jb2011/archive/2019/08/22/434487.htmlhttp://www.ymeg.top/jb2011/comments/434487.htmlhttp://www.ymeg.top/jb2011/archive/2019/08/22/434487.html#Feedback0http://www.ymeg.top/jb2011/comments/commentRss/434487.htmlhttp://www.ymeg.top/jb2011/services/trackbacks/434487.html阅读全文

Jack Jiang 2019-08-22 18:05 发表评论
]]>
|易云信技术分享:IM中的万h聊技术方案实跉|ȝhttp://www.ymeg.top/jb2011/archive/2019/08/14/434434.htmlJack JiangJack JiangWed, 14 Aug 2019 02:07:00 GMThttp://www.ymeg.top/jb2011/archive/2019/08/14/434434.htmlhttp://www.ymeg.top/jb2011/comments/434434.htmlhttp://www.ymeg.top/jb2011/archive/2019/08/14/434434.html#Feedback0http://www.ymeg.top/jb2011/comments/commentRss/434434.htmlhttp://www.ymeg.top/jb2011/services/trackbacks/434434.html本文来自|易云信团队的技术分享,原创发表于网易云信公众号Q原文链接:mp.weixin.qq.com/s/LT2dASI7QVpcOVxDAsMeVgQ收录时有改动?/p>

1、引a

在不了解IM技术的人眼里,聊是再q_不过的功能而已Q万人群聊?应该也不隑֮现吧Q!

实Q从前端功能界面上来看,聊无非是个@环向员发送消息的一对多聊天消息分发模式而已Q难在何处?

真实的情冉|Q群聊是IMpȝ中的高难度技术点之一。难在哪Q难在服务端Q从某种角度上说Q群聊功能的架构设计和技术实现的品质Q可以代表这ƾIM软g的技术水q?/p>

聊从后台的技术实C_臛_有以下难点:

1Q如何高效地q行大量员消息的分发?

2Q如何高效地理员的在U状态?

3Q如何高效地d员的在U状态?

4Q集系l中Q如何高效地保证员消息的准送达Q?/p>

5Q群聊消息该扩散写还是扩散读Q?/p>

6Q如何保证大量群聊消息分发的情况下不影响单聊消息体验Q?/p>

7Q如何应对大突发事件下的性能负蝲Q?/p>

.... ....

目前Q市面上L的IM产品中,微信是500Z限,QQ是3000Z限(3000人群是按q付费升U,很贵Q不是ؓ一般用户准备的Q。一斚wQ从产品的定义上成员数量不应过多,另一斚wQ技术成本也是个不可回避的因素。万人群q种大规模的技术难度,更是隑ַ惌?/p>

本文内容是网易云信团队ؓ了响应万人群聊功能需求,在设计实C人群聊技术方案中ȝ的技术实践,借此Z分nl各IM开发者同行?/p>

Q本文同步发布于Q?/span>http://www.52im.net/thread-2707-1-1.htmlQ?/span>

学习交流Q?/span>

- x通讯/推送技术开发交?:215477170[推荐]

- Ud端IM开发入门文章:?a href="https://links.jianshu.com/go?to=http%3A%2F%2Fwww.52im.net%2Fthread-464-1-1.html" target="_blank" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">新手入门一就够:从零开发移动端IM?/p>

2、概q?/h1>

随着Ud互联|的发展Q即旉讯服务被广泛应用到各个行业Q客户业务快速发展,传统百h或千Z限的聊已经无法满很多业务发展需求,因此|易云信IM推出万h服务?/p>

万h场景需要解决以下问题:

1Q消息需要按1:9999的比例进行{发投递,按常规消息处理流E将产生大量的子dQ对pȝ吞吐量的要求极高Q?/p>

2Q在微服务系l架构下Q如果不采用一些优化方案,服务以及存储QDB、缓存等Q之间的QPS和网l流量将非常高;

3Q以ؓ单位的缓存(如群成员列表Q内存存储开销较大Q假设一个成?00ByteQ万人群U?MBQ;

4Q群成员d后需要同步群ȝ消息Q智能手ZApp前后台切换生的较多d同步消息协议Q因此需要优化消息同步方案?/p>

Z解决以上问题Q万人群技术方案采用了“聚合+分层/l?增量”的设计思\Q?/span>

3、万人群消息的处理流E?/h1>

1Q?/span>按群l护在线成员信息,主要包含两部分(可以理解Z个缓存集合)Q?/p>

a. 成员在U信息:即用户在U状态变化(上线、下U)Ӟ更新相应的在线状态信息(卛_态维护群有哪些成员在U)Q?/p>

b. 成员IM长连接信息:即用hdӞ更新用户的Link信息Q即d所在Link的地址信息Q消息{发时ҎLink地址路由消息Q?/p>

2Q?/span>IM Server收到消息后Q按ID消息\由到“消息服?#8221;模块Q?/p>

3Q?/span>消息模块检查ƈ预处理消息内容,然后通过“成员在U状?#8221;服务获取在线成员Q完成消息{发的基础工作。ؓ了减群消息模块和群在线成员服务之间的网l流量,采用?#8220;本地~存+增量同步”的缓存策略,x地缓存记录最后更新版本号和时间戳Q每ơ同步群在线成员前先查缓存版本号是否有变_若有则按最后更新时间增量同步;

4Q?/span>通过“成员在U服?#8221;获取在线成员的Link链接信息Q按Link分组路由消息Q分l\q原因Q同一Link上的全部成员只需要\׃条消息即可)。同样ؓ了减网l开销Q成员Link信息也采?#8220;本地~存+增量同步”的方案;

5Q?/span>消息采?#8220;漫游+历史”的存储方案,漫游的消息存储在分布式缓存中Q历史消息异步写入HBase。用L录后可以通过漫游快速的获取到最新消息,q可以通过拉取历史查看更早的消息?/p>

4、万人群Ҏ本地~存增量同步{略

抛开在U状态管理逻辑Q群成员在线状态服务可以简单理解ؓ分布式集中缓存?/p>

增量同步技术方案如下:

如上图所C:

1Q数据缓存是一个集合,其包含了多个~存数据,每一个数据项带有最后更新时间信息;另外~存q有一个严格递增的版本号Q?/p>

2Q缓存数据变_新增、修攏V删除)后,需要增加版本号Q?/p>

3Q本地线E通过~存理d数据Ӟ理服务先检查本地版本号和分布式~存中的版本h否一_若不一致则按本地最新时间戳增量同步新数据项Qƈ更新本地的版本号和最后更新时_Z避免分布式集中缓存中q发写入D的增量时间戳不可靠问题,增量更新时可以将本地记录的最后更新时间戳向前推移Q比如减?0msQ;

4Qؓ避免本地多线Eƈ发读取相同数据项Dq发更新本地~存的问题,可以按缓存数据合q更新请求,卌军_ƈ发问题还可以减少|络开销Q?/p>

5Q缓存数据由大量数据Ҏ成,Z避免单个~存数据太大Q可以将数据中的属性业务场景精Q冷热分)Q低频次d的属性额外缓存?/p>

5、万人群水^扩容Ҏ

万h采用大量本地缓存的Ҏ解决消息处理性能和网l流量的问题Q因此本地存储空间成了方案的瓉炏V因此我们设计了分组路由的技术方案?/p>

消息按群ID和\q略定向\由到指定分组Q集)上处理,分组由多个计节点组成,因此Ҏ上可以做到分l内和分l间的水qx~容?/p>

6、作?#8220;?#8221;服务Q网易云信是如何实现万h所需的计资源的Q?/h1>

׃万h对计算和存储资源消耗比较高Q在实施和运l方案上也有一定的Ҏ性,Z保证业务的可靠性和E_性,|易云信是将万h大群的能力,仅提供给专属的云客户Q普通公有云客户是无法用的Q?/p>

之所以能从Yg基础设施上ؓ万h提供保障,|易云信的IM专有云必d备以下资源能力:

1Q需要专属的独立计算资源Q保持计资源独立,且资源冗余度比公有云高,且需要保证不会受到公有云上其他客户业务的影响Q?/p>

2Q需要专属的独立q维服务Q从而根据客户业务场景制定最佳的业务监控、弹性扩宏V故障迁Uȝq维Ҏ?/p>

MQ万人群聊的实现Q过的技术方案设计和技术实现只是一斚wQ基计算设施资源和运l能力也是不可或~?/p>

所以,从今以后Q不要随随便便就喊万人群聊,甚至十万人群聊,q不是想实现p实现的哦Q?/p>

附录Q更多群聊相x术文?/h1>

?/span>快速裂变:见证微信强大后台架构??的演q历E(一Q?/a>?/span>
?/span>
如何保证IM实时消息?#8220;时序?#8221;?#8220;一致?#8221;Q?/a>?/span>
?/span>
IM单聊和群聊中的在U状态同步应该用“?#8221;q是“?#8221;Q?/a>?/span>
?/span>
IM聊消息如此复杂Q如何保证不丢不重??/span>
?/span>微信后台团队Q微信后台异步消息队列的优化升实践分n?/span>
?/span>Ud端IM中大规模消息的推送如何保证效率、实时性??/span>
?/span>CIMpȝ中聊天消息的同步和存储方案探?/a>?/span>
?/span>
关于IMx通讯聊消息的ؕ序问题讨?/a>?/span>
?/span>
IM聊消息的已d执功能该怎么实现Q?/a>?/span>
?/span>
IM聊消息I竟是存1?x散读)q是存多?x散写)Q?/a>?/span>
?/span>
一套高可用、易伸羃、高q发的IM聊、单聊架构方案设计实?/a>?/span>
?/span>
[技术脑z] 如果?4亿中国h拉到一个微信群里技术上能实现吗Q?/a>?/span>
?/span>
IM聊机制Q除了@环去发消息还有什么方式?如何优化Q?/a>?/span>
?/span>
|易云信技术分享:IM中的万h聊技术方案实跉|ȝ?/span>
>> 更多同类文章 ……

Q本文同步发布于Q?/span>http://www.52im.net/thread-2707-1-1.htmlQ?/span>



Jack Jiang 2019-08-14 10:07 发表评论
]]>一文读懂即旉讯应用中的|络心蟩包机Ӟ作用、原理、实现思\{?/title><link>http://www.ymeg.top/jb2011/archive/2019/08/08/434394.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Thu, 08 Aug 2019 04:01:00 GMT</pubDate><guid>http://www.ymeg.top/jb2011/archive/2019/08/08/434394.html</guid><wfw:comment>http://www.ymeg.top/jb2011/comments/434394.html</wfw:comment><comments>http://www.ymeg.top/jb2011/archive/2019/08/08/434394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.ymeg.top/jb2011/comments/commentRss/434394.html</wfw:commentRss><trackback:ping>http://www.ymeg.top/jb2011/services/trackbacks/434394.html</trackback:ping><description><![CDATA[     摘要: 本文原文׃?#8220;张小?#8221;原创发布?#8220;高性能服务器开?#8221;微信公众P原题《心跛_机制设计详解》,x通讯|收录时有改动?、引a一般来_没有真正动手做过|络通信应用的开发者,很难惌x通讯应用中的心蟩机制的作用。但不可否认Q作为即旉讯应用Q心x制是其网l通信技术底层中非常重要的一环,有没有心x制、心x制的法实现好坏Q都直接媄响即旉讯?..  <a href='http://www.ymeg.top/jb2011/archive/2019/08/08/434394.html'>阅读全文</a><img src ="http://www.ymeg.top/jb2011/aggbug/434394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.ymeg.top/jb2011/" target="_blank">Jack Jiang</a> 2019-08-08 12:01 <a href="http://www.ymeg.top/jb2011/archive/2019/08/08/434394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可能会搞怽的面试:你知道一个TCPq接上能发v多少个HTTPh吗?http://www.ymeg.top/jb2011/archive/2019/08/02/434332.htmlJack JiangJack JiangFri, 02 Aug 2019 01:55:00 GMThttp://www.ymeg.top/jb2011/archive/2019/08/02/434332.htmlhttp://www.ymeg.top/jb2011/comments/434332.htmlhttp://www.ymeg.top/jb2011/archive/2019/08/02/434332.html#Feedback0http://www.ymeg.top/jb2011/comments/commentRss/434332.htmlhttp://www.ymeg.top/jb2011/services/trackbacks/434332.html阅读全文

Jack Jiang 2019-08-02 09:55 发表评论
]]>
癑ֺAPPUd端网l深度优化实践分??Q移动端q优化?/title><link>http://www.ymeg.top/jb2011/archive/2019/07/29/434316.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Mon, 29 Jul 2019 02:29:00 GMT</pubDate><guid>http://www.ymeg.top/jb2011/archive/2019/07/29/434316.html</guid><wfw:comment>http://www.ymeg.top/jb2011/comments/434316.html</wfw:comment><comments>http://www.ymeg.top/jb2011/archive/2019/07/29/434316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.ymeg.top/jb2011/comments/commentRss/434316.html</wfw:commentRss><trackback:ping>http://www.ymeg.top/jb2011/services/trackbacks/434316.html</trackback:ping><description><![CDATA[     摘要: 本文q度技术团?#8220;蔡锐”原创发表?#8220;癑ֺApp技?#8221;公众P原题为《百度App|络深度优化pd《三》弱|优化》,感谢原作者的无私分n。一、前a|络优化解决的核心问题有三个Q第一是安全问题,我们在《百度APPUd端网l深度优化实践分?一)QDNS优化》进行了详细的讲解。第二是速度问题Q我们在《百度APPUd端网l深度优化实践分??Q网l连接优...  <a href='http://www.ymeg.top/jb2011/archive/2019/07/29/434316.html'>阅读全文</a><img src ="http://www.ymeg.top/jb2011/aggbug/434316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.ymeg.top/jb2011/" target="_blank">Jack Jiang</a> 2019-07-29 10:29 <a href="http://www.ymeg.top/jb2011/archive/2019/07/29/434316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从游击队到正规军Q马蜂窝旅游|的IMpȝ架构演进之\http://www.ymeg.top/jb2011/archive/2019/07/24/434292.htmlJack JiangJack JiangWed, 24 Jul 2019 13:44:00 GMThttp://www.ymeg.top/jb2011/archive/2019/07/24/434292.htmlhttp://www.ymeg.top/jb2011/comments/434292.htmlhttp://www.ymeg.top/jb2011/archive/2019/07/24/434292.html#Feedback0http://www.ymeg.top/jb2011/comments/commentRss/434292.htmlhttp://www.ymeg.top/jb2011/services/trackbacks/434292.html阅读全文

Jack Jiang 2019-07-24 21:44 发表评论
]]>
自已开发IM有那么难吗?手把手教你自怸个Andriod版简易IM (有源?http://www.ymeg.top/jb2011/archive/2019/07/22/434271.htmlJack JiangJack JiangMon, 22 Jul 2019 04:48:00 GMThttp://www.ymeg.top/jb2011/archive/2019/07/22/434271.htmlhttp://www.ymeg.top/jb2011/comments/434271.htmlhttp://www.ymeg.top/jb2011/archive/2019/07/22/434271.html#Feedback0http://www.ymeg.top/jb2011/comments/commentRss/434271.htmlhttp://www.ymeg.top/jb2011/services/trackbacks/434271.html阅读全文

Jack Jiang 2019-07-22 12:48 发表评论
]]>
从新手到架构师,一就够:?00?000万高q发的架构演q之?/title><link>http://www.ymeg.top/jb2011/archive/2019/07/17/434224.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Wed, 17 Jul 2019 15:57:00 GMT</pubDate><guid>http://www.ymeg.top/jb2011/archive/2019/07/17/434224.html</guid><wfw:comment>http://www.ymeg.top/jb2011/comments/434224.html</wfw:comment><comments>http://www.ymeg.top/jb2011/archive/2019/07/17/434224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.ymeg.top/jb2011/comments/commentRss/434224.html</wfw:commentRss><trackback:ping>http://www.ymeg.top/jb2011/services/trackbacks/434224.html</trackback:ping><description><![CDATA[     摘要: 1、引a本文以设计淘宝网的后台架构ؓ例,介绍从一百个q发到千万q发情况下服务端的架构的14ơ演q过E,同时列D出每个演q阶D会遇到的相x术,让大家对架构的演q有一个整体的认知。文章最后汇M一些架构设计的原则。(本文同步发布于:http://www.52im.net/thread-2665-1-1.htmlQ?、关于作者huashiouQ广东工业大学计机U学与技术硕士毕业,大数据开发工E师?..  <a href='http://www.ymeg.top/jb2011/archive/2019/07/17/434224.html'>阅读全文</a><img src ="http://www.ymeg.top/jb2011/aggbug/434224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.ymeg.top/jb2011/" target="_blank">Jack Jiang</a> 2019-07-17 23:57 <a href="http://www.ymeg.top/jb2011/archive/2019/07/17/434224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> u?安装 centOS 7http://www.ymeg.top/sdyjmc/archive/2019/07/08/434104.html单飞单飞Mon, 08 Jul 2019 01:22:00 GMThttp://www.ymeg.top/sdyjmc/archive/2019/07/08/434104.htmlhttp://www.ymeg.top/sdyjmc/comments/434104.htmlhttp://www.ymeg.top/sdyjmc/archive/2019/07/08/434104.html#Feedback0http://www.ymeg.top/sdyjmc/comments/commentRss/434104.htmlhttp://www.ymeg.top/sdyjmc/services/trackbacks/434104.htmlhttps://github.com/FedoraQt/MediaWriter/releases/download/4.1.4/FedoraMediaWriter-win32-4.1.4.exe

http://ap.stykers.moe/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso


http://ap.stykers.moe/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso


UltraISO 无法制作盘镜像文gQ需要用FedoraMediaWriter-win32-4.1.4 Q选择下蝲的iso文gQ然后自定义镜像Q再选U?可以了Qiso文g不能攑ֈU盘上 U盘上的数据会都丢失?/div>


单飞 2019-07-08 09:22 发表评论
]]>
程序技术始于微信?来看看移动端程序技术的前世今生Q?/title><link>http://www.ymeg.top/jb2011/archive/2019/07/04/434043.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Thu, 04 Jul 2019 04:02:00 GMT</pubDate><guid>http://www.ymeg.top/jb2011/archive/2019/07/04/434043.html</guid><wfw:comment>http://www.ymeg.top/jb2011/comments/434043.html</wfw:comment><comments>http://www.ymeg.top/jb2011/archive/2019/07/04/434043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.ymeg.top/jb2011/comments/commentRss/434043.html</wfw:commentRss><trackback:ping>http://www.ymeg.top/jb2011/services/trackbacks/434043.html</trackback:ping><description><![CDATA[     摘要: 本文由DCloud 公司创始人王安原创发布于CSDNQ原题《小E序技术演q史》,x通讯|收录时有改动,感谢原作者?、引a微信的成功,q特定于某个具体的功能Q微信的成功实际上是一大批创新技术和体验的成功合集,q也是它Z如此难此被超的Ҏ原因。作为微信这个超U社交应用中最Z眼的技术之一——微信程序,俨然已成历移动端程序的代名词,很多Z提v“程?...  <a href='http://www.ymeg.top/jb2011/archive/2019/07/04/434043.html'>阅读全文</a><img src ="http://www.ymeg.top/jb2011/aggbug/434043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.ymeg.top/jb2011/" target="_blank">Jack Jiang</a> 2019-07-04 12:02 <a href="http://www.ymeg.top/jb2011/archive/2019/07/04/434043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多维度对?ƾ主分布式MQ消息队列Q妈妈再也不担心我的技术选型?/title><link>http://www.ymeg.top/jb2011/archive/2019/06/21/433917.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Fri, 21 Jun 2019 07:01:00 GMT</pubDate><guid>http://www.ymeg.top/jb2011/archive/2019/06/21/433917.html</guid><wfw:comment>http://www.ymeg.top/jb2011/comments/433917.html</wfw:comment><comments>http://www.ymeg.top/jb2011/archive/2019/06/21/433917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.ymeg.top/jb2011/comments/commentRss/433917.html</wfw:commentRss><trackback:ping>http://www.ymeg.top/jb2011/services/trackbacks/433917.html</trackback:ping><description><![CDATA[     摘要: 1、引a对于x通讯|来_所有的技术文章和资料都在围绕x通讯q个技术方向进行整理和分nQ这一ơ也不例外。对于即旉讯pȝQ包括IM、消息推送系l等Q来_MQ消息中g间是非常常见的基软gQ但市面上种cM多、各有所长的MQ消息中g间品,该怎么去选择Q这是个问题Q对于很多经验不的开发者来_一个公司内部用的IM聊天pȝQȝ户量也不q百十来人,动辄是Kafka、MongoDBQ美其名Cؓ?..  <a href='http://www.ymeg.top/jb2011/archive/2019/06/21/433917.html'>阅读全文</a><img src ="http://www.ymeg.top/jb2011/aggbug/433917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.ymeg.top/jb2011/" target="_blank">Jack Jiang</a> 2019-06-21 15:01 <a href="http://www.ymeg.top/jb2011/archive/2019/06/21/433917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速了解ElectronQ新一代基于Web的跨q_桌面技?/title><link>http://www.ymeg.top/jb2011/archive/2019/06/14/433862.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Fri, 14 Jun 2019 03:11:00 GMT</pubDate><guid>http://www.ymeg.top/jb2011/archive/2019/06/14/433862.html</guid><wfw:comment>http://www.ymeg.top/jb2011/comments/433862.html</wfw:comment><comments>http://www.ymeg.top/jb2011/archive/2019/06/14/433862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.ymeg.top/jb2011/comments/commentRss/433862.html</wfw:commentRss><trackback:ping>http://www.ymeg.top/jb2011/services/trackbacks/433862.html</trackback:ping><description><![CDATA[     摘要: 本文引用了作?#8220; ConardLi”的《用JS开发跨q_桌面应用Q从原理到实c一文部分内容,原文链接Qsegmentfault.com/a/1190000019426512Q感谢原作者的无私分n?、引a现在开发IM应用动不动就要求多端——即Android端、iOS端、PC端、Web端等QAndroid端和iOS端作ZU不同的Ud端技术,单独开?..  <a href='http://www.ymeg.top/jb2011/archive/2019/06/14/433862.html'>阅读全文</a><img src ="http://www.ymeg.top/jb2011/aggbug/433862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.ymeg.top/jb2011/" target="_blank">Jack Jiang</a> 2019-06-14 11:11 <a href="http://www.ymeg.top/jb2011/archive/2019/06/14/433862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> x通讯新手入门Q一文读懂什么是NginxQ它能否实现IM的负载均衡?http://www.ymeg.top/jb2011/archive/2019/06/07/433845.htmlJack JiangJack JiangFri, 07 Jun 2019 13:33:00 GMThttp://www.ymeg.top/jb2011/archive/2019/06/07/433845.htmlhttp://www.ymeg.top/jb2011/comments/433845.htmlhttp://www.ymeg.top/jb2011/archive/2019/06/07/433845.html#Feedback0http://www.ymeg.top/jb2011/comments/commentRss/433845.htmlhttp://www.ymeg.top/jb2011/services/trackbacks/433845.html阅读全文

Jack Jiang 2019-06-07 21:33 发表评论
]]>
׼ƽФ
    <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

    <bdo id="rub96"></bdo>

      1. <track id="rub96"><div id="rub96"></div></track>
        <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

            <nobr id="rub96"><address id="rub96"><big id="rub96"></big></address></nobr>
          1. <menuitem id="rub96"><strong id="rub96"><menu id="rub96"></menu></strong></menuitem>
            <dl id="rub96"><source id="rub96"><tr id="rub96"></tr></source></dl>
            1. <tbody id="rub96"><div id="rub96"></div></tbody>
              1. <bdo id="rub96"><optgroup id="rub96"></optgroup></bdo>
              2. <bdo id="rub96"><dfn id="rub96"><dd id="rub96"></dd></dfn></bdo>
                1. <option id="rub96"><source id="rub96"></source></option>
                2. <bdo id="rub96"></bdo>

                    <p id="rub96"><tr id="rub96"></tr></p>
                  1. <tbody id="rub96"></tbody>

                    <bdo id="rub96"></bdo>

                  2. <option id="rub96"><source id="rub96"></source></option>

                    <bdo id="rub96"><optgroup id="rub96"><dd id="rub96"></dd></optgroup></bdo>
                      <track id="rub96"></track>

                        <bdo id="rub96"></bdo>
                      1. <option id="rub96"><p id="rub96"><tr id="rub96"></tr></p></option>

                          <bdo id="rub96"></bdo>
                          1. <track id="rub96"></track>
                            1. <track id="rub96"></track>
                                  <bdo id="rub96"></bdo>
                                  <option id="rub96"></option>

                                      1. <track id="rub96"><span id="rub96"></span></track>

                                          <option id="rub96"></option>

                                          1. 
                                            
                                              <option id="rub96"><span id="rub96"></span></option>
                                              <bdo id="rub96"><address id="rub96"></address></bdo>
                                              <option id="rub96"><source id="rub96"></source></option>
                                                <nobr id="rub96"><address id="rub96"></address></nobr>
                                              1. <nobr id="rub96"><optgroup id="rub96"><big id="rub96"></big></optgroup></nobr>
                                                <track id="rub96"></track>

                                                <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>
                                                  <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

                                                  <bdo id="rub96"></bdo>

                                                    1. <track id="rub96"><div id="rub96"></div></track>
                                                      <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>

                                                          <nobr id="rub96"><address id="rub96"><big id="rub96"></big></address></nobr>
                                                        1. <menuitem id="rub96"><strong id="rub96"><menu id="rub96"></menu></strong></menuitem>
                                                          <dl id="rub96"><source id="rub96"><tr id="rub96"></tr></source></dl>
                                                          1. <tbody id="rub96"><div id="rub96"></div></tbody>
                                                            1. <bdo id="rub96"><optgroup id="rub96"></optgroup></bdo>
                                                            2. <bdo id="rub96"><dfn id="rub96"><dd id="rub96"></dd></dfn></bdo>
                                                              1. <option id="rub96"><source id="rub96"></source></option>
                                                              2. <bdo id="rub96"></bdo>

                                                                  <p id="rub96"><tr id="rub96"></tr></p>
                                                                1. <tbody id="rub96"></tbody>

                                                                  <bdo id="rub96"></bdo>

                                                                2. <option id="rub96"><source id="rub96"></source></option>

                                                                  <bdo id="rub96"><optgroup id="rub96"><dd id="rub96"></dd></optgroup></bdo>
                                                                    <track id="rub96"></track>

                                                                      <bdo id="rub96"></bdo>
                                                                    1. <option id="rub96"><p id="rub96"><tr id="rub96"></tr></p></option>

                                                                        <bdo id="rub96"></bdo>
                                                                        1. <track id="rub96"></track>
                                                                          1. <track id="rub96"></track>
                                                                                <bdo id="rub96"></bdo>
                                                                                <option id="rub96"></option>

                                                                                    1. <track id="rub96"><span id="rub96"></span></track>

                                                                                        <option id="rub96"></option>

                                                                                        1. 
                                                                                          
                                                                                            <option id="rub96"><span id="rub96"></span></option>
                                                                                            <bdo id="rub96"><address id="rub96"></address></bdo>
                                                                                            <option id="rub96"><source id="rub96"></source></option>
                                                                                              <nobr id="rub96"><address id="rub96"></address></nobr>
                                                                                            1. <nobr id="rub96"><optgroup id="rub96"><big id="rub96"></big></optgroup></nobr>
                                                                                              <track id="rub96"></track>

                                                                                              <nobr id="rub96"><optgroup id="rub96"></optgroup></nobr>
                                                                                              1. 3dѡ060 ι Ͽ3ͼ ֻ̳ ½ʱʱǺϷ ţţôӮ ½ʱʱ 12 12ѡ5ѡ ͸ ʮһѡӱʱʱ ̳ϴȫ 1 ɹʱʱۺͼ ְھ ŲʱʱƻȺ