高端响应式模板免费下载

响应式网页设计、开放源代码、永久使用、不限域名、不限使用次数

什么是响应式网页设计?

bgp多线建设(精选)8篇

2024年bgp多线建设 篇1

“我是哟哟吼说科技,专注于数据网络的回答,欢迎大家与我交流数据网络的问题”BGP(边界网关协议)是基于TCP协议上的一种自治系统的路由协议,主要功能是不同自治系统之间进行网络路由信息的交换。

如题,何为BGP机房呢?简单来说,BGP机房就是通过BGP技术而建立的机房,该机房内服务器的上下行路由都可以选择最优的路径,真正实现单IP地址的高速访问,另外BGP有消除环路、冗余备份的特点,当某条线路出现问题时会及时切换到其它正常的线路上,不会影响业务的正常运行。

国内的运营商和一些规模较大的IDC运营商都会建立自己的机房,并且各个机房都拥有唯一的AS号,像电信、联通等各大运营商的机房很有多,而国内互联网之所以能通信就是各个机房通过BGP技术进行互联,通过路由信息的交换,从而达到运营商之间互联互通的效果。而BGP机房即是将电信、联通、移动等运营商的线路接入到同一个机房内,通过BGP互联的技术进行融合,到达不论用哪个运营商的资源都可以访问该机房内的所有服务器,有效的解决运营商之间互联互通的瓶颈问题。

建立BGP机房有何优点呢?

1、BGP协议具有很强的拓展性,可以将IDC网络与各个运营商之间进行互联,到达任何资源网络都可以访问该机房内的内容。

2、BGP协议具有冗余备份、消除环路的特点,可以达到多条线路相互备份的效果,有效的避免因环路而造成网络的中断。

3、单IP即可访问该机房内的资源,服务器的上下行路由可以选择最有的路径,提升了网络的体验效果。

欢迎大家多多关注我,在下方评论区说出自己的见解。

2024年bgp多线建设 篇2

网站建设后,空间的选择是非常重要的一部分,好的空间,合理的空间,是能给以后网站的访问、维护、安全等带来很多方便的!因此选择空间的时候,一定要长远考虑、从企业本身的价值来考虑、选择好国内服务器、或者知名IDC公司是很有重要意义的!

1、服务器的选择第一要素是要考虑速度这块、这是最主要的,速度越稳定,安全性跟质量越好。现在的国内服务器一般分虚拟的、单独服务器、线程也分双线、BGP多线、单线等!相对其它服务、单IP的解决方案会好些,还要选择带宽充足,网络更稳定的!能够每天定时数据备份,保证数据安全是最好的!

2、根据自身的要求以及自身的实力选择服务器的大小、线程等,具体可以看网站程序的大小,一般企业型标准配1G空间容量、大小可以考虑网站后期更新这块是否多?服务器升级是否方便、还有备案这块是否麻烦不!

3、空间确定后,要看服务器商售后这块是否反应迅速、因为网站有时是会出现打不开、断网等现象的,需要第一时间解决的,所以要跟服务商迅速做出反应处理!

4、空间商提供服务器后,服务器里的各种功能插件是否可以满足、防火墙、安全性能、系统语方等是否可以满足你网站的需求!

总之,考虑空间就是要从安全、速度、价格等方便考虑!

2024年bgp多线建设 篇3

香港服务器中的BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由,主要IDC运营商都具有AS号,全国各大网络运营商多数都是通过BGP协议与自身的AS号来实现多线互 联的。使用BGP协议互联后,网络运商的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证不同网络运营商用户的高速访问。

香港服务器中BGP多线的优点:

1.香港服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会占用服务器的任何系统资源。服务器的上行路由与下行路由都能选择最优的路径,所以能真正实现高速的单IP高速访问。2.由于香港服务器中BGP协议本身具有冗余备份、消除环路的特点,所以当IDC服务商有多条BGP互联线路时可以实现路由的相互备份,在一条线路出现故障时路由会自动切换到其它线路。3.有用的香港服务器BGP协议还可以使网络具有很强的扩展性可以将IDC网络与其他运营商互联,轻松实现单IP多线路,做到所有互联运营商的用户访问都很快。这个是双IP双线无法比拟。

香港服务器中BGP多线技术:

香港服务器中的BGP是自治系统间的路由协议,它的主要功能是和其他BGP说话者之间交换网络可达性信息。一个BGP说话者是任何为BGP配置的设备。BGP使用TCP作为它的传输协议(端口179),这提供了可靠的数据传输。两个香港服务器BGP路由器形成了一个传输协议的连接。这两个路由器被称为邻居或者对等体。一旦传输连接形成,两对路由器交换报文以开放并确认连接参数。在这一步,路由器交换BGP版本号、AS号、持续时间、BGP标识和其他可选参数等信息。如果对等体间有任何一个参数不一致,就会有差错通知发送,这个对等体连接就不会建立。如果对等路由器都同意这些参数,则整个BGP路由表通过UPDATE报文进行交换。UPDATE报文包含了经过每个系统的可达目的地的列表(即网络层可达性信息NLRI)以及每个路由的路径属性。路径属性包含了诸如路由源(ORIGIN)之类的信息和优先权的高低。BGP表在BGP连接的过程中对每个对等体都是有效的。如果有路由报文发生了变化,邻居路由器使用增量的更新(报文)来传递这个信息。BGP并不要求刷新路由信息。如果没有路由变化产生,BGP对等体仅交换保留(keepalive)报文,keepalive报文被周期性地发送以确保连接是保持有效的。

BGP机房优势分析

BGP机房就是服务器租用商通过技术的手段,实际不同运营商能共同访问一个IP,并且不同运营商之间都能达到最快的接入速度的相关网络技术。香港BGP机房在一定程度上解决了各用户南北互通的问题,提高了用户的访问速度,用BGP协议实现的单IP双线路的效果。该方案就是通过BGP协议,直接将其中一条线路的IP映射另外一条线路IP上,当访客浏览你的网站时,会自动根据实际情况选择访问速度最快的线路,这样各个运营商的用户都能达到最佳的访问速度。1.租用的服务器只有一个IP,用户的访问路线是由路由器根据访客的实际访问速度选择最优访问路径,来选择访问的。而且不占用任何的服务器资源。服务器的上行和下行都是有路由器来选择最佳的路线,所以这样能够真正的做到各运营商之间都达到最佳的访问速度实现真正的BGP效果。2.由于BGP协议本身具有冗余备份、消除环路的特点,所以当你托管或者租用的服务器出现故障时,能实现互相备份。同时自动切换到其它线路去,并且不影响正常访问。3.BGP服务器租用还有较好的拓展性和融合性,可以实现和其它运营商互联互通,轻松实现单IP多线路,做到所有互联运营商的用户访问都很快。这是双IP双线服务器租用所不能实现的。

2024年bgp多线建设 篇4

大家都知道BGP高防是DDOS流量攻击的首选防御之一,那么BGP高防到底是什么?有什么优势呢?今天小编给大家讲一下。

什么是BGP高防?

BGP全称是Border Gateway Protocol,即边界网关协议,是用来连接Internet上的独立系统的路由选择协议。BGP主要用于互联网AS(自治系统)之间的互联,它的最主要功能在于控制路由的传播以及选择最好的路由。

BGP高防的原理是什么?

BGP高防的原理是通过把域名解析到高防IP,并配置源站IP,所有公网流量都必须经过高防IP机房,通过端口协议转发的方式将访问流量通过高防IP转发到源站IP,同时将恶意攻击流量在高防IP上进行清洗过滤后将正常流量返回给源站IP,从而确保源站IP稳定访问。

BGP线路有哪些优势?

1. 能够消除南北访问障碍

BGP可以将联通、电信、移动等运营商的线路“合并”,使得中国南北通讯无障碍。对接入层来说,可使“联通、电信”这类分别消失,更能使一个网站资源无限制的在全国范围内无障碍访问,而不需要在异地部署VPN或者异地加速站来实现异地无障碍访问。

2. 能够高速互联互通

实现BGP以后就像进入了高速公路,而原来一条线路访问另一线路往往要经过很多层路由。原来带宽的利用率一般在40%左右,实现BGP后能达到80%以上。所以,原本10M独享带宽的速度,通过BGP只需要5M就可以满足,不仅大大提升了效率,还能节省不少成本。

防御DDoS选择BGP高防还是CDN高防?

CDN防御必须通过修改DNS实现,而DNS配置的生效时间不可控,而流量转发会存在一定延迟,可能还会受到用户Local DNS的影响,所以会导致访问过慢或找不到资源的情况出现,稳定性难以保障。

而BGP高防不仅拥有CDN的内容分发以及隐藏网站源IP功能,又能实现单IP多线接入,多线路高速互联互通、冗余备份、消除环路。

所以,虽然CDN高防对于防御DDoS攻击也有很多优势,但小墨还是建议大家想要更安全的话,还是首选BGP高防。

关于BGP高防的介绍就是这些啦,希望对于大家选择高防服务有所帮助。最后强调一下:市场上有些高防服务商虚报防御能力,且不支持个性化定制,即使接入,仍有可能会被DDoS攻击。所以大家选择高防服务商时,一定要选择专业、靠谱的服务商,如墨者盾高防,其防御能力强,线路稳定,能有效防御DDoS攻击,帮助企业避免不必要的网络风险。

2024年bgp多线建设 篇5

bgp服务器简单理解就是服务器数据中心有双线或者多线路的机房。这个技术解决了南北网络互通互联的问题,解决了网络延迟情况。以锐讯网络的机房为例,说明一下BGP优势。

1.IP地址少

  BGP服务器租用仅需一个IP地址就可以管理不同网络线路。动态IP可以根据用户使用的带宽线路,自动切换到服务器线路中与之相匹配的带宽,在有效的解决不同运营商带宽延迟问题以外,也节约了IP成本。用户无需购买其他的IP,一个bgp动态IP就可以管理网络。

  2.冗余备份特色

  BGP服务器是具备冗余备份特点的。服务器如果由于故障无法使用,也是可以借助备份的功能自动切换到其他线路进行访问。进而保障了服务器的稳定运行。服务器使用企业无需担心服务器无法正常工作。

  3.服务器扩展性强

  BGP服务器是可以轻松、快速的与其他运营商进行链接,且运行时候,访问速度都会非常的快速,达到了单IP多线路的运行。都可以根据实际情况,选择最优的访问线路。

  BGP服务器租用在一定程度上提高了客户访问的速度,为用户提供了流程的网络环境,更是为企业开展业务提供了基础保障。

2024年bgp多线建设 篇6

2016年12月12日,让人们第一时间联想到的是淘宝双12“亲亲节”。而这一天对于云梦网络而言,同样意义非凡,一场属于中国建站行业的革命正在悄悄开启。

就在这一天,云梦网络宣布将与

阿里云深度合作的建站服务【云·企业官网】升级到5.0版本,大胆颠覆自己的同时,再一次引领建站行业新模式。

目前,在国内应用

云计算为客户提供网站建设服务的互联网公司日趋增多,但大都只是用一台云服务器或云空间替代过去的虚拟主机,而将网站整体架构通过分布式调整分别放到各种云资源上,并将设计与服务的全部流程也搬到云上的,可谓绝无仅有。【

云·企业官网5.0】的出现,宣告中国建站行业正式进入真正的云计算时代。

云梦网络是如何把上述这一切变为现实的呢?接下来让我们一探究竟。

【真正的云计算网站建设服务—云·架构】

一家企业的官网在通常情况下采用虚拟主机,哪怕是独立的云服务器,也无法面面俱到,网站访问速度、网站安全、网站稳定性等问题逐渐暴露出来。这就像一台小型发电机是无法和国家电网相比,为用户提供稳定而高效的用电服务一样。如何给网站的访客提供快速稳定的浏览体验与服务变成一个亟待解决的难题。

云梦网络完整应用阿里云计算,突破性地将多台高配置云服务器(ECS)通过负载均衡(SLB)组成集群,作为SaaS主服务器,并将云数据库(RDS)、云存储(

OSS)、云加速(CDN)以及云盾在内的云计算资源组合运用,构建成完整的云计算资源池。

访客在访问网站时,只有页面.html文件存储在独立的云空间上,而高质量图片等大文件则放置在云存储(OSS)中,并通过云加速(CDN)实现毫秒级超快访问。

(云·企业官网系列产品之云计算架构图)

【云·企业官网5.0】的云架构,源于云梦人对云计算不断地追求与探索,而其中奥妙相信也是所有人关心和好奇的问题,本文将一一告诉大家答案。

如何实现让客户的网站性能卓越?

云梦

网络应用云服务器ECS,构建集群架构,并部署于北京、杭州、香港及美国4大BGP多线骨干节点机房,解决了南北互通和海外访问难题,对比传统物理服务器的架构方案,性能提升15倍,帮助客户把使用成本降低超过90%。

如何实现让客户的网站表现稳定?

云梦网络应用阿里云SLB负载均衡服务,智能调度ECS集群,使得网站流量分配更均匀,消除单点故障的同时,有效帮助客户的网站轻松应对高峰期的海量访问。

如何实现让客户的网站运转更加高效?

云梦网络应用云数据库RDS,基于阿里云飞天分布式系统和全SSD盘高性能存储,将链接等结构化数据存储其中,实现对网站业务数据的高效存取。同时,RDS的安全访问机制极大程度上保证了数据可靠性。

如何实现让客户的网站数据更加安全?

云梦网络应用阿里云OSS服务,帮助客户将网站中高质量的图片、文字,脚本,视频等资源存储其中,并提供多层安全防护和自动多重冗余备份,存储安全性不低于99.99999999%。

如何实现让客户的网站全球快速访问?

云梦网络选用国内最好的网络加速服务—阿里云CDN服务,无缝配合对象存储 OSS使用,国内 500+ 节点,海外 30+ 节点,部署在全球30多个国家和地区,帮助客户将网站内容分发至上述节点,同时单节点带宽可达40Gbps+,遵循就近访问原则,让网站实现全球极速访问。

如何实现让客户的网站远离网络病毒与攻击?

云梦网络应用保护全国35%网站的阿里云云盾服务,淘宝、支付宝亦是如此。每天可帮助客户网站抵御2000次以上的DDoS攻击,同时有效防御黑客入侵,全面保证客户网站及业务正常运转。

【真正的云计算网站建设服务—云·服务】

网站设计制作与服务,全程“在线”

传统模式:设计师先在线下完成首页样稿设计,客户反馈意见,然后设计师继续在线下进行修改,交由客户最终确认后,再返回线上进行网站制作,过程反复,且沟通成本极高。而【云·企业官网5.0】全新的流程:客户在线提交网站所需内容与材料,设计师收到后在线进行设计制作,完全放弃掉线下制作部分。所有流程全部“在线”看似简单,但恰恰是云计算网站建设服务的真谛,这一切都为了设计师“在线”工作更加得流畅,同时让客户“在线”享受更加完美的建站服务。

“先做网站原型(UE),再做网站设计(UI)”,流程大革命

云梦网络不仅把设计与服务全程“在线”变为现实,更是基于云计算对原有标准化流程进行了颠覆与改造。谈到标准化流程,全新的【云·企业官网5.0】又是什么样的呢?

揭晓答案之前,让我们先把时钟拨回到2006年。国内首款智能网站建设软件产品【超级站车】的出现,让人们眼前一亮。与传统代码建站不同,【超级站车】完全可视化,并可完成简单拖拽、布局以及有限自定义,直接把“网站程序开发——数据库对接——ftp上传”这一系列需要技术人员才能实现的复杂操作通过系统得以实现,而超级站车系统的开发商狼烟网络也是凭借这一款产品被中国万网并购。而现任云梦公司总裁陈振东在当年加入狼烟公司之前,【超级站车】仅提供模板,并没有设计师使用这个产品为客户提供专业的网站建设服务。陈振东在此基础上,创造了“网站样稿设计——框架搭建——内容添加——整站确认”,这个只需要一个设计师就可提供建站服务的流程,在当时可谓是革命性的突破。直到后来【云梦微站】的诞生,“做网站就像做PPT一样简单”这句经典slogan成为现实的时候,业内大多数设计师都可以使用【云梦微站】加上“网站样稿设计——框架搭建——内容添加——整站确认”模式,娴熟地为客户搭建精美的网站。至此,历经近10年的发展,这个建站模式早已成为网站建设的标准化流程。

时至今日,企业客户对于软件、网站、甚至是云计算的了解与认知远超10年之前,同时随着【云梦微站】控件与功能的不断完善与强大,这个沿用了近10年的老标准、老流程在云梦人看来需要顺应时代做出改变了。设计,从UE到UI,其实是软件开发的通行思路,而云梦网络巧妙把这个思路引入到网站建设当中,就像我们平常制作PPT的方式,先根据思路把各个页面和内容整理好,然后再进行排版,内容,字体等等一系列的调整、修正和美化。于是乎“先做网站原型(UE),再做网站设计(UI)”的全新流程应酝而生。

5.0的全新流程下,建站仅需5步:第一步,客户准备好网站内容和基本素材;第二步,设计师收到后根据客户需求将包括导航,banner,新闻,产品,联系我们…...等全部内容使用【云梦微站】在线制作出来,这个过程就是网站原型的制作;第三步,设计师针对网站原型的首页进行美化设计;第四步,设计师进行内页的调整和美化;第五步,客户整体确认后,完成网站上线。从网站开始设计到上线,客户随时打开临时域名访问即可查看实际效果,如有需要改动的地方,只需打个电话给设计师,设计师修改,用户刷新就可看到效果,实时呈现。网站原型从零开始,再到美化,再到细节修饰,整个网站逐渐变得美观,是从丑到美的过程,是客户与设计师共同完成的杰作。

【结束语】

【云·企业官网5.0】的诞生,使得云梦网络可以将真正的云计算建站服务带给每一位客户。与此同时,5.0的全新流程,是建站行业一次崭新的革命,更是云计算时代的大势所趋。正如滴滴打车的出现颠覆了人们的出行方式,让社会资源分配更加合理,而云梦网络就是要不断颠覆、创新建站模式与流程,借助云计算的翅膀,彻底打破技术门槛,同时将整套产品和流程体系面向所有建站服务公司开放,让更多中小企业都能轻松拥有自己的官网,享受云计算之美。

运营人员: 冯玉鹏 MZ014

2024年bgp多线建设 篇7

BGP机房指的是多线机房,电信 移动 网通等,解决不同运营商间互联互通问题

2024年bgp多线建设 篇8

职场新兵的指南:关于高可用系统建设的一些思考

在参与公司几个多数据中心项目的容灾架构设计后,积累了一些高可用和多数据中心容灾的一些思考,希望总结和分享出来和大家一起学习。可用性衡量指标

我们做软件系统核心是服务于业务,构建高可用系统本质也是为了让业务的服务质量提供,因为在构建高可用系统之前,我们需要根据业务特性确认我们系统需要怎么样的高可用级别,也就是需要一个指标度量我们系统的可用性。

可用性度量的指标有以下几个:MTBF(Mean Time Between Failure),平均故障间隔,代表两次故障的间隔时间,也就是系统正常运转的平均时间。这个时间越长,系统稳定性越高。MTTR(Mean Time To Repair),故障的平均恢复时间,也叫平均故障时间。这个值越小,故障对于用户的影响越小。

但 MTBF 和 MTTR 这两个指标中的故障不仅仅是IT系统宕机故障,也包括了性能问题和人为的错误。甚至USITS一项关于大型互联网服务的研究发现,运维配置错误是导致服务中断的首要原因,而硬件故障(服务器或网络)仅导致了 10-25% 的服务中断,但如何避免人为错误并不在今天的讨论当中。

所以,在针对数据中心的容灾,我们可能用到更多地是RTO和RPO这两个指标:RTO(Recovery Time Object),恢复时间目标,RTO是反映数据中心业务恢复的及时性指标。RPO(Recovery Point Objective),复原点目标,指数据中心能容忍的最大数据丢失量,是指当业务恢复后,恢复得来的数据所对应时间点,RPO取决于数据中心数据恢复到怎样的更新程度,反映数据中心恢复数据完整性的指标。

一般我们对现有系统做可用性改造时,可以先看看现有系统的基准值是多少,然后根据业务目标,确定要提升到多少来改善。高可用改造层级

在和业务确定好可用指标后,接下来就需要对系统做高可用改造,从容灾级别可以分为三个层面:基于Region(地理区域)的高可用架构同城多Zone的高可用架构单Zone多实例的的高可用架构

注:这里Region表示地区,一般是指行政单元比如地级市,Zone表示可用区,指电力和网络相互独立的物理区域

从软件架构的角度来看,针对可用性改造可以分为四个部分:DNS服务负载均衡(LB)应用服务数据库/中间件

其中,DNS服务和负载均衡都是无状态的,数据库和中间件则是有状态的,而应用服务根据业务逻辑不同可能是无状态也可能是有状态的。单机房多实例的的高可用架构

这种架构是最简单的,一般这种架构只有一个LB网关,通过LB转发到下游的应用服务,应用服务可以通过服务发现的方式做成多副本从而实现多活,比如可以用k8s部署应用服务,配合存活探针检查和k8s的service服务发现,可以轻松实现无状态应用的多活。如果你的服务不基于k8s部署,也可以基于微服务框架部署在多台主机上实现应用多活,只要实现服务发现、存活探针检查和自动的流量切换就可以了。

但对于有状态的,比如数据库和中间件,仅仅依赖服务发现和流量切换并不能解决问题,因为数据在多副本之间需要做同步。因此针对数据库或中间件的高可用方案基本都是需要专门设计,因为除了流量切换还要解决数据同步问题。这部分在后面数据库和中间件高可用解决方案在单独展开。同城多机房的高可用架构

同城多机房(多AZ)容灾一般通过 BGP 实现单IP多线网络,然后机房之间通过专线相互打通物理网络,当出口流量出现故障时,可以通过 BGP 在路由层切换报文转发表来实现线路切换。架构图如下:

在数据链路正常的情况下,机房1,2会分别向路由宣告自己的路由表:机房1:地域AS -> 运营商AS -> 机房1 AS机房2:地域AS -> 运营商AS -> 机房2 AS

在机房1出现故障和运营商边缘(接入)路由器断开的时候,机房2会向运营商AS宣告连接机房1的最短路径从而让流量转发给自己:地域AS -> 运营商AS -> 机房2 AS -> 机房1 AS

如果对路由器BGP协议不是很了解的可以参考BGP的wiki基于地理区域的高可用架构

如果我们要做基于地理区域级别的高可用,那么我们需要DNS智能路由和跨地域的云连接。DNS智能路由

DNS服务结合存活探测可以实现跨地域流量切换。当存活探测发现后端 LB 不可用的时候,可以直接修改DNS解析,使其失效。但需要注意 DNS 协议切换一些延迟,生效时间在15分钟~30分钟(RTO),因此 DNS 一般只用于跨地域的 LB 的高可用,只有当整个地区的 LB 不可用的时候才会被启用。

我们知道跨地域的故障可以根据智能DNS协议来切换流量到不同的LB中,那么DNS服务本身是如何做高可用的呢?DNS 服务做高可用一般是基于 Anycast 和路由协议来实现,比如 BGP 或 OSPF。和同城多机房的高可用架构一样,通过路由协议实现单IP多线的网络架构来实现容灾切换。Anycast 网络允许网络上的多台服务器使用相同的 IP 地址或一组 IP 地址, 通过 BGP 的路径选择算法改变路由的选择,从而使失效的DNS服务器节点下线,或者实现智能路由。不过 DNS 服务做了高可用并不一定就万无一失了,2021年10月4日的 facebook 全球死机事件就是 BGP 配置错误导致了 facebooK 的 DNS 全部失效了。所以,像开头说的,高可用系统架构只是解决了系统硬件故障,但人为配置错误并不能避免。云连接

跨地域的云连接可以是基于骨干网的专线,也可以是VPN。通过云连接将处在不同地域的子网连接起来构造一个互联互通的企业网。专线相比VPN网络传输会更稳定些,安全性更高,但价格也会更贵,成本更高。数据库及中间件的高可用方案

数据库和中间件的容灾是一种典型的有状态服务应用的场景,其核心是数据复制和同步。前面说到的两个指标 RTO 和 RPO 就是围绕数据容灾来描述的,如果我们是双活架构那么RTO就是0,如果是主备那么RTO就是主备切换所需的时间;如何我们的数据复制采用完全同步的方式,RPO就是0,如果采用异步复制,那么RPO就是数据复制之间的时间差,如果是快照,那么RPO就是快照产生备份数据和。

数据复制

数据复制按照leader可以分为三种:单领导者(single leader,单主),多领导者(multi leader,多主) 和 无领导者(leaderless,无主)。单主和多主都属于主从架构,从节点通过复制主节点的日志或变更流(change stream)来同步数据,但在使用场景上两者存在比较大的不同,多主架构一般被用于地理位置上的多数据中心的容灾和就近服务,而单主架构一般用于单数据中心,因为多主架构给整个系统带来的复杂度是很高的,我们需要处理数据冲突,这会给整个系统带来复杂性并降低性能。架构设计核心是要解决问题,因此本质上是一种取舍和balance,在架构设计的时候要视业务和场景而定。单主架构

单主架构就是我们常说的主从架构,是分布式架构中最简单的架构,只在 leader 节点做读写操作,follower 节点提供读操作。从库复制主库通常通过变更日志实现,这种变更日志既可以是预写日志(WAL),也可以是复制逻辑日志。常用的数据库的数据复制:Kafka的kafaka MirrorMarkerMySQL的 binlog 主从复制PostgreSQL的 WAL 主从复制多主架构

多主架构在主从数据同步逻辑上和单主架构是一样的,区别核心在多个主节点写入数据的时候如何进行数据同步。一般引入多主架构其中一个原因是解决跨地域数据同步问题,比如在单主架构下,一个在广州的用户在写入数据需要需要传输到北京的主节点上,那么性能就会比较差了。另一个原因则是多主的故障容忍要大于主从,比如在两个主节点的情况下,其中一个节点出故障的时候另一个节点并不会受到影响,只会影响一半的用户,而主从架构在从节点切换完成之前是全用户故障的。我们可以先从最简单的,两个主节点来讨论。在双主的结构下,核心要解决的就是写入的时候的数据冲突问题,如下图所示:

在解决数据冲突的时候通常会采用以下的一些办法:最简单的方式就是采用同步的方式写入数据,即数据写入成功需要等待其他主库解决冲突之后,这样就将多个主库写入变成串行执行了,也就失去了多主库的核心。通过分库的方式来避免冲突,比如请求通过统一的路由让a用户数据都读写在A库中,而b类数据读写在B库,其实这样本质类似于将数据库以多分区的形式存放在多个地区,只是a库会通过数据复制在同步到b库。只保证所有副本最终一致性,通过全局唯一ID或全局时钟确定最后更新的数据才写入。但是这种方法在异步的情况下会导致一部分中间数据丢失。

除了要解决数据冲突,多主在数据复制的时候还需要解决节点复制传播的顺序,也就是复制拓扑(replication topology)。对于多主复制,常见的复制拓扑主要有三种:环型拓扑架构(circular topology),即一个数据节点将数据复制给相邻的节点,依次循环一周。星型拓扑架构(star topology),所有节点围绕着一个中心节点进行数据复制和交互。全拓扑架构(all-to-all topology),即所有节点相互之间都会进行数据的复制和交互,常见的比如 gossip 协议。

在多个主节点进行数据复制和传播的时候,由于会经过多个节点,节点之间需要识别携带其他节点的变更信息,比如每个节点添加有一个唯一ID标识其已经过的节点,这样才不会造成无休止的死循环无休止的传播。无主架构

在无主架构中每个节点都可以对外提供服务,从设计理念上可以看出无主架构天生就是为可用性而生,不过知道CAP理论的都知道,可用性和一致性不能兼得,无主架构是个典型的AP模型,其牺牲了强一致性用最终一致性代替。无主架构中最出名的是 AWS 的 Dynamo,像 Cassandra 这种采用和他类似的无主架构的都被成为类Dynamo。Dynamo 采用Gossip协议来做复制数据,任何一个节点收到数据后会向其他节点异步地复制数据。那么 Dynamo 是怎么保证数据最终一致性的呢?Dynamo 使用 W + R > N 这个公式保证,R代表最少读取的节点个数,W代表最少写入的节点个数,N为数据副本数,这里的副本数并不是实际的物理节点,因为 Dynamo 使用的一致性 hash。

比如N有3个节点,R是2,W也是2,那么客户端向集群写入数据的时候只有在2个节点写入成功后才会返回给客户端,这个过程是同步的,剩下的两个节点则是异步的,在读数据的时候,必须读到2个节点,并取2个中最新的数据,可以看出这样肯定可以读到最新的数据。

当出现数据冲突的时候 Dynamo 通过引入向量时钟解决数据冲突:

向量时钟通过带上其他节点的向量时钟来确定偏序关系,按图上例子三个节点P0,P1,P2,初始三个节点都是(0,0,0)首先,P0写入在 a 写入数据,P0 的向量时钟为(1,0,0)当P0把时钟信息传播到 P1 的时候,对应的是时间点 b,P1 的向量时钟是(1,1,0),这时候 P1 节点如果有个c写入,那么他的向量时钟是(1,2,0),c的向量时钟里面的元素均大于等于 a,所以我们可以知道 c 时刻大于 a。这时候 P1 把时钟信息传播 d,向量时钟是(1,2,1),写入数据 e 的数据时钟是(1,2,2),这个信息传回 P0 后变成 g 时刻,向量时钟是(3,2,2)

在这里我们可以看到,a -> b -> c -> d -> e -> g 这个逻辑顺序是成立的,而在向量时钟上表现就是后一个所有元素都大于或等于前一个时间点。但 f 和 c, e 的先后顺序关系是不确定的,在没有全局时钟的情况下你并不能知道谁先谁后,而在向量时钟上表现就是 f 不是所有元素都大于等于 c 或 e。因此,其实向量时钟表示为:

if V(a) > V(b) then a -> b

V(a) > V(b), 表示a向量的所有坐标元素大于b向量的所有对应坐标的元素,a->b 表示 a 到 b 存在事件顺序。

向量时钟只能解决最终一致性(收敛)问题,如果数据在达成最终一致性之前产生版本冲突,Dynamo 会将冲突版本返回给客户端,由业务自行判断。除了交由客户端判断,我们也可以采用“最后写入胜利(LWW, last write wins)”的策略,在数据生成的时候通过带上时间戳,最后比较两个版本的时间戳谁新以谁为准。

Dynamo 检测数据不一致用的 MerkleTree,MerkleTree 是通过一个 hash 树来计算每部分的数据,父节点是子节点数据的 hash,只要有一块数据变动了,最上层的根节点的hash就会改变,然后可以通过逐层递归的方式找到目标节点,查询时间复杂度是o(log(n)),如下图:

更多详细的 Dynamo 可以参考原论文,这是国外老哥的一篇论文笔记:

数据复制的几种方式

前面说了数据复制的几种架构,那么具体数据复制的形式有哪些呢?这里根据数据库复制数据的主体不同分为四类:基于语句(statement)的数据复制基于逻辑日志(行)的数据复制基于预写日志(WAL)的数据复制基于触发器的复制

基于语句复制直接基于数据库的语句进行复制,MySQL 5.1 版本前都是基于语句进行复制,基于语句的主从复制下 MySQL 会将 SQL 变更语句写入 binlog 中,然后同步给从节点让其更新,基于语句的复制主要简单,而且传输数据量少,但其可能会存在不安全语句,而且每次更新都只能串行,特别是某些语句比如 INSERT ... SELECT 会因为锁比行复制慢更多。PostgreSQL 的 pgpool-II 也是一种基于语句复制工具,但其本身相当于数据库的 Proxy,而不是数据库自身提供的CDC。

复制逻辑日志(行)逻辑日志是针对语句复制提出来的,因为基于statement的复制存在诸多问题,比如事务没办法并行复制,只有等待一个commit才能复制另一个,性能差。因此另一种,是以行为颗粒度基于逻辑日志的数据方式,经典代表就是 MySQL的binlog(row)格式。其对数据库表的写入记录:对于插入的行,日志包含所有列的新值。对于删除的行,日志包含足够的信息来唯一标识被删除的行,这通常是主键,但如果表上没有主键,则需要记录所有列的旧值。对于更新的行,日志包含足够的信息来唯一标识被更新的行,以及所有列的新值(或至少所有已更改的列的新值)。

复制预写日志(WAL)很多数据库在写数据的时候为了磁盘顺序读写优化和事务性会引入预写日志(write ahead logs,WAL),因此一些数据同步方案会尝试利用 wal 特性来做数据复制和同步。比如 PostgreSQL 9.0之后的 PITR(Point in Time Recovery) 就是基于 WAL 做主从复制。 PostgreSQL 的预写日志复制传输提供两种:存档式(archive)和流式(streaming)。存档式就是等一个WAL文件写完后,再拷贝从节点;流式则是写完一条WAL记录就通过TCP直接传给从节点。存档式存在数据延迟较大,流式则再主节点崩溃时从节点存在丢失数据的可能。

PostgreSQL Archive Replication

PostgreSQL Streaming Replication

基于触发器的复制

上面讲的那些复制方式都是数据库系统提供的,比如基于语句和逻辑日志的复制是在数据库的 server 计算层来做,预写日志(WAL)则是在存储层做,而触发器是数据库系统系统的将自定义的程序注册进数据库让其在数据变更时自动触发。由于是由外部程序对变更进行捕捉,因此他的灵活性是最高的,像多主复制的冲突解决方案大部分都是基于触发器实现,比如 PostgreSQL 的 bucardo 就是基于 pg 的触发器来做多主的数据复制。

小结

整篇小作文洋洋洒洒写了近一万字,从系统架构、各层级组件的高可用到数据复制拓扑,希望可以给大家一个相对比较完整的视角去认识高可用系统的建设。

参考文献BGP协议2021年Facebook死机事件Designing Data-Intensive Application

猜你喜欢