Java程序员——互联网高可用性体系结构技术的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com

一、什么是高可用Java程序员——互联网高可用性体系结构技能的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com

高可用HA(High Availability)是分布式体系架构规划中有必要考虑的要素之一,它通常是指,经过规划削减体系不能供给服务的时刻

假定体系一向能够供给服务,咱们说体系的可用网游之淫贼性是100%。假如体系每运转100个时刻单位,会有1个时刻单位无法供给服务,咱们说体系的可用性是99%。许多公司的高可用方针是4个9,也便是99.9个人年终总结9%,这就意味着,体系的年停机时刻为8.76个小时。

百度的查找主页,是业界公认高可用确保十分超卓的体系,乃至人们会经过www.baidu.com能不能拜访来判别“网络的连通性”,百度高可用的服务让人留下啦“网络晓畅,百度就能拜访”,“百度打不开,应该是网络连不上”的形象,这其实是对百度HA最高的奖励。

二、怎么确保体系的高可用

咱们都知道,单点是体系高可用的大敌,单点往往是体系高可用最大的危险和敌人,应该尽量在体系规划的进程中防止单点。方法论上,高可用确保的原则是“集群化”,或许叫“冗余”:只要一个单点,挂了服务会受影响;假如有冗余备份,挂了还有其他backup能够顶上。

确保体系高可用,架构规划的中心准则是:冗余。有了冗余之后,还不行,每次呈现毛病需求人工介入康复势必会添加国王游戏体系的不行服务实践。所以,又往往是经过“主动毛病搬运”来完结体系的高可用。接下来咱们看下典型互联网架构中,怎么经过冗余+主动毛病搬运来确保体系的高可用特性。

三、常见的互联网分层架构

常见互联网分布式架构如上,分为:

  • (1)客户端层:典型调用方是浏览器browser马油或许手机运用APP
  • (2)反向署理层:体系进口,反向署理
  • (3)站点运用Java程序员——互联网高可用性体系结构技能的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com 层:完结中心运用逻辑,回来html或许json
  • (4)服务层:假如完结了服务化,就有这一层
  • (5)数据-缓存层:缓存加快拜访存储
  • (6)数据-数据库层:数据库固化数据存储

整个体系的高可用,又是经过每一层的冗余+主动毛病搬运来归纳完结的。

四、分层高可用架构实践

1.客户端层->反向署理层的高可用

客户端层反向署理涪层的高可用,是经过反向署理层的冗余来完结的。以ngin钢蛋独胆x为例:有两台nginx,一台对线上供给服务,另Java程序员——互联网高可用性体系结构技能的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com 一台冗余以确保高可用,常见的实践是keepalived存活勘探,相同virtual IP供给服务。

自深圳交警动毛病搬运:当nginx挂了的时分,keepalived能够勘探到,会主动的进行毛病搬运,将流量主动迁移到shadow-nginx,因为运用的是相同的virtual IP,这个切换进程对调用方是通明的。

2. 反向署理层->站点层的高可用

反向署理层站点层的高可用,是经过站点层的冗余来完结的。假定反向署理层是nginx,nginx.conf里能够装备多个web后端,而且nginx能够勘探到多个后端的存活性。

主动毛病搬运:当web-server挂了的时分,nginx能够勘探到,会主动的进Java程序员——互联网高可用性体系结构技能的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com 行毛病搬运,将流量主动迁移到其他的web-server,整个进程美人隐私控制器由nginx主动完结,对调用方是通明的。

3. 站点层->服务层的高可用

站点层服务层的高可用,是经过服务层的冗余来完结的。“服务衔接池”会树立与下流服务多个衔接,每次恳求会“随机”选取衔接来拜访下流服务。

主动毛病搬运:当service挂了的时分,service-connection-pool能够勘探到,会主动的进行毛病搬运,将流量主动迁移到假装残心公主其他的service,整个进程由衔接池主动完结,对调用方是通明的(所以说RPC-client中的服务衔接池是很重要的根底组件)。

4. 服务层>缓存层的高可用

服务层缓存层的高可用,是经过缓存数据的冗余来完结的。 缓存层的数据冗余又有几种方法:第一种是运用客户端的封装,service对cache进行双读或许双写。

缓存层也能够经过支撑主从同步的缓存集群来处理缓存层的高可用问题。

以redis为例,redis天然支撑主从同步,redis官方也有sentinel岗兵机制,来做redis的存活性检测。

主动毛病搬运:当redis主挂了的时分,sentinel能够勘探到,会告诉调用方拜访新的redis,整个进程由sentinel和redis集群合作完结,对调用方是通明的。

说蜀山战纪完缓存的高可用,这儿要多说一句,事务对缓存并不一定有“高可用”要求,更多的对缓存的运用场景,是用来“加快Java程序员——互联网高可用性体系结构技能的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com 数据拜访”:把一部分数据放到缓存里,假如缓存挂了或许缓存没有射中,综漫之丢失神权是能够去后端的数据库中再取数据的。

这类答应“cache miss”网王同人千夜涧离的事务场景,缓存架构的主张是:

将kv缓存封装成服务集群,上游设置一个署理(署理能够用集群的方法确保高可用),署理的后端依据缓存拜访的key水平切分红若干个实例,每个实例的拜访并不做高可用。

缓存实例挂了屏蔽:当有水平切分的实例挂掉时,署理层直接回来cache miss,此刻缓存挂掉对调用方也是通明的。key水平切分实例削减,不主张做re-hash,这样简单引发缓存数据的不一致。

5.安化气候 服务层>数据库层的高可用

大部分互联网技能,数据库层都用了“主从同步,读写别离”架构,所以数据库层的高可用,又分为“读库高可用”与“写库高可用”两类。

  • 服务层>数据库层“读”的高可用

服务层数据库读的高可用,是经过读库的冗余来完结的。

已然冗余了读库,一般来说就至少有2个从库,“数据库衔接池”会树立与读库多个衔接,每次恳求会路由到这些读库。

主动毛病搬运:当读库挂了的时分,db-connection-pool能够勘探到,会主动的进行毛病搬运,将流量主动迁移到其他的读库,整个进程由衔接池排骨炖马铃薯主动完结,对调用方是通明的(所以说DAO中的数据库衔接池是很重要的根底组件)。

  • 服务层>数据库层“写”的高可用

服务层数据Java程序员——互联网高可用性体系结构技能的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com 库写的高可用,是经过写库的冗余来完结的。

以mysql为例,能够设置两个mysql双主同步,一台对线上供给服务,另一台冗余以确保高可用,常见的实践是keepalived存活勘探,相同virtual IP供给服务。

主动毛病搬运:当写库挂了的时分,keepalived能够勘探到,会主动的进行毛病搬运,将流量主动迁移到shadow-db-masrwbyter,因为运用的是相同的virtual IP,这个切换机械硬盘进程对调用方是通明的。

五、总结

高可用HA(High Availability)是分布式体系架构规划中有必要考虑的要素之一,它画江湖之灵主通常是指,经过规划削减体系不能供给服务的时刻。

方法论上,高可用是经过冗余+主动毛病搬运来完结的。

整个互联网分层体系架构的高可用,又是经过每一层的冗余+主动毛病搬运来归纳完结的,详细的:

  • (1)客户端层反向署理层的高可用,是经过反向署理层的冗余完结的,常见实践是keepalived + virtual IP主动毛病搬运。
  • (2)反向署理层站点层的高可用,是经过站点层的冗余完结的,常见实践是nginx与web-server之间的存活性勘探与主动毛病搬运。
  • (3)站点层服务层的高可用,是经过服务层的冗余完结的,常见实践是经过service-connection-pool来确保主动毛病搬运。
  • (4)服务层缓存层的高可用,是经过缓存数据的冗余完结的,常见实践是缓存客户端双读双写,或许运用缓存集群的主从数据同步与sentinel保活与主动毛病搬运;更多的事务场景小康规范,对缓存没有高可用要求,能够运用缓存服务化来对调用方屏蔽底层复杂性。
  • (5)服务层数据库“读”的高可用,是经过读库的冗余完结的,常见实践是经过db-connection-pool来确保主动毛病搬运。
  • (6)服务层数据库“写”的高可用,是经过写库的冗余完结的,常见实践是keepalived + virtual IP主动毛病搬运。

写在最终:柠檬为我们预备了一些适合于1-5年以上开发经历的java程序员面试涉及到的绝大部分面试题及答案做成了文档和学习笔记文件以及架构视频材料免费共享给我们(包含Dubbo、Redis、Netty、zookeeper、SprJava程序员——互联网高可用性体系结构技能的实践(附学习教程材料)-必威体育官网_betway体育_www.betway88.com ing cloud、分布式、高并发等架构技能材料)前庭大腺囊肿,期望能够协助到我们。

获取方法:请我们重视并私信小编关键词:“材料”即可获取你需求的各类材料。

评论(0)