??xml version="1.0" encoding="utf-8" standalone="yes"?>快乐12开奖:BlogJava - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/misc专注于Java技?/description>zh-cnTue, 16 Oct 2018 04:06:43 GMTTue, 16 Oct 2018 04:06:43 GMT60新手入门:零基础理解大型分布式架构的演进历史、技术原理、最佳实?/title><link>//www.ot7t.com.cn/jb2011/archive/2018/10/15/433439.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Mon, 15 Oct 2018 02:57:00 GMT</pubDate><guid>//www.ot7t.com.cn/jb2011/archive/2018/10/15/433439.html</guid><wfw:comment>//www.ot7t.com.cn/jb2011/comments/433439.html</wfw:comment><comments>//www.ot7t.com.cn/jb2011/archive/2018/10/15/433439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/jb2011/comments/commentRss/433439.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/jb2011/services/trackbacks/433439.html</trackback:ping><description><![CDATA[<p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">本文引用了阿豪的微信公众号文章分享,感谢原作者的分享?/p><h1>快乐12开奖:1、前言</h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">随着社会的发展、互联网技术的进步,以前的大型机服务端架构很显然由于高成本、难维护等原因渐渐地变得不再那么主流了,替代它的就是当下最火的互联网分布式架构?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">从若干年前大行其道的传统大型机到如今的分布式架构,技术发展已经经历了好几个阶段,我们只有弄明白典型互联网架构在各个阶段的演进,才能更好地理解和体会分布式架构的好处,从而有助于我们序设计适合于自已公司、产品或项目的架构(也包括设计即时通讯网专注的IM和消息推送这类系统,因为技术思路的原理都是一脉相承的)。那么本文我们就来聊聊分布式架构的演进过程,希望能给大家带来眼前一亮的感觉?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;"><span style="box-sizing: border-box; font-weight: 700;">点评?/span>即时通讯网作为IM和推送技术研究、学习和分享的社区,整理了大量的跟IM和推广技术有关的基础技术资料(比如网络基础、通信理论、架构基础等),本文内容虽然看起来跟IM和推送技术没有直接的关联性,但因为设计IM和推送系统的技术思路和原理跟典型大型互联网分布式架构都是一脉相承的,因而读懂本文内容对于IM和推送系统的架构设计同样大有裨益?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 625px; max-height: 214px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 214px;"></div><div data-width="625" data-height="214" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 625px; height: 214px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-e1f6a65631bb4982.jpg" src="//upload-images.jianshu.io/upload_images/1500839-e1f6a65631bb4982.jpg" data-original-width="625" data-original-height="214" data-original-format="image/jpeg" data-original-filesize="55677" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;"><span style="box-sizing: border-box; font-weight: 700;">学习交流?/span></p><blockquote style="box-sizing: border-box; padding: 20px; margin: 0px 0px 25px; font-size: 16px; border-left-width: 6px; border-left-color: #b4b4b4; background-color: #f7f7f7; line-height: 30px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; word-break: break-word !important;"><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">- 即时通讯开发交?群:<a target="_blank" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">185926912</a>[推荐]</p><p style="box-sizing: border-box; margin: 0px; line-height: 1.7; word-break: break-word !important;">- 移动端IM开发入门文章:?a target="_blank" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">新手入门一篇就够:从零开发移动端IM</a>?/p></blockquote><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">(本文同步发布于?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">//www.52im.net/thread-2007-1-1.html</a>?/p><h1 class="yibqv">2、相关文?/h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">如果你已完全掌握本文的相关知识,请移步继续阅读即时通讯网整理的另一篇:?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面?/a>》,该文适合对互联网架构知识有一定了解的程序员阅读和学习,都是不可能多得的技术干货?/p><h1 class="yibqv">3、技术背景说?/h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,慢慢的完善的?在这个过程中,开发模式、技术架构等都会随着迭代发生非常大的变化?而针对不同业务特征的系统,各自都会有自己的侧重点,例如像淘宝这类的网站,要解决的重点问题就是海量商品搜索、下单、支付等问题; 像腾讯这类的网站,要解决的是数亿级别用户的实时消息传?而像百度这类的公司所要解决的又是海量数据的搜索。每一个种类的业务都有自己不同的系统架构?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">为了方便展开本文要讲解的内容,我们来简单模拟一个架构演变过程: 我们?javaweb 为例,来搭建一个简单的电商系统,从这个系统中来看系统的演变过程。要注意的是接下来的演示模型?关注的是数据量、访问量提升,网站结构的变化?而不关注具体业务的功能点。其次,这个过程是为了让大家能更好的了解网站演进过程中的一些问题和应对策略?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;"><span style="box-sizing: border-box; font-weight: 700;">假如我们要设计的互联网系统需要具备以下功?</span></p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">1)用户模块:用户注册和管理;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">2)商品模?商品展示和管理;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">3)交易模?创建交易及支付结算?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">请带着上述3个技术点,继续深入阅读本文的正文内容。干货马上开始了。。?/p><h1 class="yibqv">4、架构演进阶段一:单应用架构</h1><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 352px; max-height: 320px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 320px;"></div><div data-width="352" data-height="320" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 352px; height: 320px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-3d2d90961f60bd0f.jpg" src="//upload-images.jianshu.io/upload_images/1500839-3d2d90961f60bd0f.jpg" data-original-width="352" data-original-height="320" data-original-format="image/jpeg" data-original-filesize="27794" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">如上图所示,这个阶段是网站的初期,也可以认为是互联网发展的早期,系统架构如上图所示。我们经常会在单台服务器上运行我们所有的程序和软件?把所有软件和应用都部署在一台机器上,这样就完成一个简单系统的搭建,这个阶段的讲究的是效率。效率决定生死?/p><h1 class="yibqv">5、架构演进阶段二:应用服务器和数据库服务器分?/h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">随着网站的上线,访问量逐步上升,服务器的负载慢慢提高,我们应该在服务器还没有超载的时候就做好规划、提升网站的负载能力。假若此时已经没办法在代码层面继续优化提高,那么在单台机器的性能遇到瓶颈的时候,增加机器是一个比较简单好用的方式,投入产出比相当高。这个阶段增加机器的主要目的是将 web 服务器和 数据库服务器拆分开来,这样做的话不仅提高了单机的负载能力,也提高了整个系统的容灾能力?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 492px; max-height: 350px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 350px;"></div><div data-width="492" data-height="350" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 492px; height: 350px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-a2de5f5f47a06f3c.jpg" src="//upload-images.jianshu.io/upload_images/1500839-a2de5f5f47a06f3c.jpg" data-original-width="492" data-original-height="350" data-original-format="image/jpeg" data-original-filesize="39337" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">这个阶段的系统架构如上图所示,应用服务器和数据库服务器完全隔离开来,相互互不影响,大大减少了网站宕机的风险,此阶段我们已经开始关注到应用服务器的管理了?nbsp;</p><h1 class="yibqv">6、架构演进阶段三:应用服务器集群</h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">这个阶段,随着访问量的继续不断增加,单台应用服务器已经无法满足我们的需求?假设我的数据库服务器还没有遇到性能问题,那我们可以通过增加应用服务器的方式来将应用服务器集群化,这样就可以将用户请求分流到各个服务器中,从而达到继续提升系统负载能力的目的。此时各个应用服务器之间没有直接的交互,他们都是依赖数据库各自对外提供服务?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 622px; max-height: 319px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 319.016px;"></div><div data-width="622" data-height="319" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 622px; height: 319px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-5bd6aacd75564e8c.jpg" src="//upload-images.jianshu.io/upload_images/1500839-5bd6aacd75564e8c.jpg" data-original-width="622" data-original-height="319" data-original-format="image/jpeg" data-original-filesize="48699" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;"><span style="box-sizing: border-box; font-weight: 700;">系统架构发展到这个阶段,各种问题也会接踵而至?/span></p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">1)用户请求交由谁来转发到具体的应用服务器?谁来负责负载均衡)?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">2)用户如果每次访问到的服务器不一样,那么如何维护session,达到session共享的目的?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">那么此时,系统架构又会变成如下方式:</p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 673px; max-height: 556px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 556.031px;"></div><div data-width="673" data-height="556" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 673px; height: 556px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-3f8539e13254f731.jpg" src="//upload-images.jianshu.io/upload_images/1500839-3f8539e13254f731.jpg" data-original-width="673" data-original-height="556" data-original-format="image/jpeg" data-original-filesize="46966" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">负载均衡又可以分为软负载和硬负载。软负载我们可以选择Nginx、Apache等,硬负载我们可以选择F5等。而session共享问题我们可以通过配置tomcat的session共享解决?/p><h1 class="yibqv">7、架构演进阶段四:数据库压力变大,数据库读写分离</h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">架构演变到上面的阶段,并不是终点。通过上面的设计,应用层的性能被我们拉上来了, 但数据库的负载也在逐渐增大,那如何去提高数据库层面的性能呢?有了前面的设计思路以后,我们自然也会想到通过增加服务器来提高性能。但假如我们单纯的把数据库一分为二,然后对于数据库的请求,分别负载到两台数据库服务器上,那必定会造成数据库数据不统一的问题?nbsp;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">所以我们一般先考虑将数据库读写分离,如下图所示?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 700px; max-height: 676px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 676.047px;"></div><div data-width="760" data-height="734" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 700px; height: 676px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-89ff21ca22421c6b.jpg" src="//upload-images.jianshu.io/upload_images/1500839-89ff21ca22421c6b.jpg" data-original-width="760" data-original-height="734" data-original-format="image/jpeg" data-original-filesize="65241" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;"><span style="box-sizing: border-box; font-weight: 700;">这个架构设计的变化会带来如下几个问题?/span></p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">1)主从数据库之间的数据需要同?可以使用 mysql 自带?master-slave 方式实现主从复制 )?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">2)应用中需要根据业务进行对应数据源的选择( 采用第三方数据库中间件,例如 mycat )?/p><h1 class="yibqv">8、架构演进阶段五:使用搜索引擎缓解读库的压力</h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">我们都知道数据库常常对模糊查找效率不是很高,像电商类的网站,搜索是非常核心的功能,即使是做了读写分离,这个问题也不能得到有效解决。那么这个时候我们就需要引入搜索引擎了,使用搜索引擎能够大大提升我们系统的查询速度,但同时也会带来一 些附加的问题,比如维护索引的构建、数据同步到搜索引擎等?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 700px; max-height: 581px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 581.766px;"></div><div data-width="882" data-height="733" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 700px; height: 581px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-50f72efdb31c4118.jpg" src="//upload-images.jianshu.io/upload_images/1500839-50f72efdb31c4118.jpg" data-original-width="882" data-original-height="733" data-original-format="image/jpeg" data-original-filesize="78316" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><h1 class="yibqv">9、架构演进阶段六:引入缓存机制缓解数据库的压?/h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">然后,随着访问量的持续不断增加,逐渐会出现许多用户访问同一内容的情况,那么对于这些热点数据,没必要每次都从数据库重读取,这时我们可以使用到缓存技术,比如 redis、memcache 来作为我们应用层的缓存?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">另外在某些场景下,如我们对用户的某些 IP 的访问频率做限制?那这个放内存中就又不合适,放数据库又太麻烦了,那这个时候可以使?Nosql 的方式比?mongDB 来代替传统的关系型数据库?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 700px; max-height: 536px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 536.547px;"></div><div data-width="925" data-height="709" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 700px; height: 536px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-954710e120ff7cbe.jpg" src="//upload-images.jianshu.io/upload_images/1500839-954710e120ff7cbe.jpg" data-original-width="925" data-original-height="709" data-original-format="image/jpeg" data-original-filesize="81274" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><h1 class="yibqv">10、架构演进阶段七:数据库的水?垂直拆分</h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">我们的网站演进的变化过程,交易、商品、用户的数据都还在同一 个数据库中,尽管采取了增加缓存,读写分离的方式,但是随着?据库的压力持续增加,数据库的瓶颈仍然是个最大的问题。因此我 们可以考虑对数据的垂直拆分和水平拆分?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 700px; max-height: 546px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 546.125px;"></div><div data-width="919" data-height="717" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 700px; height: 546px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-586915dbf7b1ab89.jpg" src="//upload-images.jianshu.io/upload_images/1500839-586915dbf7b1ab89.jpg" data-original-width="919" data-original-height="717" data-original-format="image/jpeg" data-original-filesize="86148" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">垂直拆分:把数据库中不同业务数据拆分到不同的数据库;</p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">水平拆分:把同一个表中的数据拆分到两个甚至更多的数据库中,水平拆分的原因是某些业务数据量已经达到了单个数据库的瓶颈,这时可以采取将表拆分到多个数据库中?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 700px; max-height: 538px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 538.781px;"></div><div data-width="916" data-height="705" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 700px; height: 538px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-129ed1bb7db0ccd1.jpg" src="//upload-images.jianshu.io/upload_images/1500839-129ed1bb7db0ccd1.jpg" data-original-width="916" data-original-height="705" data-original-format="image/jpeg" data-original-filesize="88949" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><h1 class="yibqv">11、架构演进阶段八:应用的拆分</h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">随着业务的发展,业务量越来越大,应用的压力越来越大。工程规模也越来越庞大。这个时候就可以考虑将应用拆分,按照领域模型将我们的用户、商品、交易拆分成多个子系统?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 700px; max-height: 549px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 549.906px;"></div><div data-width="919" data-height="722" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 700px; height: 549px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-fdc3933212712ca2.jpg" src="//upload-images.jianshu.io/upload_images/1500839-fdc3933212712ca2.jpg" data-original-width="919" data-original-height="722" data-original-format="image/jpeg" data-original-filesize="100402" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">这样拆分以后,可能会有一些相同的代码,比如用户操作,在商品和交易都需要查询,所以会导致每个系统都会有用户查询访问相关操作。这些相同的操作一定是要抽象出来,否则就是一个坑。所以通过走服务化路线的方式来解决?/p><div style="box-sizing: border-box; padding-bottom: 25px; width: 700px; margin-left: -40px; text-align: center; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff;"><div style="box-sizing: border-box; position: relative; z-index: 100; background-color: transparent; transition: background-color 0.1s linear 0s; margin: 0px auto; max-width: 700px; max-height: 544px;"><div style="box-sizing: border-box; z-index: 50; padding-bottom: 544.109px;"></div><div data-width="916" data-height="712" style="box-sizing: border-box; position: absolute; top: 0px; left: 0px; width: 700px; height: 544px; overflow: hidden;"><img data-original-src="//upload-images.jianshu.io/upload_images/1500839-067d257e12ab743c.jpg" src="//upload-images.jianshu.io/upload_images/1500839-067d257e12ab743c.jpg" data-original-width="916" data-original-height="712" data-original-format="image/jpeg" data-original-filesize="98993" style="box-sizing: border-box; border: 0px; vertical-align: middle; transition: all 0.15s linear 0s; z-index: 100; opacity: 1; max-width: 100%; height: auto; cursor: zoom-in; display: block; filter: blur(0px);" alt="" /></div></div></div><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">那么服务拆分以后,各个服务之间如何进行远程通信? 通过 RPC 技术,比较典型的有:dubbo、webservice、hessian、http、RMI 等等。前期通过这些技术能够很好的解决各个服务之间通信问题,但是, 互联网的发展是持续的,所以架构的演变和优化也还在持续?/p><h1 class="yibqv">12、本文小?/h1><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">通过本文,我们通过一个电商的案例,就了解到了分布式架构的演进过程,一环套一环,环环紧密相扣。都是通过业务量和访问量的提升来考虑重构架构设计,以便能够适应当前的环境。不可一蹴而就,也急不来,初创企业必须稳扎稳打,一步一个脚印的走出一条专属自己的路?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">本文主要针对的是零基础初学者,如果您想深入了解相关知识,请继续阅读?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面?/a>》?/p><h1 class="yibqv">附录:更多架构方面的技术文?/h1><blockquote style="box-sizing: border-box; padding: 20px; margin: 0px 0px 25px; font-size: 16px; border-left-width: 6px; border-left-color: #b4b4b4; background-color: #f7f7f7; line-height: 30px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; word-break: break-word !important;"><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">浅谈IM系统的架构设?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">简述移动端IM开发的那些坑:架构设计、通信协议和客户端</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">一套海量在线用户的移动端IM架构设计实践分享(含详细图?</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">一套原创分布式即时通讯(IM)系统理论架构方案</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">从零到卓越:京东客服即时通讯系统的技术架构演进历?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">蘑菇街即时通讯/IM服务器开发之架构选择</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">腾讯QQ1.4亿在线用户的技术挑战和架构演进之路PPT</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">微信后台基于时间序的海量数据冷热分级架构设计实践</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">微信技术总监谈架构:微信之道——大道至简(演讲全文)</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">如何解读《微信技术总监谈架构:微信之道——大道至简?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">快速裂变:见证微信强大后台架构??的演进历程(一?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">17年的实践:腾讯海量产品的技术方法论</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">移动端IM中大规模群消息的推送如何保证效率、实时性?</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">现代IM系统中聊天消息的同步和存储方案探?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">IM开发基础知识补课(?:如何设计大量图片文件的服务端存储架构?</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">IM开发基础知识补课(?:快速理解服务端数据库读写分离原理及实践建议</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">IM开发基础知识补课(?:正确理解HTTP短连接中的Cookie、Session和Token</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">WhatsApp技术实践分享:32人工程团队创造的技术神?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">微信朋友圈千亿访问量背后的技术挑战和实践总结</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">王者荣耀2亿用户量的背后:产品定位、技术架构、网络方案等</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">以微博类应用场景为例,总结海量社交系统的架构设计步?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">快速理解高性能HTTP服务端的负载均衡技术原?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">子弹短信光鲜的背后:网易云信首席架构师分享亿级IM平台的技术实?/a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">IM开发基础知识补课(?:通俗易懂,正确理解并用好MQ消息队列</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">微信技术分享:微信的海量IM聊天消息序列号生成实践(容灾方案篇)</a>?/p><p style="box-sizing: border-box; margin: 0px 0px 25px; line-height: 1.7; word-break: break-word !important;">?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">新手入门:零基础理解大型分布式架构的演进历史、技术原理、最佳实?/a>?/p><p style="box-sizing: border-box; margin: 0px; line-height: 1.7; word-break: break-word !important;">>> <a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">更多同类文章 ……</a></p></blockquote><p style="box-sizing: border-box; margin: 0px 0px 25px; color: #2f2f2f; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; font-size: 16px; background-color: #ffffff; word-break: break-word !important;">(本文同步发布于?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">//www.52im.net/thread-2007-1-1.html</a>?/p><img src ="//www.ot7t.com.cn/jb2011/aggbug/433439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/jb2011/" target="_blank">Jack Jiang</a> 2018-10-15 10:57 <a href="//www.ot7t.com.cn/jb2011/archive/2018/10/15/433439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇) - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/10/10/433431.htmlJack JiangJack JiangWed, 10 Oct 2018 07:16:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/10/10/433431.html//www.ot7t.com.cn/jb2011/comments/433431.html//www.ot7t.com.cn/jb2011/archive/2018/10/10/433431.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433431.html//www.ot7t.com.cn/jb2011/services/trackbacks/433431.html阅读全文

Jack Jiang 2018-10-10 15:16 发表评论
]]>
手把手教你读取Android版微信和手Q的聊天记?仅作技术研究学? - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/10/08/433426.htmlJack JiangJack JiangMon, 08 Oct 2018 03:33:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/10/08/433426.html//www.ot7t.com.cn/jb2011/comments/433426.html//www.ot7t.com.cn/jb2011/archive/2018/10/08/433426.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433426.html//www.ot7t.com.cn/jb2011/services/trackbacks/433426.html阅读全文

Jack Jiang 2018-10-08 11:33 发表评论
]]>
腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实?/title><link>//www.ot7t.com.cn/jb2011/archive/2018/09/29/433421.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Sat, 29 Sep 2018 03:05:00 GMT</pubDate><guid>//www.ot7t.com.cn/jb2011/archive/2018/09/29/433421.html</guid><wfw:comment>//www.ot7t.com.cn/jb2011/comments/433421.html</wfw:comment><comments>//www.ot7t.com.cn/jb2011/archive/2018/09/29/433421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/jb2011/comments/commentRss/433421.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/jb2011/services/trackbacks/433421.html</trackback:ping><description><![CDATA[     摘要: 1、概述本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征、差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebRTC互通的实现思路以及技术方案。希望能带给你启发。学习交流:- 即时通讯开发交?群:185926912[推荐]- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》(本文同步发布于:ht...  <a href='//www.ot7t.com.cn/jb2011/archive/2018/09/29/433421.html'>阅读全文</a><img src ="//www.ot7t.com.cn/jb2011/aggbug/433421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/jb2011/" target="_blank">Jack Jiang</a> 2018-09-29 11:05 <a href="//www.ot7t.com.cn/jb2011/archive/2018/09/29/433421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IM开发基础知识补课(?:通俗易懂,正确理解并用好MQ消息队列 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/09/26/433398.htmlJack JiangJack JiangWed, 26 Sep 2018 06:52:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/09/26/433398.html//www.ot7t.com.cn/jb2011/comments/433398.html//www.ot7t.com.cn/jb2011/archive/2018/09/26/433398.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433398.html//www.ot7t.com.cn/jb2011/services/trackbacks/433398.html阅读全文

Jack Jiang 2018-09-26 14:52 发表评论
]]>
脑残式网络编程入??:每天都在用的Ping命令,它到底是什么? - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/09/21/433391.htmlJack JiangJack JiangFri, 21 Sep 2018 10:12:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/09/21/433391.html//www.ot7t.com.cn/jb2011/comments/433391.html//www.ot7t.com.cn/jb2011/archive/2018/09/21/433391.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433391.html//www.ot7t.com.cn/jb2011/services/trackbacks/433391.html阅读全文

Jack Jiang 2018-09-21 18:12 发表评论
]]>
知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/09/18/433386.htmlJack JiangJack JiangTue, 18 Sep 2018 04:31:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/09/18/433386.html//www.ot7t.com.cn/jb2011/comments/433386.html//www.ot7t.com.cn/jb2011/archive/2018/09/18/433386.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433386.html//www.ot7t.com.cn/jb2011/services/trackbacks/433386.html阅读全文

Jack Jiang 2018-09-18 12:31 发表评论
]]>
迈向高阶:优秀Android程序员必知必会的网络基础 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/09/17/433383.htmlJack JiangJack JiangMon, 17 Sep 2018 02:44:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/09/17/433383.html//www.ot7t.com.cn/jb2011/comments/433383.html//www.ot7t.com.cn/jb2011/archive/2018/09/17/433383.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433383.html//www.ot7t.com.cn/jb2011/services/trackbacks/433383.html阅读全文

Jack Jiang 2018-09-17 10:44 发表评论
]]>
子弹短信光鲜的背后:网易云信首席架构师分享亿级IM平台的技术实?/title><link>//www.ot7t.com.cn/jb2011/archive/2018/09/14/433377.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Fri, 14 Sep 2018 05:50:00 GMT</pubDate><guid>//www.ot7t.com.cn/jb2011/archive/2018/09/14/433377.html</guid><wfw:comment>//www.ot7t.com.cn/jb2011/comments/433377.html</wfw:comment><comments>//www.ot7t.com.cn/jb2011/archive/2018/09/14/433377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/jb2011/comments/commentRss/433377.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/jb2011/services/trackbacks/433377.html</trackback:ping><description><![CDATA[     摘要: 本文原文内容来自InfoQ的技术分享,本次有修订、勘误和加工,感谢原作者的分享?、前言自从2018??0日子弹短信在锤子发布会露面之后(详见《老罗最新发布了“子弹短信”这款IM,主打熟人社交能否对标微信?》),关于它的讨论不绝于耳,7 天融?1.5 亿的传闻更是将它推到了风口浪尖(请见《[资讯] “子弹短信”发布一周即融得1.5亿资金》)?...  <a href='//www.ot7t.com.cn/jb2011/archive/2018/09/14/433377.html'>阅读全文</a><img src ="//www.ot7t.com.cn/jb2011/aggbug/433377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/jb2011/" target="_blank">Jack Jiang</a> 2018-09-14 13:50 <a href="//www.ot7t.com.cn/jb2011/archive/2018/09/14/433377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一文读懂高性能网络编程中的I/O模型 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/09/06/433363.htmlJack JiangJack JiangThu, 06 Sep 2018 13:09:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/09/06/433363.html//www.ot7t.com.cn/jb2011/comments/433363.html//www.ot7t.com.cn/jb2011/archive/2018/09/06/433363.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433363.html//www.ot7t.com.cn/jb2011/services/trackbacks/433363.html阅读全文

Jack Jiang 2018-09-06 21:09 发表评论
]]>
解密“达?京东到家”的订单即时派发技术原理和实践 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/09/04/433355.htmlJack JiangJack JiangTue, 04 Sep 2018 02:20:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/09/04/433355.html//www.ot7t.com.cn/jb2011/comments/433355.html//www.ot7t.com.cn/jb2011/archive/2018/09/04/433355.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433355.html//www.ot7t.com.cn/jb2011/services/trackbacks/433355.html本文由达达京东到家Java工程师季炳坤原创分享?/p>

1、前言

达达-京东到家作为优秀的即时配送物流平台,实现了多渠道的订单配送,包括外卖平台的餐饮订单、新零售的生鲜订单、知名商户的优质订单等。为了提升平台的用户粘性,我们需要兼顾商户和骑士的各自愿景:商户希望订单能够准时送达,骑士希望可以高效抢单。那么在合适的时候提升订单定制化的曝光率,是及时送物流平台的核心竞争力之一?/p>

本文将描?#8220;达达-京东到家”的订单即时派发系统从无到有的系统演进过程,以及方案设计的关键要点,希望能为大家在解决相关业务场景上提供一个案例参考?/p>

关于“达达-京东到家”?/span>

达达-京东到家,是同城速递信息服务平台和无界零售即时消费平台。达?京东到家创始人兼首席执行官蒯佳祺?/p>

公司旗下,目前已覆盖全国400 多个主要城市,服务超?20万商家用户和?5000万个人用户;

2018?月,达达-京东到家正式宣布完成最新一?亿美元融资,投资方分别为沃尔玛和京东?/p>

(本文同步发布于?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">//www.52im.net/thread-1928-1-1.html?/p>

2、关于作?/h1>

季炳坤:“达达-京东到家”Java工程师,负责“达达-京东到家”的订单派发、订单权限、合并订单等相关技术工作的实现?/p>

3、订单即时派发架构的演进

在公司发展的初期,我们的外卖订单从商户发单之后直接出现在抢单池中?公里之内的骑士能够看到订单,并且从订单卡片中获取配送地址、配送时效等关键信息。这种暴力的显示模式,很容易造成骑士挑选有利于自身的订单进行配送,从而导致部分订单超时未被配送。这样的模式,在一定程度上导致了商户的流失,同时也浪费了骑士的配送时间?/p>

从上面的场景可以看出来,我们系统中缺少一个订单核心调度者。有一种方案是选择区域订单的订单调度员,由调度员根据骑士的接单情况、配送时间、订单挤压等实时情况来进行订单调度。这种模式,看似可行,但是人力成本投入太高,且比较依赖个人的经验总结?/p>

核心问题已经出来了:个人的经验总结会是什么呢?

1?骑士正在配送的订单的数量,是否已经饱和?/p>

2?骑士的配送习惯是什么;

3?某一阶段的订单是否顺路,骑士是否可以一起配送;

4?骑士到店驻留时间的预估;

5?...

理清核心问题的答案,我们的系统派单便成为了可能?/p>

基于以上的原理,订单派发模式就可以逐渐从抢单池的订单显示演变成系统派单?/span>

我们将会?/span>

1)记录商户发单行为;

2)骑士配送日志及运行轨迹等信息?/p>

并且经过数据挖掘和数据分析:

1)获取骑士的画像?/p>

2)骑士配送时间的预估?/p>

3)骑士到店驻留时间的预估等基础信息?/p>

4)使用遗传算法规划出最优的配送路径;

5?..

经过上述一系列算法,我们将在骑士池中匹配出最合适的骑士,进而使用长连接(Netty)不间断的通知到骑士?/p>

随着达达业务的不断迭代,订单配送逐渐孵化出基于大商户的驻店模式:基于商户维护一批固定的专属骑士,订单只会在运力不足的时候才会外发到抢单池中,正常情况使用派单模式通知骑士?/p>

4、订单派发模型的方案选型

订单派发可以浅显的认为是一种信息流的推荐。在订单进入抢单池之前,我们会根据每个城市的调度情况,先进行轮询N次的派单?/p>

大概的表现形式如下图?/span>

举例?/span>有笔订单需要进行推送,在推送过程中,我们暂且假设一直没有骑士接单,那么这笔订单会每间隔N秒便会进行一次普通推荐,然后进入抢单池?/p>

从订单派发的流程周期上可以看出来,派发模型充斥着大量的延迟任务,只要能解决订单在什么时候可以进行派发,那么整个系统 50% 的功能点就能迎刃而解?/p>

我们先了解一下经典的延迟方案,请继续往下读。。?/p>

4.1 方案1:数据库轮询

通过一个线程定时的扫描数据库,获取到需要派单的订单信息?/p>

优点?/span>开发简单,结合quartz即可以满足分布式扫描?/p>

缺点?/span>对数据库服务器压力大,不利于项目后续发展?/p>

4.2 方案2:JDK的延迟队?- DelayQueue

DelayQueue是Delayed元素的一个无界阻塞队列,只有在延迟期满时才能从中提取元素。队列中对象的顺序按到期时间进行排序?/p>

优点?/span>开发简单,效率高,任务触发时间延迟低;

缺点?/span>服务器重启后,数据会丢失,要满足高可用场景,需要hook线程二次开发;宕机的担忧;如果数据量暴增,也会引起OOM的情况产生?/p>

4.3 方案3:时间轮 - TimingWheel

时间轮的结构原理很简单,它是一个存储定时任务的环形队列,底层是由数组实现,而数组中的每个元素都可以存放一个定时任务列表。列表中的每一项都表示一个事件操作单元,当时间指针指向对应的时间格的时候,该列表中的所有任务都会被执行?时间轮由多个时间格组成,每个时间格代表着当前实践论的跨度,用tickMs代表;时间轮的个数是固定的,用wheelSize代表?/p>

整个时间轮的跨度用interval代表,那么指针转了一圈的时间为:

interval = tickMs * wheelSize

如果tickMs=1ms,wheelSize=20,那么便能计算出此时的时间是?0ms为一转动周期,时间指针(currentTime)指向wheelSize=0的数据槽,此时有5ms延迟的任务插入了wheelSize=5的时间格。随着时间的不断推移,指针currentTime不断向前推进,过?ms之后,当到达时间?时,就需要将时间?所对应的任务做相应的到期操作?/p>

如果此时有个定时?80ms的任务该如何处理?很直观的思路是直接扩充wheelSize?这样会导致wheelSize的扩充会随着业务的发展而不断扩张,这样会使时间轮占用很大的内存空间,导致效率低下,因此便衍生出了层级时间轮的数据结构?/p>

180ms的任务会升级到第二层时间轮中,最终被插入到第二层时间轮中时间?8所对应的TimerTaskList中。如果此时又有一个定时为600ms的任务,那么显然第二层时间轮也无法满足条件,所以又升级到第三层时间轮中,最终被插入到第三层时间轮中时间?1的TimerTaskList中。注意到在到期时间在[400ms,800ms)区间的多个任务(比如446ms?55ms以及473ms的定时任务)都会被放入到第三层时间轮的时间格#1中,时间?1对应的TimerTaskList的超时时间为400ms?/p>

随着时间轮的转动,当TimerTaskList到期时,原本定时?50ms的任务还剩下50ms的时间,还不能执行这个任务的到期操作。便会有个时间轮降级的操作,会将这个剩余时间50ms的定时任务重新提交到下一层级的时间轮中,所以该任务被放到第二层时间轮到期时间为 [40ms,60ms) 的时间格中。再经历?0ms之后,此时这个任务又被触发到,不过还剩余10ms,还是不能立即执行到期操作。所以还要再一次的降级,此任务会被添加到第一层时间轮到期时间为[10ms,11ms)的时间格中,之后再经?0ms后,此任务真正到期,最终执行相应的到期操作?/p>

优点?/span>效率高,可靠性高(Netty,Kafka,Akka均有使用),便于开发;

缺点?/span>数据存储在内存中,需要自己实现持久化的方案来实现高可用?/p>

5、订单派发方案的具体实现

结合了上述的三种方案,最后决定使用redis作为数据存储,使用timingWhell作为时间的推动者。这样便可以将定时任务的存储和时间推动进行解耦,依赖Redis的AOF机制,也不用过于担心订单数据的丢失?/p>

kafka中为了处理成千上万的延时任务选择了多层时间轮的设计,我们从业务角度和开发难度上做了取舍,只选择设计单层的时间轮便可以满足需求?/p>

1)时间格和缓存的映射维护?/span>

假设当前时间currentTime?1:49:50,订单派发时间dispatchTime?1:49:57,那么时间轮的时间格#7中会设置一个哨兵节点(作为是否有数据存储在redis的依?)用来表示该时间段是否会时间事件触发,同时会将这份数据放入到缓存中(key=dispatchTime+ip? ?秒过后,触发了该时间段的数据,便会从redis中获取数据,异步执行相应的业务逻辑。最后,防止由于重启等一些操作导致数据的丢失,哨兵节点的维护也会在缓存中维护一份数据,在重启的时候重新读取?/p>

2)缓存的key统一加上IP标识?/span>

由于我们的时间调度器是依附于自身系统的,通过将缓存的key统一加上IP的标识,这样就可以保证各台服务器消费属于自身的数据,从而防止分布式环境下的并发问题,也可以减轻遍历整个列表带来的时间损耗(时间复杂度为O(N))?/p>

3)使用异步线程处理时间格中对应的数据?/span>

使用异步线程,是考虑到如果上一个节点发生异常或者超时等情况,会延误下一秒的操作,如果使用异常可以改善调度的即时性问题?/p>

我们在设计系统的时候,系统的完善度和业务的满足度是互相关联影响的,单从上述的设计看,是会有些问题的,比如使用IP作为缓存的key,如果集群发生变更便会导致数据不会被消费;使用线程池异步处理也有概率导致数据不会被消费。这些不会被消费的数据会进入到抢单池中。从派单场景的需求来看,这些场景是可以被接受的,当然了,我们系统会有脚本来进行定期的筛选,将那些进入抢单池的订单进行再次派单?/p>

* 思考:为什么不使用ScheduledThreadPoolExecutor来定时轮询redis?

原因是即便这样可以完成业务上的需求,获取定时触发的任务,但是带来的空查询不但会拉高服务的CPU,redis的QPS也会被拉高,可能会导致redis的慢查询会显著增多?/p>

6、结?/h1>

我们在完成一个功能的时候,往往需要一些可视化的数据来确定业务发展的正确性。因此我们在开发的时候,也相应的记录了一些订单与骑士的交互动作。从每天的报表数据可以看出来?0% 以上的订单是通过派单发出并且被骑士认可接单?/p>

订单派发的模式是提升订单曝光率有效的技术手段,我们一直结合大数据、人工智能等技术手段希望能更好的做好订单派发,能提供更加多元化的功能,将达达打造成更加一流的配送平台?/p>

附录:更多相关技术文?/h1>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">伪即时通讯:分享滴滴出行iOS客户端的演进过程?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">iOS的推送服务APNs详解:设计思路、技术原理及缺陷?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">信鸽团队原创:一起走?iOS10 上消息推?APNS)的坑?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">Android端消息推送总结:实现原理、心跳保活、遇到的问题?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">扫盲贴:认识MQTT通信协议?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">一个基于MQTT通信协议的完整Android推送Demo?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">IBM技术经理访谈:MQTT协议的制定历程、发展现状等?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">求教android消息推送:GCM、XMPP、MQTT三种方案的优?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">移动端实时消息推送技术浅?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">扫盲贴:浅谈iOS和Android后台实时消息推送的原理和区?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">绝对干货:基于Netty实现海量接入的推送服务技术要?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">移动端IM实践:谷歌消息推送服?GCM)研究(来自微信)?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">为何微信、QQ这样的IM工具不使用GCM服务推送消息??/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">极光推送系统大规模高并发架构的技术实践分?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">从HTTP到MQTT:一个基于位置服务的APP数据通信实践概述?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">魅族2500万长连接的实时消息推送架构的技术实践分?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">专访魅族架构师:海量长连接的实时消息推送系统的心得体会?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">深入的聊聊Android消息推送这件小?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">基于WebSocket实现Hybrid移动应用的消息推送实?含代码示??/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">一个基于长连接的安全可扩展的订?推送服务实现思路?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">实践分享:如何构建一套高可用的移动端消息推送系统??/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">Go语言构建千万级在线的高并发消息推送系统实?来自360公司)?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">腾讯信鸽技术分享:百亿级实时消息推送的实战经验?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">百万在线的美拍直播弹幕系统的实时推送技术实践之?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">京东京麦商家开放平台的消息推送架构演进之?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">了解iOS消息推送一文就够:史上最全iOS Push技术详?/a>?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">基于APNs最新HTTP/2接口实现iOS的高性能消息推?服务端篇)?/p>

?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">解密“达达-京东到家”的订单即时派发技术原理和实践?/a>

>> 更多同类文章 ……

(本文同步发布于?a target="_blank" rel="nofollow" style="box-sizing: border-box; background-color: transparent; color: #3194d0; text-decoration-line: none; cursor: pointer;">//www.52im.net/thread-1928-1-1.html?/p>

Jack Jiang 2018-09-04 10:20 发表评论
]]> 以网游服务端的网络接入层设计为例,理解实时通信的技术挑?/title><link>//www.ot7t.com.cn/jb2011/archive/2018/08/29/433348.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Wed, 29 Aug 2018 10:21:00 GMT</pubDate><guid>//www.ot7t.com.cn/jb2011/archive/2018/08/29/433348.html</guid><wfw:comment>//www.ot7t.com.cn/jb2011/comments/433348.html</wfw:comment><comments>//www.ot7t.com.cn/jb2011/archive/2018/08/29/433348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/jb2011/comments/commentRss/433348.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/jb2011/services/trackbacks/433348.html</trackback:ping><description><![CDATA[     摘要: 本文参考并引用了部分腾讯游戏学院的相关技术文章内容,感谢原作者的分享?、前言以现在主流的即时通讯应用形态来讲,一个完整的即时通讯IM应用其实是即时通信(英文简写:IM=Instant messaging)和实时通信(英文简写:RTC=Real-time communication?种技术组合在一起的一整套网络通信系统。之所以以IM这个简写代称整个即时通讯软件,其实是历史原因了(因为早期的诸如I...  <a href='//www.ot7t.com.cn/jb2011/archive/2018/08/29/433348.html'>阅读全文</a><img src ="//www.ot7t.com.cn/jb2011/aggbug/433348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/jb2011/" target="_blank">Jack Jiang</a> 2018-08-29 18:21 <a href="//www.ot7t.com.cn/jb2011/archive/2018/08/29/433348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如果这样来理解HTTPS,一篇就够了?/title><link>//www.ot7t.com.cn/jb2011/archive/2018/08/20/433340.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Mon, 20 Aug 2018 10:24:00 GMT</pubDate><guid>//www.ot7t.com.cn/jb2011/archive/2018/08/20/433340.html</guid><wfw:comment>//www.ot7t.com.cn/jb2011/comments/433340.html</wfw:comment><comments>//www.ot7t.com.cn/jb2011/archive/2018/08/20/433340.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/jb2011/comments/commentRss/433340.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/jb2011/services/trackbacks/433340.html</trackback:ping><description><![CDATA[     摘要: 1、前言可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢。这其实是个误解:当今主流的移动端IM数据通信,总结下来无外乎就是长连接+短连接的方式,长连接就是众所周之的TCP、UDP、WebSocket(WebSocket的本质还是TCP),而短连接就是HTTP/HTTPS了。即时通讯IM应用中,短连接的安全跟长连接相比?..  <a href='//www.ot7t.com.cn/jb2011/archive/2018/08/20/433340.html'>阅读全文</a><img src ="//www.ot7t.com.cn/jb2011/aggbug/433340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/jb2011/" target="_blank">Jack Jiang</a> 2018-08-20 18:24 <a href="//www.ot7t.com.cn/jb2011/archive/2018/08/20/433340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最火移动端跨平台方案盘点:React Native、weex、Flutter - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/08/13/433327.htmlJack JiangJack JiangMon, 13 Aug 2018 02:51:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/08/13/433327.html//www.ot7t.com.cn/jb2011/comments/433327.html//www.ot7t.com.cn/jb2011/archive/2018/08/13/433327.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433327.html//www.ot7t.com.cn/jb2011/services/trackbacks/433327.html阅读全文

Jack Jiang 2018-08-13 10:51 发表评论
]]>
新浪微博技术分享:微博短视频服务的优化实践之路 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/08/06/433320.htmlJack JiangJack JiangMon, 06 Aug 2018 08:34:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/08/06/433320.html//www.ot7t.com.cn/jb2011/comments/433320.html//www.ot7t.com.cn/jb2011/archive/2018/08/06/433320.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433320.html//www.ot7t.com.cn/jb2011/services/trackbacks/433320.html阅读全文

Jack Jiang 2018-08-06 16:34 发表评论
]]>
Android P正式版即将到来:后台应用保活、消息推送的真正噩梦 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/08/02/433313.htmlJack JiangJack JiangThu, 02 Aug 2018 07:27:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/08/02/433313.html//www.ot7t.com.cn/jb2011/comments/433313.html//www.ot7t.com.cn/jb2011/archive/2018/08/02/433313.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433313.html//www.ot7t.com.cn/jb2011/services/trackbacks/433313.html阅读全文

Jack Jiang 2018-08-02 15:27 发表评论
]]>
微信多媒体团队梁俊斌访谈:聊一聊我所了解的音视频技?/title><link>//www.ot7t.com.cn/jb2011/archive/2018/07/31/433311.html</link><dc:creator>Jack Jiang</dc:creator><author>Jack Jiang</author><pubDate>Tue, 31 Jul 2018 07:25:00 GMT</pubDate><guid>//www.ot7t.com.cn/jb2011/archive/2018/07/31/433311.html</guid><wfw:comment>//www.ot7t.com.cn/jb2011/comments/433311.html</wfw:comment><comments>//www.ot7t.com.cn/jb2011/archive/2018/07/31/433311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/jb2011/comments/commentRss/433311.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/jb2011/services/trackbacks/433311.html</trackback:ping><description><![CDATA[     摘要: 本文内容?#8220;微信多媒体团?#8221;整理发布?、引言广州TIT创意园,这里是腾讯在广州的研发团队所在地,LiveVideoStack采访了微信多媒体内核中心音视频算法高级工程师梁俊斌(Denny)。从华为2012实验室到腾讯,过去十余年梁俊斌一直专注在音频技术。他告诉LiveVideoStack:音频技术还有许多难点需要解决,而作为技术人也延展到应用场景,关注用户需求。本文整理了...  <a href='//www.ot7t.com.cn/jb2011/archive/2018/07/31/433311.html'>阅读全文</a><img src ="//www.ot7t.com.cn/jb2011/aggbug/433311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/jb2011/" target="_blank">Jack Jiang</a> 2018-07-31 15:25 <a href="//www.ot7t.com.cn/jb2011/archive/2018/07/31/433311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 基于APNs最新HTTP/2接口实现iOS的高性能消息推?服务端篇) - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/07/30/433310.htmlJack JiangJack JiangMon, 30 Jul 2018 02:51:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/07/30/433310.html//www.ot7t.com.cn/jb2011/comments/433310.html//www.ot7t.com.cn/jb2011/archive/2018/07/30/433310.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433310.html//www.ot7t.com.cn/jb2011/services/trackbacks/433310.html阅读全文

Jack Jiang 2018-07-30 10:51 发表评论
]]>
全面掌握移动端主流图片格式的特点、性能、调优等 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/07/23/433302.htmlJack JiangJack JiangMon, 23 Jul 2018 07:36:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/07/23/433302.html//www.ot7t.com.cn/jb2011/comments/433302.html//www.ot7t.com.cn/jb2011/archive/2018/07/23/433302.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433302.html//www.ot7t.com.cn/jb2011/services/trackbacks/433302.html阅读全文

Jack Jiang 2018-07-23 15:36 发表评论
]]>
腾讯技术分享:微信小程序音视频技术背后的故事 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/07/21/433301.htmlJack JiangJack JiangSat, 21 Jul 2018 12:50:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/07/21/433301.html//www.ot7t.com.cn/jb2011/comments/433301.html//www.ot7t.com.cn/jb2011/archive/2018/07/21/433301.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433301.html//www.ot7t.com.cn/jb2011/services/trackbacks/433301.html阅读全文

Jack Jiang 2018-07-21 20:50 发表评论
]]>
脑残式网络编程入??:快速理解HTTP/2的服务器推?Server Push) - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/jb2011/archive/2018/07/19/433300.htmlJack JiangJack JiangThu, 19 Jul 2018 08:18:00 GMT//www.ot7t.com.cn/jb2011/archive/2018/07/19/433300.html//www.ot7t.com.cn/jb2011/comments/433300.html//www.ot7t.com.cn/jb2011/archive/2018/07/19/433300.html#Feedback0//www.ot7t.com.cn/jb2011/comments/commentRss/433300.html//www.ot7t.com.cn/jb2011/services/trackbacks/433300.html阅读全文

]]>