??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲自拍偷拍综合,久久久久久久久一区,久久96国产精品久久99软件http://www.aygfsteel.com/paulwong/category/55342.htmlzh-cnWed, 18 May 2022 10:24:20 GMTWed, 18 May 2022 10:24:20 GMT6012 Factor App Principles and Cloud-Native Microserviceshttp://www.aygfsteel.com/paulwong/archive/2022/05/18/450749.htmlpaulwongpaulwongWed, 18 May 2022 07:59:00 GMThttp://www.aygfsteel.com/paulwong/archive/2022/05/18/450749.htmlhttp://www.aygfsteel.com/paulwong/comments/450749.htmlhttp://www.aygfsteel.com/paulwong/archive/2022/05/18/450749.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/450749.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/450749.html

https://dzone.com/articles/12-factor-app-principles-and-cloud-native-microser

paulwong 2022-05-18 15:59 发表评论
]]>
Enterprise Architect VS Solution Architect VS Software Architecthttp://www.aygfsteel.com/paulwong/archive/2021/10/11/436007.htmlpaulwongpaulwongMon, 11 Oct 2021 07:29:00 GMThttp://www.aygfsteel.com/paulwong/archive/2021/10/11/436007.htmlhttp://www.aygfsteel.com/paulwong/comments/436007.htmlhttp://www.aygfsteel.com/paulwong/archive/2021/10/11/436007.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/436007.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/436007.html
  • Enterprise Architect
    定义企业的大概方?
    • Solution Architect
      定义pȝ使用哪些框架技?/li>
    • Software  Architect
      定义pȝ行ؓ
    • Technical  Architect
      定义有关部v所使用服务?/li>

    https://stackoverflow.com/questions/524941/whats-the-difference-between-solutions-architect-and-applications-architect

    https://www.youtube.com/watch?v=zB9WuYE1REI


    paulwong 2021-10-11 15:29 发表评论
    ]]>
    怎么提高自己的系l架构水q?/title><link>http://www.aygfsteel.com/paulwong/archive/2021/08/04/435940.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 04 Aug 2021 03:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/paulwong/archive/2021/08/04/435940.html</guid><wfw:comment>http://www.aygfsteel.com/paulwong/comments/435940.html</wfw:comment><comments>http://www.aygfsteel.com/paulwong/archive/2021/08/04/435940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/paulwong/comments/commentRss/435940.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/paulwong/services/trackbacks/435940.html</trackback:ping><description><![CDATA[<a target="_blank">https://my.oschina.net/u/4662964/blog/5135740</a><br /><br /><img src ="http://www.aygfsteel.com/paulwong/aggbug/435940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/paulwong/" target="_blank">paulwong</a> 2021-08-04 11:05 <a href="http://www.aygfsteel.com/paulwong/archive/2021/08/04/435940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>21道系l设?面向对象的面试题http://www.aygfsteel.com/paulwong/archive/2020/08/02/435625.htmlpaulwongpaulwongSun, 02 Aug 2020 08:54:00 GMThttp://www.aygfsteel.com/paulwong/archive/2020/08/02/435625.htmlhttp://www.aygfsteel.com/paulwong/comments/435625.htmlhttp://www.aygfsteel.com/paulwong/archive/2020/08/02/435625.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/435625.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/435625.html

    事不宜迟Q我们马上来看这21道最受欢q,提问率最高的pȝ设计+面向对象的面试题Q这些问题的分析能让你轻村ֺ寚w目设计的面试?/p>

    1. 如何用Java设计自动售货机? Q解x案)

    你需要编写代码来设计自动售货机,该自动售货机售卖如y克力Q糖果,冷饮之类的品,需要投入硬币进行购乎ͼ例如5分?0分?5分,50分?元等。确保插入硬币获得?Q然后退回零钱?另外Q编写单元测试以证明q些常见用例有效?如果遇到困难Q可以阅L兌册些经典系l设计问题的两部分文章(W?部分和第2部分Q?/p>

    2. 如何设计cMGoo.gl或Bit.Ly的URL~短服务Q(解决Ҏ(gu)Q?/strong>

    q是一个常见的pȝ设计问题?你给了一个普通长度的URLQ你如何设计ؓ其生成较短且唯一的别名的服务Q?如果你不熟?zhn)URL~短E序服务Q请查看一些常用的例子Q例如Google的goo.gl和Twitter使用的bit.ly。确保在一些设计决{后提供数据库模式和基本原理Q例如保留数据多长时_如何获取l计信息和分析等。如果遇到问题,可以参照关于Educative?#8220;pȝ设计面试评”中给出的解决Ҏ(gu)?/p>

    3.你如何设计交通控制系l?

    l典pȝ设计问题仍然提及频率?保你知道如何从一U状态过渡到另一U状态,例如从红色过渡到l色Q从l色q渡到橙色再q渡到红色等?/p>

    4. 如何设计限h(hun)单? Q解x案)

    限h(hun)订单在证券交易所中用于根据h(hun)格和旉优先U将买入订单与卖单进行匹配?你会怎么做? 你将使用哪种数据l构Q?误住,匚w的速度是关键,也是可靠的?如果你需要复习数据结构,则可以查看Java评中的数据l构和算法,如果你遇到困难,可以在这里查看我的解x案?/p>

    5. 你如何设计类似Pastebin的网站?

    Pastebin允许你粘贴文本或代码Q然后在L位置׃n指向该代码的链接。它不是在线代码~辑器,但是你可以用它来存储Q何类型的文本?/p>

    6. 你将如何创徏自己的InstagramQ?Q解x案)

    Instagram是一个照片共享应用程序,它提供了一些自定义滤镜以提高照片质量。你的应用程序应该具有照片上传功能,为搜索标记照片以及一些基本的qo器。如果你可以d׃n或社交网l,那就太好不过了。顺便说一句,如果你遇到困难,q可以在Educative的如何准备系l设计面试课E中看到免费的解x案?/p>

    7. 你如何设计像Google Drive或Dropboxq样的全局文g׃n和存储应用程序?

    q些用于存储和共享文Ӟ照片和其他媒体。你如何设计诸如允许用户上传/查看/搜烦/׃n文g或照片之cȝ东西Q跟t文件共享的权限Qƈ允许多个用户~辑同一文Q?/p>

    8. 你如何设计类似Whatsapp或Facebook Messenger的聊天应用程序?

    你肯定用过WhatsApp和FacebookQ没有?如果没有Q我告诉你聊天应用程序允怽向你的朋友发送消息。这是点对点的连接。你保留一个朋友列表,查看他们的状态ƈ聊天。在WhatsApp中,你也可以q接l,但适用于高U和l验丰富的开发h员。至,你应该提供一U设计来保留好友列表q从中发送和接收消息?/p>

    9. 你如何设计Twitter克隆Q?/strong>

    Twitter是一U流行的消息服务Q可让你向所有关注者广播消息。你发布推文Q你的关注者可以看到这些消息,他们可以喜欢或{发。确保实C诸如_丝xQ主题标{,发博Q删除等常用功能。如果你觉得自己有点困难Q则可以按照如何应对pȝ设计面试的课E解x案进行操作?/p>

    10. 如何设计像YouTube或Netflixq样的全球视频流服务Q?/strong>

    设计像NetFlix或YouTubeq样的视频流服务Ӟ关键是顺畅和~冲以及在低带宽q接上的功能Q如何应对这些挑战?

    11. 如何设计ATM机?

    ATM机允许用户存入和提取现金。它q允许用h看其余额。你如何设计q样的系l?你面临的主要挑战是什么?

    12. 如何设计API速率限制器?

    13. 你如何设计Twitter搜烦Q?/strong>

    14. 如何设计cM于Google的网l爬虫?

    |络搜寻器可以访问网站ƈ像Google一hL有链接ƈ它们编入烦引,以便它们以后可以出现在搜索结果中。爬|程序还可用于在一l目录中搜烦特定文gQ你如何设计此类文gQ主要挑战是什么?

    15. 如何设计Facebook的NewsfeedQ你用哪U算法?

    新闻源是Facebook的重要组成部分,它用户可以查看他的世界正在发生的事情,包括朋友和家人,他喜Ƣ的面Q他x的组以及Facebookq告?/p>

    Newsfeed法的作用是昄对用h说最重要的消息,q且可以产生很高的参与度。显Ӟ来自朋友和家人的消息应该优先处理。如果你觉得陷入困境Q则可以按照如何做好pȝ设计面试的课E所提出解决{案?/p>

    16. 如何设计Yelp或Nearby Friends?

    17. 如何设计全球乘R服务E.G. UberQGrab或Ola后端Q?/strong>

    优步QUberQ和奥拉QOlaQ是最受欢q的两种乘R服务Q它?yu)驾驶员和乘客都l合C赗你如何设计让乘客看到附q的出租车ƈq行预订Q?/p>

    18. 如何设计BookMyShowQ?/strong>

    一个允怽预订?sh)媄院和zd门票的网站。这实际上是一家运转良好的印度创业公司?/p>

    19. 如何设计QuoraQReddit或Hackernews{社交网l?留言板服务网站?

    RedditQQuora和HackerNews是一些最受欢q的C交|站Q用户可以在其中发布问题或共享链接。其他用户可以回{问题或对共享链接发表评论?/p>

    20. 你如何设计类似Airbnb的应用程序?

    它允许某些用户上传房间出U,而其他用户则出租。某些功能仅适用于管理员Q发布者和订阅者?/p>

    21. 你如何设计电(sh)梯系l?

    我们大多Ch都用电(sh)梯,你在一些大型办公大gQ你可以看到3?部电(sh)梯。你需要ؓ此设计YӞ以便可以在不同楼层快速用。你可以假设你有两部甉|和一?0层楼的徏{?/p>

    如果你需要一些帮助,那么我徏议你可在Udemy上学习如何做好系l设计面试课E,Rajat Mehta在那里有一个完整的案例研究来解册个问题。你q将在那里学习高U系l设计,低pȝ设计和数据库设计?/p>

    paulwong 2020-08-02 16:54 发表评论
    ]]>
    淘宝千万Uƈ发分布式架构?4ơ演q?/title><link>http://www.aygfsteel.com/paulwong/archive/2019/08/16/434451.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 16 Aug 2019 02:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/paulwong/archive/2019/08/16/434451.html</guid><wfw:comment>http://www.aygfsteel.com/paulwong/comments/434451.html</wfw:comment><comments>http://www.aygfsteel.com/paulwong/archive/2019/08/16/434451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/paulwong/comments/commentRss/434451.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/paulwong/services/trackbacks/434451.html</trackback:ping><description><![CDATA[<p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>一、概q?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">本文以淘宝作Z子,介绍从一百个q发到千万q发情况下服务端的架构的演进q程Q同时列丑և每个演进阶段会遇到的相关技术,让大家对架构的演q有一个整体的认知Q文章最后汇M一些架构设计的原则?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>二、基本概?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在介l架构之前,Z避免部分读者对架构设计中的一些概念不了解Q下面对几个最基础的概念进行介l:</p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>1Q分布式</strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">pȝ中的多个模块在不同服务器上部|Ԍ卛_UCؓ分布式系l,如Tomcat和数据库分别部v在不同的服务器上Q或两个相同功能的Tomcat分别部v在不同服务器上?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>2Q高可用</strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">pȝ中部分节点失效时Q其他节点能够接替它l箋提供服务Q则可认为系l具有高可用性?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>3Q集?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">一个特定领域的软g部v在多台服务器上ƈ作ؓ一个整体提供一cL务,q个整体UCؓ集群。如Zookeeper中的Master和Slave分别部v在多台服务器上,共同l成一个整体提供集中配|服务?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在常见的集群中,客户端往往能够q接L一个节点获得服务,q且当集中一个节Ҏ(gu)U时Q其他节点往往能够自动的接替它l箋提供服务Q这时候说明集具有高可用性?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>4Q负载均?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">h发送到pȝӞ通过某些方式把请求均匀分发到多个节点上Qɾpȝ中每个节点能够均匀的处理请求负载,则可认ؓpȝ是负载均衡的?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>5Q正向代理和反向代理</strong></p> <ul style="list-style-type: none; margin: 0px 0px 1em; padding: 0px; line-height: 0px;"> <li style="margin: 0px; padding: 0px 0px 0px 9px; line-height: 28px; zoom: 1; background: url("img/bullet1.png") left 0.9em no-repeat;">pȝ内部要访问外部网l时Q统一通过一个代理服务器把请求{发出去,在外部网l看来就是代理服务器发v的访问,此时代理服务器实现的是正向代理;</li> <li style="margin: 0px; padding: 0px 0px 0px 9px; line-height: 28px; zoom: 1; background: url("img/bullet1.png") left 0.9em no-repeat;">当外部请求进入系l时Q代理服务器把该h转发到系l中的某台服务器上,对外部请求来_与之交互的只有代理服务器Q此时代理服务器实现的是反向代理?/li> </ul> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">单来_正向代理是代理服务器代替pȝ内部来访问外部网l的q程Q反向代理是外部h讉Kpȝ旉过代理服务器{发到内部服务器的q程?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>三、架构演q?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>单机架构</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p1.pstatp.com/large/pgc-image/RSQI5TRAP4kzbG" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">以淘宝作Z子。在|站最初时Q应用数量与用户数都较少Q可以把Tomcat和数据库部v在同一台服务器上。浏览器往<em>www</em>.taobao<em>.com</em>发vhӞ首先l过DNS服务器(域名pȝQ把域名转换为实际IP地址10.102.4.1Q浏览器转而访问该IP对应的Tomcat?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">随着用户数的增长QTomcat和数据库之间竞争资源Q单机性能不以支撑业务?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W一ơ演q:</strong><strong>Tomcat与数据库分开部v</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p1.pstatp.com/large/pgc-image/RSQI5ThIKTi6Dq" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">Tomcat和数据库分别独占服务器资源,显著提高两者各自性能?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">随着用户数的增长Qƈ发读写数据库成ؓ瓉?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W二ơ演q:</strong><strong>引入本地~存和分布式~存</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p1.pstatp.com/large/pgc-image/RSQI5TtIa6VPVc" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在Tomcat同服务器上或同JVM中增加本地缓存,q在外部增加分布式缓存,~存热门商品信息或热门商品的html面{。通过~存能把l大多数h在读写数据库前拦截掉Q?em>大大</em>降低数据库压力?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">其中涉及的技术包括:使用memcached作ؓ本地~存Q用Redis作ؓ分布式缓存,q会涉及~存一致性、缓存穿?ȝ、缓存雪崩、热Ҏ(gu)据集中失效等问题?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">~存抗住了大部分的访问请求,随着用户数的增长Qƈ发压力主要落在单机的Tomcat上,响应逐渐变慢?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W三ơ演q:</strong><strong>引入反向代理实现负蝲均衡</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p3.pstatp.com/large/pgc-image/RSQI5U46rS0yEH" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在多台服务器上分别部|TomcatQ用反向代理YӞNginxQ把h均匀分发到每个Tomcat中?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">此处假设Tomcat最多支?00个ƈ发,Nginx最多支?0000个ƈ发,那么理论上Nginx把请求分发到500个Tomcat上,p抗住50000个ƈ发?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">其中涉及的技术包括:Nginx、HAProxyQ两者都是工作在|络W七层的反向代理软gQ主要支持http协议Q还会涉及session׃n、文件上传下载的问题?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">反向代理使应用服务器可支持的q发?em>大大</em>增加Q但q发量的增长也意味着更多hIK到数据库,单机的数据库最l成为瓶颈?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W四ơ演q:</strong><strong>数据库读写分?/strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p1.pstatp.com/large/pgc-image/RSQI5UGC3HaOFm" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">把数据库划分库和写库Q读库可以有多个Q通过同步机制把写库的数据同步到读库,对于需要查询最新写入数据场景,可通过在缓存中多写一份,通过~存获得最新数据?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">其中涉及的技术包括:MycatQ它是数据库中间Ӟ可通过它来l织数据库的分离d和分库分表,客户端通过它来讉K下层数据库,q会涉及数据同步Q数据一致性的问题?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">业务逐渐变多Q不同业务之间的讉K量差距较大,不同业务直接竞争数据库,怺影响性能?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W五ơ演q:数据库按业务分库</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p1.pstatp.com/large/pgc-image/RSQI5Ys1VzwsKT" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">把不同业务的数据保存C同的数据库中Q业务之间的资源竞争降低,对于讉K量大的业务,可以部v更多的服务器来支撑?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">q样同时D跨业务的表无法直接做兌分析Q需要通过其他途径来解冻I但这不是本文讨论的重点,有兴的可以自行搜烦解决Ҏ(gu)?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">随着用户数的增长Q单机的写库会逐渐会达到性能瓉?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W六ơ演q:</strong><strong>把大表拆分ؓ表</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p3.pstatp.com/large/pgc-image/RSQI5Z615L3Uqz" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">比如针对评论数据Q可按照商品IDq行hashQ\由到对应的表中存储;针对支付记录Q可按照时创徏表,每个时表l拆分ؓ表Q用用户ID或记录编h路由数据?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">只要实时操作的表数据量够小Q请求能够够均匀的分发到多台服务器上的小表,那数据库p通过水^扩展的方式来提高性能。其中前面提到的Mycat也支持在大表拆分为小表情况下的访问控制?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">q种做法显著的增加了数据库运l的隑ֺQ对DBA的要求较高。数据库设计到这U结构时Q已l可以称为分布式数据库,但是q只是一个逻辑的数据库整体Q数据库里不同的l成部分是由不同的组件单独来实现的?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">如分库分表的理和请求分发,由Mycat实现QSQL的解析由单机的数据库实现Q读写分d能由|关和消息队列来实现Q查询结果的汇d能由数据库接口层来实现等{,q种架构其实是MPPQ大规模q行处理Q架构的一cd现?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">目前开源和商用都已l有不少MPP数据库,开源中比较行的有Greenplum、TiDB、Postgresql XC、HAWQ{,商用的如南大通用的GBase、睿帆科技的雪球DB、华为的LibrA{等?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">不同的MPP数据库的侧重点也不一P如TiDB更侧重于分布式OLTP场景QGreenplum更侧重于分布式OLAP场景?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">q些MPP数据库基本都提供了类似Postgresql、Oracle、MySQL那样的SQL标准支持能力Q能把一个查询解析ؓ分布式的执行计划分发到每台机器上q行执行Q最l由数据库本w汇L据进行返回?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">也提供了诸如权限理、分库分表、事务、数据副本等能力Qƈ且大多能够支?00个节点以上的集群Q?em>大大</em>降低了数据库q维的成本,q且使数据库也能够实现水qx展?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">数据库和Tomcat都能够水qx展,可支撑的q发大幅提高Q随着用户数的增长Q最l单机的Nginx会成为瓶颈?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W七ơ演q:</strong><strong>使用LVS或F5来多个Nginx负蝲均衡</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p1.pstatp.com/large/pgc-image/RSQI5ZHDxQFS1r" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">׃瓉在NginxQ因此无法通过两层的Nginx来实现多个Nginx的负载均衡?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">图中的LVS和F5是工作在|络W四层的负蝲均衡解决Ҏ(gu)Q其中LVS是YӞq行在操作系l内核态,可对TCPh或更高层U的|络协议q行转发Q因此支持的协议更丰富,q且性能也远高于NginxQ可假设单机的LVS可支持几<em>十万</em>个ƈ发的h转发QF5是一U负载均衡硬Ӟ与LVS提供的能力类|性能比LVS更高Q但h昂贵?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">׃LVS是单机版的YӞ若LVS所在服务器宕机则会D整个后端pȝ都无法访问,因此需要有备用节点。可使用keepalived软g模拟拟IPQ然后把虚拟IPl定到多台LVS服务器上Q浏览器讉K虚拟IPӞ会被路由器重定向到真实的LVS服务器,当主LVS服务器宕机时Qkeepalived软g会自动更新\由器中的路由表,把虚拟IP重定向到另外一台正常的LVS服务器,从而达到LVS服务器高可用的效果?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">此处需要注意的是,上图中从Nginx层到Tomcat层这Lq不代表全部Nginx都{发请求到全部的Tomcat?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在实际用时Q可能会是几个Nginx下面接一部分的TomcatQ这些Nginx之间通过keepalived实现高可用,其他的Nginx接另外的TomcatQ这样可接入的Tomcat数量p成倍的增加?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">׃LVS也是单机的,随着q发数增长到?em>十万</em>ӞLVS服务器最l会辑ֈ瓉Q此时用h辑ֈ千万甚至上亿U别Q用户分布在不同的地区,与服务器机房距离不同Q导致了讉K的gq会明显不同?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W八ơ演q:</strong><strong>通过DNS轮询实现机房间的负蝲均衡</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p9.pstatp.com/large/pgc-image/RSQI5ZS2uQgqcv" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在DNS服务器中可配|一个域名对应多个IP地址Q每个IP地址对应C同的机房里的虚拟IP?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">当用戯?em>www</em>.taobao<em>.com</em>ӞDNS服务器会使用轮询{略或其他策略,来选择某个IP供用戯问。此方式能实现机戉K的负载均衡,xQ系l可做到机房U别的水qx展,千万U到亿的ƈ发量都可通过增加机房来解冻Ipȝ入口处的hq发量不再是问题?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">随着数据的丰富程度和业务的发展,索、分析等需求越来越丰富Q单单依靠数据库无法解决如此丰富的需求?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W九(ji)ơ演q:</strong><strong>引入NoSQL数据库和搜烦引擎{技?/strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p3.pstatp.com/large/pgc-image/RSQI5Zg6I1Hn9B" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">当数据库中的数据多到一定规模时Q数据库׃适用于复杂的查询了,往往只能满普通查询的场景?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">对于l计报表场景Q在数据量大时不一定能跑出l果Q而且在跑复杂查询时会D其他查询变慢Q对于全文检索、可变数据结构等场景Q数据库天生不适用?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">因此需要针对特定的场景Q引入合适的解决Ҏ(gu)。如对于量文g存储Q可通过分布式文件系lHDFS解决Q对于key valuecd的数据,可通过HBase和Redis{方案解冻I对于全文索场景,可通过搜烦引擎如ElasticSearch解决Q对于多l分析场景,可通过Kylin或Druid{方案解冟?/p> <div ap_container"="" style="text-align: center; width: 862px; height: auto; clear: none;"><iframe width="862" height="200" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_5" name="aswift_5" style="max-width: 100%; margin: 0px auto; display: block; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 862px; height: 200px;"></iframe></div> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">当然Q引入更多组件同时会提高pȝ的复杂度Q不同的lg保存的数据需要同步,需要考虑一致性的问题Q需要有更多的运l手D|理q些lg{?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">引入更多lg解决了丰富的需求,业务l度能够极大扩充Q随之而来的是一个应用中包含了太多的业务代码Q业务的升q代变得困难?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W十ơ演q:</strong><strong>大应用拆分ؓ应?/strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p3.pstatp.com/large/pgc-image/RSQI5ja85PZxO1" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">按照业务板块来划分应用代码,使单个应用的职责更清晎ͼ怺之间可以做到独立升q代。这时候应用之间可能会涉及C些公共配|,可以通过分布式配|中心Zookeeper来解冟?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">不同应用之间存在q的模块,由应用单独管理会D相同代码存在多䆾Q导致公共功能升U时全部应用代码都要跟着升?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W十一ơ演q:</strong><strong>复用的功能抽L微服?/strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p1.pstatp.com/large/pgc-image/RSQI5jp81TqVsj" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">如用L理、订单、支付、鉴权等功能在多个应用中都存在,那么可以把这些功能的代码单独抽取出来形成一个单独的服务来管理,q样的服务就是所谓的微服务?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">应用和服务之间通过HTTP、TCP或RPCh{多U方式来讉K公共服务Q每个单独的服务都可以由单独的团队来理。此外,可以通过Dubbo、SpringCloud{框架实现服务治理、限、熔断、降U等功能Q提高服务的E_性和可用性?/p> <div ap_container"="" style="text-align: center; width: 862px; height: auto; clear: none;"><iframe width="862" height="200" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_6" name="aswift_6" style="max-width: 100%; margin: 0px auto; display: block; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 862px; height: 200px;"></iframe></div> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">不同服务的接口访问方式不同,应用代码需要适配多种讉K方式才能使用服务Q此外,应用讉K服务Q服务之间也可能怺讉KQ调用链会变得非常复杂Q逻辑变得混ؕ?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W十二次演进Q?/strong><strong>引入企业服务ȝESB屏蔽服务接口的访问差?/strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p3.pstatp.com/large/pgc-image/RSQI5k1JJ6WBJC" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">通过ESBl一q行讉K协议转换Q应用统一通过ESB来访问后端服务,服务与服务之间也通过ESB来相互调用,以此降低pȝ的耦合E度。这U单个应用拆分ؓ多个应用Q公共服务单独抽取出来来理Qƈ使用企业消息ȝ来解除服务之间耦合问题的架构,是所谓的SOAQ面向服务)架构Q这U架构与微服务架构容易؜淆,因ؓ表现形式十分怼?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">个h理解Q微服务架构更多是指把系l里的公共服务抽取出来单独运l管理的思想Q而SOA架构则是指一U拆分服务ƈ使服务接口访问变得统一的架构思想QSOA架构中包含了微服务的思想?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">业务不断发展Q应用和服务都会不断变多Q应用和服务的部|变得复杂,同一台服务器上部|多个服务还要解册行环境冲H的问题Q此外,对于如大促这c需要动态扩~容的场景,需要水qx展服务的性能Q就需要在新增的服务上准备q行环境Q部|服务等Q运l将变得十分困难?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W十三次演进Q?/strong><strong>引入容器化技术实现运行环境隔M动态服务管?/strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p9.pstatp.com/large/pgc-image/RSQI5kDBnIQByQ" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">目前最行的容器化技术是DockerQ最行的容器管理服务是Kubernetes(K8S)Q应?服务可以打包为Docker镜像Q通过K8S来动态分发和部v镜像?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">Docker镜像可理解ؓ一个能q行你的应用/服务的最的操作pȝQ里面放着应用/服务的运行代码,q行环境Ҏ(gu)实际的需要设|好。把整个“操作pȝ”打包Z个镜像后Q就可以分发到需要部|相x务的机器上,直接启动Docker镜像可以把服务赯v来,使服务的部v和运l变得简单?/p> <div ap_container"="" style="text-align: center; width: 862px; height: auto; clear: none;"><iframe width="862" height="200" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" id="aswift_7" name="aswift_7" style="max-width: 100%; margin: 0px auto; display: block; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 862px; height: 200px;"></iframe></div> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在大促的之前Q可以在现有的机器集上划分出服务器来启动Docker镜像Q增强服务的性能Q大促过后就可以关闭镜像Q对机器上的其他服务不造成影响Q在3.14节之前,服务q行在新增机器上需要修改系l配|来适配服务Q这会导致机器上其他服务需要的q行环境被破坏)?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">使用容器化技术后服务动态扩~容问题得以解决Q但是机器还是需要公司自w来理Q在非大促的时候,q是需要闲|着大量的机器资源来应对大促Q机器自w成本和q维成本都极高,资源利用率低?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>W十四次演进Q?/strong><strong>以云q_承蝲pȝ</strong></p> <figure style="max-width: 100%; margin-bottom: 1em; margin-left: 0px; margin-right: 0px;"><img src="http://p3.pstatp.com/large/pgc-image/RSQI5kOBZT6v6I" alt="淘宝千万Uƈ发分布式架构?4ơ演q? style="height: auto; max-width: 100%; width: auto;" /></figure> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">pȝ可部|到公有云上Q利用公有云的v量机器资源,解决动态硬件资源的问题Q在大促的时间段里,在云q_中时申h多的资源Q结合Docker和K8S来快速部|服务,在大促结束后释放资源Q真正做到按需付费Q资源利用率<em>大大</em>提高Q同?em>大大</em>降低了运l成本?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">所谓的云^収ͼ是把v量机器资源,通过l一的资源管理,抽象Z个资源整体。在之上可按需动态申L件资源(如CPU、内存、网l等Q,q且之上提供通用的操作系l,提供常用的技术组Ӟ如Hadoop技术栈QMPP数据库等Q供用户使用Q甚x供开发好的应用。用户不需要关pd用内部用了什么技术,p够解决需求(如音视频转码服务、邮件服务、个人博客等Q。在云^C会涉及如下几个概念:</p> <ul style="list-style-type: none; margin: 0px 0px 1em; padding: 0px; line-height: 0px;"> <li style="margin: 0px; padding: 0px 0px 0px 9px; line-height: 28px; zoom: 1; background: url("img/bullet1.png") left 0.9em no-repeat;"><strong>IaaSQ?/strong>基础设施x务。对应于上面所说的机器资源l一源整体,可动态申L件资源的层面Q?/li> <li style="margin: 0px; padding: 0px 0px 0px 9px; line-height: 28px; zoom: 1; background: url("img/bullet1.png") left 0.9em no-repeat;"><strong>PaaSQ?/strong>q_x务。对应于上面所说的提供常用的技术组件方便系l的开发和l护Q?/li> <li style="margin: 0px; padding: 0px 0px 0px 9px; line-height: 28px; zoom: 1; background: url("img/bullet1.png") left 0.9em no-repeat;"><strong>SaaSQ?/strong>软gx务。对应于上面所说的提供开发好的应用或服务Q按功能或性能要求付费?/li> </ul> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">xQ以上所提到的从高ƈ发访问问题,到服务的架构和系l实施的层面都有了各自的解决Ҏ(gu)Q但同时也应该意识到Q在上面的介l中Q其实是有意忽略了诸如跨机房数据同步、分布式事务实现{等的实际问题,q些问题以后有机会再拿出来单独讨论?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>四?架构设计ȝ</strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>架构的调整是否必L照上q演变\径进行?</strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">不是的,以上所说的架构演变序只是针对某个侧面q行单独的改q,在实际场景中Q可能同一旉会有几个问题需要解冻I或者可能先辑ֈ瓉的是另外的方面,q时候就应该按照实际问题实际解决?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">如在<em>政府</em>cȝq发量可能不大,但业务可能很丰富的场景,高ƈ发就不是重点解决的问题,此时优先需要的可能会是丰富需求的解决Ҏ(gu)?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>对于要实施的系l,架构应该设计C么程度?</strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">对于单次实施q且性能指标明确的系l,架构设计到能够支持系l的性能指标要求p够了Q但要留有扩展架构的接口以便不备之需。对于不断发展的pȝQ如?sh)商q_Q应设计到能满下一阶段用户量和性能指标要求的程度,q根据业务的增长不断的P代升U架构,以支持更高的q发和更丰富的业务?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>服务端架构和大数据架构有什么区别?</strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">所谓的“大数?#8221;其实是v量数据采集清z{换、数据存储、数据分析、数据服务等场景解决Ҏ(gu)的一个统U?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在每一个场景都包含了多U可选的技术,如数据采集有Flume、Sqoop、Kettle{,数据存储有分布式文gpȝHDFS、FastDFSQNoSQL数据库HBase、MongoDB{,数据分析有Spark技术栈、机器学习算法等?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">ȝ来说大数据架构就是根据业务的需求,整合各种大数据组件组合而成的架构,一般会提供分布式存储、分布式计算、多l分析、数据仓库、机器学习算法等能力。而服务端架构更多指的是应用组l层面的架构Q底层能力往往是由大数据架构来提供?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>有没有一些架构设计的原则Q?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>1QN+1设计</strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">pȝ中的每个lg都应做到没有单点故障?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>2Q回滚设?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">保pȝ可以向前兼容Q在pȝ升时应能有办法回滚版本?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>3Q禁用设?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">应该提供控制具体功能是否可用的配|,在系l出现故障时能够快速下U功能?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>4Q监控设?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">在设计阶D就要考虑监控的手Dc?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>5Q多zL据中心设?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">若系l需要极高的高可用,应考虑在多地实施数据中心进行多z,臛_在一个机房断늚情况下系l依然可?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>6Q采用成熟的技?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">刚开发的或开源的技术往往存在很多隐藏的bugQ出了问题没有商业支持可能会是一个灾难?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>7Q资源隔设?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">应避免单一业务占用全部资源?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>8Q架构应能水qx?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">pȝ只有做到能水qx展,才能有效避免瓉问题</p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>9Q非核心则购?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">非核心功能若需要占用大量的研发资源才能解决Q则考虑购买成熟的品?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>10Q用商用硬?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">商用g能有效降低硬件故障的机率?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>11Q快速P?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">pȝ应该快速开发小功能模块Q尽快上U进行验证,早日发现问题<em>大大</em>降低pȝ交付的风险?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>12Q无状态设?/strong></p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">服务接口应该做成无状态的Q当前接口的讉K不依赖于接口上次讉K的状态?/p> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;">设计到此l束Q其实,解决Ҏ(gu)有很多,但是q个只是我采用的Q觉得最M的一个?/p> <div style="margin-top: 15px; font-style: italic;"> <p style="margin: 0px 0px 1em; padding: 0px; line-height: 35px;"><strong>原创文章Q{载请注明Q?/strong> 转蝲?a style="outline: none; color: #00a19e;">q发~程|?– ifeve.com</a><strong>本文链接地址:</strong> <a style="outline: none; color: #00a19e;">淘宝千万Uƈ发分布式架构?4ơ演q?/a></p> </div><img src ="http://www.aygfsteel.com/paulwong/aggbug/434451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/paulwong/" target="_blank">paulwong</a> 2019-08-16 10:05 <a href="http://www.aygfsteel.com/paulwong/archive/2019/08/16/434451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">û</a>| <a href="http://" target="_blank">¡Ң</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">°Ͷ</a>| <a href="http://" target="_blank">˰</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">կ</a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ʊ</a>| <a href="http://" target="_blank">г</a>| <a href="http://" target="_blank">ī񹤿</a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">²</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Ȩ</a>| <a href="http://" target="_blank">˼é</a>| <a href="http://" target="_blank">ǭ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>