精华内容
下载资源
问答
  • 服务器的高可用性——HA篇

    千次阅读 2017-11-12 18:06:00
    今天小编要和读者聊聊有关服务器的高可用性的问题,当前读者应该知道,国内一些从事电子商务行业的服务器性能是相当的强大的(淘宝、阿里巴巴等等),这些电子商务的主站每秒钟的访问量可是相当的可观,读者试着想想...
     今天小编要和读者聊聊有关服务器的高可用性的问题,当前读者应该知道,国内一些从事电子商务行业的服务器性能是相当的强大的(淘宝、阿里巴巴等等),这些电子商务的主站每秒钟的访问量可是相当的可观,读者试着想想如果服务器当掉了咋办,回答可能是肯定还有其他服务器替代啦,对,可是如何迅速替代让用户感觉不到已经有服务器当掉了呢,那便引出小编今天要谈的HA。

          HA是啥?High-Availability Linux 的开源项目的目标是,通过社区开发努力提供一个提升 Linux 可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。Linux-HA 项目得到了广泛的应用,是很多有趣的高可用性解决方案的重要组成部分。

          高可用性集群一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。

    今天小编的主要任务就是来实现HA群集。

    Project 1:了解高可用性群集的架构

    如图1-1所示,高可用性群集的几个重要部分

    clip_image002

    图1-1

    1)共享信息层

    在基础架构上实现心跳信息探测。双方节点可以随时探测到对方的心跳信息,以实现对对方主机工作状态的探测。三类控制信息:心跳(Heartbeats),集群事务信息(Cluster Transition Messages),重传信息(Retransmission Request)。 配置文件:/etc/ha.d/ha.cf。各节点间域共享密钥,实现节点间互相通信的认证。加密方式:MD5、HMAC-SHA1 。常用实现软件:HeartBeat(小编这里就是使用的这个)、keepalived、ultramonkey、openais/corosync。红帽官方提供的集群套件RHCS底层使用的通信机制就是openais/corosync。

    2)资源分配子层

    在资源分配上定义资源种类,界定资源归属,每个服务需要哪些资源及这些资源之间的前后次序。

    集群资源管理器(CRM,常用软件pacemaker),管理双方向外提供服务所需用到的资源,包括IP地址、Web服务、共享存储等等。而这些资源需要依靠集群信息库CIB(XML文件)来定义,同时还必须保证一旦某个节点上的XML文件更新,即刻通知其他节点上的XML也要及时更新。

    策略引擎(PE Policy Engine):定义法定人数以及根据法定人数所做出的动作等等。

    本地资源管理器(LRM Local Resource Manager):监控本地某个资源的工作状况。

    3)资源层

    本地资源代理(Resource Agent),脚本文件,一旦集群资源管理器发现某个资源工作异常,立即通知本地资源代理重启服务。常用方法:

    (1)Heartbeat v1(小编这里使用的);

    (2)使用脚本LSB scripts (Linux Standards Base );

    (3)OCF Open Cluster Format 开放集

    Project 2:常用的架构模型

    1)主从架构:正常情况下只有主服务器工作,当主服务器当掉从服务器立即启用

    2)互为主从架构:两台服务器提供不同的服务,相互为主从架构,两台服务器同时工作

    3)多主机架构

    N台主机组成一个集群,分别提供不同的服务,一台服务器空闲做备节点。或者全部处于工作状态,一台服务器出故障,立刻将服务转移到其他主机上。各节点之间需要以多播的形式将自己的健康情况发送给其他主机。

    Project 3:高可用性集群的实现

    1)主从架构

    step 1:实验拓扑规划,如图3-1-1所示

    clip_image004

    图3-1-1

    Primary eth0 192.168.1.100

               eth1 192.168.2.10 //心跳测试

    Standby eth0 192.168.1.200

                 eth1 192.168.2.20 //心跳测试

    向外提供Web服务IP:192.168.1.150

    step 2:系统与软件资源需求安装

    小编的系统是Red Hat EnterPrise Linux 5.4

    小编的系统上已经安装了apache2.2.3和php环境,如果读者不会安装的话可以参见小编的博客http://wnqcmq.blog.51cto.com/5200614/1177203

    小编将这些软件包放在/root/heart目录下了,然后使用不加gpg验证的本地yum安装完成

    heartbeat-2.1.4-11.el5.i386.rpm

    openhpi-libs-2.14.0-5.el5.i386.rpm

    heartbeat-pils-2.1.4-11.el5.i386.rpm perl-MailTools-2.04-1.el5.rf.noarch.rpm

    heartbeat-stonith-2.1.4-11.el5.i386.rpm perl-TimeDate-1.16-5.el5.noarch.rpm

    libnet-1.1.5-1.el5.i386.rpm

    primary服务器的安装配置

    # cd heart/

    # yum localinstall ./* --nogpgcheck

    这样安装省了很多事,系统会自动解决依赖关系,但是读者还要记着安装完成之后查询一下heartbeat到底产生了哪些文件

    # rpm -ql heartbeat

    其中/usr/share/doc/heartbeat-2.1.4/目录下就存放了heartbeat的样例配置文件

    接下来的工作是修改主机名,Heartbeat依靠服务器的主机名来识别服务器,因此使用hostname命令得到的结果必须与uname -n 结果保持一致。

    # vim /etc/sysconfig/network //修改主机名称;

    HOSTNAME=primary.a.com

    # hostname primary.a.com

    # vim /etc/hosts //修改主机地址映射;

    192.168.1.100 primary.a.com primary

    192.168.1.200 standby.a.com standby

    # cd /etc/ha.d/

    # cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./

    # cp /usr/share/doc/heartbeat-2.1.4/authkeys ./

    # cp /usr/share/doc/heartbeat-2.1.4/haresources ./

    # vim ha.cf //定义各节点之间Heartbeat进程如何通信;

    debugfile /var/log/ha-debug //设置调试日志文件名

    logfile /var/log/ha-log //设置其他日志文件名

    keepalive 2 //设定heartbeat之间的时间间隔为2秒;

    deadtime 30 //在30秒后宣布节点死亡;

    warntime 10 //在日志中发出late heartbeat警告之前等待的时间,单位为秒;

    udpport 694 // 使用端口694进行bcast和ucast通信,默认参数;

    bcast eth1 //在eth1接口上使用广播heartbeat-”心跳”;

    node primary.a.com //定义节点;

    node standby.a.com //定义节点;

    # dd if=/dev/urandom bs=512 count=1 | openssl md5 //生成节点间域共享密钥;

    14df2a6b5b26b510e7d5d5b16b7cc10b

    # vim authkeys //定义心跳探测包使用哪种加密方式;

    auth 1

    1 sha1 14df2a6b5b26b510e7d5d5b16b7cc10b

    # chmod 600 authkeys //仅允许管理员修改文件;

    # cp /etc/init.d/httpd /etc/ha.d/resource.d/

    # vim haresources //定义资源;文件给出了相应的格式

    primary.a.com 192.168.1.100/24/eth0/192.168.1.255 httpd

    standby 服务器的配置

    从服务器的主机名称为standby.a.com,安装heartbeat的方法同主服务器一致。/etc/hosts文件、Heartbeat的配置文件也必须与主机保持一致。因此这里采用将primary上的配置文件直接远程复制过来的方法:

    # cd /etc/ha.d/

    # scp 192.168.1.100:/etc/ha.d/ha.cf ./

    # scp 192.168.1.100:/etc/ha.d/authkeys ./

    # scp 192.168.1.100:/etc/ha.d/haresources ./

    # cp /etc/init.d/httpd /etc/ha.d/resource.d/

    # chmod 600 authkeys

    step 3:集中测试

    分别重新启动primary和standy服务器的heartbeat服务,如图3-1-2、3-1-3所示

    clip_image006

    图3-1-2

    clip_image008图3-1-3

    这样就启动成功了,接下来编写测试网页,小编这里为了让读者看的清楚两台服务器的工作,所以两个测试网页的内容是不同的,而在实际的应用中两台服务器上的内容肯定是一致的啦。

    primary服务器的/var/www/html/index.php内容

    <?php

    for($i=0;$i<9;$i++)

    echo $i."web1"."<br/>";

    ?>

    standby服务器的/var/www/html/index.php内容

    <?php

    for($i=0;$i<9;$i++)

    echo $i."web2"."<br/>";

    ?>

    在客户PC的浏览器上输入http://192.168.1.150试试看,结果如图3-1-4所示

    clip_image010

    图3-1-4

    以上结果是在primary服务器为主服务器的情况才会出现的,那么现在小编就来模拟以下主服务器成为备份服务器的情况再来看看,这里heartbeat提供了一个工具来切换服务器状态,在/usr/lib/heartbeat/目录下,这里小编在切换服务器状态的同时,来监控一下两台服务器的日志,让读者清楚两台服务器之间是如何切换主从关系的

    在primary服务器上执行

    # cd /usr/lib/heartbeat/

    # ./hb_standby //请求成为辅助服务器

    主服务器的日志情况如图3-1-5所示:

    clip_image012

    图3-1-5

    从服务器的日志情况如图3-1-6所示:

    clip_image014

    图3-1-6

    小编现在来说明一下切换流程

    1.primary服务器发出申请说自己想成为standby服务器,并且说明standby服务器可以拿走资源

    2.”心跳“(广播)被standby服务器抓到,知道primary要变为standby服务器

    3.primary开始释放资源,可以看到主服务器关闭了httpd服务器,当掉了192.168.1.150

    4.standby开始申请资源,可以看到standby服务器开始启动httpd服务器,并且启用对外IP192.168.1.150

    5.双方工作都完成显示success

    此时在刷新一下PC机的浏览器看看,结果如图3-1-7所示

    clip_image016

    图3-1-7

    看到了吧,成功转到standby服务器了

    刚刚不是standby服务器成为了主服务器么,那么下面小编就来模拟一下主服务器当掉的情况,这里小编将监控“心跳”的eth1端口当掉

    # ifconfig eth1 down

    可以在primary服务器的日志上看到如图3-1-8所示的信息

    clip_image018

    图3-1-8

    此时再次刷新一下PC的浏览器看看,结果如图3-1-9所示

    clip_image020

    图3-1-9

    primary服务器成功切换成为主服务器啦

    到这里主从架构的配置以及测试小编就完全演示完了,接下来的工作交个读者你去动手操作啦,接下来的工作是完成互为主从架构的案例啦

    2)互为主从架构

    step 1:实验拓扑规划,如图3-2-1所示:

    clip_image022

    图3-2-1

    这里小编仍然使用主从架构的环境,稍作修改即可

    step 2:

    primary服务器的资源配置修改

    # vim /etc/ha.d/haresources

    primary.a.com 192.168.1.150/24/eth0/192.168.1.255 httpd

    standby.a.com 192.168.1.151/24/eth0/192.168.1.255 vsftpd //添加ftp

    # touch /var/ftp/primary //作为区分用

    standby服务器的资源配置修改

    # vim /etc/ha.d/haresources

    primary.a.com 192.168.1.150/24/eth0/192.168.1.255 httpd

    standby.a.com 192.168.1.151/24/eth0/192.168.1.255 vsftpd

    # touch /var/ftp/standby

    step 3:重新启动两台服务器的heartbeat服务

    # service heartbeat restart

    step 4:集中测试

    仍然在PC机的浏览器输入http://192.168.1.150,结果如图3-2-2所示

    clip_image024

    图3-2-2

    PC浏览器输入ftp://192.168.1.151试试,结果如图3-2-3所示:

    clip_image026图3-2-3

    看见了吧,两台服务器相互备份,都运行有应用服务,读者可以自己测试一下将其中一台服务器当掉,看看结果,小编这里就不掩饰了,有啥问题请联系小编哈,至于第三种模式,由于小编的主机有限就没做了,如果读者能把上面两种模式理解透彻,第三种很容易实现啦。

    编后语:HA集群一般都是以两个节点的形式出现的,单机处理能力有限,所以当服务器压力较大时,想扩容服务器的处理能力往往得把以前的服务器淘汰掉,浪费了以前的投资;因此对于高访问性需求的商业性网站单纯想使用HA群集来解决问题是不可行的,如果再结合LVS来使用,那便是极好的了,至于LVS的实现小编会在后续的博客中道来,敬请关注哈。。。。。


    本文转自 chenming421  51CTO博客,原文链接:http://blog.51cto.com/wnqcmq/1179525


    展开全文
  • 分布式架构 高可用

    千次阅读 2019-05-05 22:29:24
    微服务架构 高可用 本文将通过自建架构图 进行讲解 如图所示: 如图采用了分布式、微服务架构,将传统系统进行重构后的效果 微服务架构体系对多个层面进行探索、分析和优化,本文不在详细阐述 微服务、分布式...

    分布式架构 高可用

    本文将通过自建架构图 进行讲解

    架构1

    如图采用了分布式、微服务架构,将传统系统进行重构后的效果

    微服务架构体系对多个层面进行探索、分析和优化,本文不在详细阐述

    微服务、分布式架构根据公司、企业需求定制化构造而来,目的细化模块间的调用,链路更加清晰明了,不同环节高可用方案不同,优化手段也存在差异。

    分析思考

    如果系统高峰期间可以处理500W/S 请求流量,那么当请求到达1000W/S请求流量时系统是否有安全隐患?需要从哪些方面进行优化?

    • 系统可以撑500W/S请求,说明系统500之上都有可能,可以建造一套防生产环境用来进行内部全链路业务压测、外部流量容灾、限流测试,通过此举可以详细发现系统哪个环节处于瓶颈,从来进行具体优化

    • 如上图可以通过水平扩展方式从来提升整体处理能力

    1. F5是瓶颈,外界可以通过多个IP进来,DNS轮询负载到多套F5集群,正常情况F5不会存在瓶颈。
    2. Nginx负载过高,图上是部署2套Nginx节点,进行估算后可以水平增加Nginx节点
    3. Varnish缓存基于内存存储,正常存在内存不够情况,当出现后可以增加Varnish节点或增加内存分配
    4. 业务模块 可以把相同模块分别部署多份,从而提高服务吞吐量
    5. Rocketmq高性能消息服务器,单台可处理千万级别消息。当消息发送和消费积压严重,Broken负载过高后,可以进行水平扩展(Broken、Provider、Consumer)集群
    6. Redis高性能缓存服务器,如出现单台负载过大,也可以通过扩展集群模式从而提供高效服务
    7. Mysql数据库 当出现连接数占满/不够,数据库查询缓慢,可通过扩展集群模式从而提高数据处理效率,Mysql相关优化后续文章会详细讲解

    架构2

    以上是服务器部署图

    通过部署图可以发现

    • 通过Nginx可指定URL进行轮询调用,意味着系统内部请求可以通过分流方式从而规避风险
    • 如特殊消耗性能相关入口可以分发到单独服务器从而进行处理
    • 针对服务器相关节点进行监控,如zabbix,提前预知系统处理情况

    总结:

    分布式架构高可用可以针对不同渠道链路进行探针监控,提前预知其存在风险点,然后通过轮询、切换等方式让其故障转移,不影响业务正常使用运转。其中最为复杂体现在故障期间来回切换所产生的脏数据、重复数据、部分数据丢失等问题。需要进行系统筛选,必要时需要人工干预处理。

    作者简介:张程 技术研究

    更多文章请关注微信公众号:zachary分解狮 (frankly0423)
    01

    展开全文
  • spring cloud 服务注册中心eureka集群搭建

    spring cloud 服务注册中心eureka高可用集群搭建

    一,准备工作

    eureka可以类比zookeeper,本文用三台机器搭建集群,也就是说要启动三个eureka注册中心
    

    本文三台eureka的地址分别为:本机(htttp://10.25.25.92:8080),远程服务器1(http://10.25.25.24:8080)远程服务器2(http://10.25.25.39:8080)。三台注册中心准备完毕

    二,集群配置

    application.yml配置

    在上一章中通过下面两个配置来实现不向注册中心注册自己,eureka高可用实际上就是将自己作为服务向其他服务注册中心注册自已,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。

    eureka: 
      client: 
        #register-with-eureka: false     #false表示不向注册中心注册自己。
        #fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务

    这里将这两个配置注释掉,具体如下

    2.1,本机配置
    server: 
      port: 8080
    
    eureka: 
      instance:
        hostname: 10.25.25.92 #eureka服务端的实例名称
      client: 
        #register-with-eureka: false     #false表示不向注册中心注册自己。
        #fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url: 
          #单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
          defaultZone: http://10.25.25.24:8080/eureka/,http://10.25.25.39:8080/eureka/
    2.2,远程服务器1配置
    server: 
      port: 8080
    
    eureka: 
      instance:
        hostname: 10.25.25.24 #eureka服务端的实例名称
      client: 
        #register-with-eureka: false     #false表示不向注册中心注册自己。
        #fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url: 
          #单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
          defaultZone: http://10.25.25.92:8080/eureka/,http://10.25.25.39:8080/eureka/
    2.3,远程服务器2
    server: 
      port: 8080
    
    eureka: 
      instance:
        hostname: 10.25.25.39 #eureka服务端的实例名称
      client: 
        #register-with-eureka: false     #false表示不向注册中心注册自己。
        #gfetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url: 
          #单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
          defaultZone: http://10.25.25.92:8080/eureka/,http://10.25.25.24:8080/eureka/

    pom中添加如下插件

    使用这个插件执行 mvn install 生成jar包,可以使用 Java -jar **.jar 的命令启动jar包

     <build>
            <plugins>               
                <plugin><!-- 项目的打包发布 -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <!-- 主启动类 -->
                        <mainClass>com.baosight.DemoApplication</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    执行 mvn install 生成jar包,复制到对应的两台远程服务器里,分别启动
    这里写图片描述
    浏览器访问http://localhost:8080
    这里写图片描述
    可以看到10.25.25.24和10.25.25.39的eureka注册中心,有三个微服务注册到本机的注册中心,分别是http://10.25.25.92:8080/eureka/http://10.25.25.24:8080/eureka/http://localhost:8080/eureka,既是注册中心也是

    三,eureka client配置

    application.yml配置

    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8080/eureka/,http://10.25.25.25:8080/eureka/,http://10.25.25.39:8080/eureka/
    #  instance:
    #    instance-id: microservicecloud-8762
    #    prefer-ip-address: true     #访问路径可以显示IP地址  
    server:
      port: 8762
    spring:
      application:
        name: springboot-eureka-clent

    启动eureka client
    分别访问 http://10.25.25.24:8080/http://10.25.25.39:8080/http://localhost:8080/
    这里写图片描述
    可以看到三个注册中心都注册了 springboot-eureka-clent 。

    四,测试

    4.1 修改 eureka client 配置

    application.yml配置

    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8080/eureka/
      instance:
        instance-id: microservicecloud-8762
        prefer-ip-address: true     #访问路径可以显示IP地址  
    server:
      port: 8762
    spring:
      application:
        name: springboot-eureka-clent

    重启eureka client 可以看到,三个注册中心依然都注册有 eureka client ,这是因为eureka是通过在各个节点进行复制来达到高可用的目的。停掉本机eureka服务,刷新另外俩个eureka页面
    这里写图片描述
    可以看到,eureka客户端是注册到本机注册中心的,本机的注册中心已经停掉,但是eureka客户端依然注册到另外两个注册中心了,这样就避免了单点故障后的整体服务发现的瘫痪,说明eureka注册中心高可用集群发挥了作用
    源代码下载

    展开全文
  • 高可用高性能并发量解决方案汇总整理

    千次阅读 多人点赞 2018-10-30 14:21:50
    网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很的要求,已经不是原来...

    一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。

      大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。这几个解决思路在一定程度上意味着更大的投入。

    1、HTML静态化

      其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

      除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、文章进行实时的静态化、有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。

      同时,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现。比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储在数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。

    2、图片服务器分离

      大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的、甚至很多台的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃。

      在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持、尽可能少的LoadModule,保证更高的系统消耗和执行效率。

    3、数据库集群、库表散列

      大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。

      在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。

      上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。

      我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。

      sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。

    4、缓存

      缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。

      架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。

      网站程序开发方面的缓存,Linux上提供的Memory Cache是常用的缓存接口,可以在web开发中使用,比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通讯共享,一些大型社区使用了这样的架构。另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java就更多了,.net不是很熟悉,相信也肯定有。

    5、镜像

      镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。

    6、负载均衡

      负载均衡将是大型网站解决高负荷访问和大量并发请求采用的高端解决办法。

      负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。

    (1)、硬件四层交换

      第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。

      第四层交换功能就像是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。

      在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。“Yahoo中国”当初接近2000台服务器,只使用了三、四台Alteon就搞定了。

    (2)、软件四层交换

      大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的,有人说软件实现方式其实更灵活,处理能力完全看你配置的熟悉能力。

      软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的强壮性,同时可供了灵活的虚拟VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。

      一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。

      对于大型网站来说,前面提到的每个方法可能都会被同时使用到,这里介绍得比较浅显,具体实现过程中很多细节还需要大家慢慢熟悉和体会。有时一个很小的squid参数或者apache参数设置,对于系统性能的影响就会很大。

    7、最新:CDN加速技术

    什么是CDN?

       CDN的全称是内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。

      CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。

    CDN的类型特点

       CDN的实现分为三类:镜像、高速缓存、专线。

      镜像站点(Mirror Site),是最常见的,它让内容直接发布,适用于静态和准动态的数据同步。但是购买和维护新服务器的费用较高,还必须在各个地区设置镜像服务器,配备专业技术人员进行管理与维护。对于大型网站来说,更新所用的带宽成本也大大提高了。

      高速缓存,成本较低,适用于静态内容。Internet的统计表明,超过80%的用户经常访问的是20%的网站的内容,在这个规律下,缓存服务器可以处理大部分客户的静态请求,而原始的服务器只需处理约20%左右的非缓存请求和动态请求,于是大大加快了客户请求的响应时间,并降低了原始服务器的负载。

      CDN服务一般会在全国范围内的关键节点上放置缓存服务器。

      专线,让用户直接访问数据源,可以实现数据的动态同步。

    CDN的实例

      举个例子来说,当某用户访问网站时,网站会利用全球负载均衡技术,将用户的访问指向到距离用户最近的正常工作的缓存服务器上,直接响应用户的请求。

      当用户访问已经使用了CDN服务的网站时,其解析过程与传统解析方式的最大区别就在于网站的授权域名服务器不是以传统的轮询方式来响应本地DNS的解析请求,而是充分考虑用户发起请求的地点和当时网络的情况,来决定把用户的请求定向到离用户最近同时负载相对较轻的节点缓存服务器上。

      通过用户定位算法和服务器健康检测算法综合后的数据,可以将用户的请求就近定向到分布在网络“边缘”的缓存服务器上,保证用户的访问能得到更及时可靠的响应。

      由于大量的用户访问都由分布在网络边缘的CDN节点缓存服务器直接响应了,这就不仅提高了用户的访问质量,同时有效地降低了源服务器的负载压力。

    附:某CDN服务商的服务说明

    采用GCDN加速方式

      采用了GCDN加速方式以后,系统会在浏览用户和您的服务器之间增加一台GCDN服务器。浏览用户访问您的服务器时,一般静态数据,如图片、多媒体资料等数据将直接从GCDN服务器读取,使得从主服务器上读取静态数据的交换量大大减少。

      为VIP型虚拟主机而特加的VPN高速压缩通道,使用高速压缩的电信<==>网通、电信<==>国际(HK)、网通<==>国际(HK)等跨网专线通道,智能多线,自动获取最快路径,极速的动态实时并发响应速度,实现了网站的动态脚本实时同步,对动态网站有一个更加明显的加速效果。

      每个网络运营商(电信、网通、铁通、教育网)均有您服务器的GCDN服务器,无论浏览用户是来自何处,GCDN都能让您的服务器展现最快的速度!另外,我们将对您的数据进行实时备份,让您的数据更安全!

    8、降级

    降级的最终目的是保证核心服务可用,即使是有损的。而且有些服务是无法降级的(如加入购物车、结算)。

    降级预案

    在进行降级之前要对系统进行梳理,看看系统是不是可以丢卒保帅;从而梳理出哪些必须誓死保护,哪些可降级;比如可以参考日志级别设置预案:

    一般:比如有些服务偶尔因为网络抖动或者服务正在上线而超时,可以自动降级;

    警告:有些服务在一段时间内成功率有波动(如在95~100%之间),可以自动降级或人工降级,并发送告警;

    错误:比如可用率低于90%,或者数据库连接池被打爆了,或者访问量突然猛增到系统能承受的最大阀值,此时可以根据情况自动降级或者人工降级;

    严重错误:比如因为特殊原因数据错误了,此时需要紧急人工降级。

    降级按照是否自动化可分为:自动开关降级和人工开关降级。

    降级按照功能可分为:读服务降级、写服务降级。

    降级按照处于的系统层次可分为:多级降级。

    降级的功能点主要从服务端链路考虑,即根据用户访问的服务调用链路来梳理哪里需要降级:

    页面降级、页面片段降级、页面异步请求降级、服务功能降级、读降级、写降级

    自动开关降级:超时降级、统计失败次数降级、故障降级、限流降级

    人工开关降级:读服务降级、写服务降级

    9、分层

    分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。

      在网站的分层架构中,常见的为3层,即应用层、服务层、数据层。应用层具体负责业务和视图的展示;服务层为应用层提供服务支持;数据库提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。

      分层架构是逻辑上的,在物理部署上,三层架构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,是网站拥有更多的计算资源以应对越来越多的用户访问。

      所以虽然分层架构模式最初的目的是规划软件清晰的逻辑结构以便于开发维护,但在网站的发展过程中,分层结构对网站支持高并发向分布式方向的发展至关重要。

    10、限流

    在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流。

    限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据,如商品详情页库存默认有货)。

        一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池、线程池)、限制瞬时并发数(如nginx的limit_conn模块,用来限制瞬时并发连接数)、限制时间窗口内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率);其他还有如限制远程接口调用速率、限制MQ的消费速率。另外还可以根据网络连接数、网络流量、CPU或内存负载等来限流。

    11、隔离

    线程隔离:

    线程隔离主要是指线程池隔离,在实际使用时,我们会把请求分类,然后交给不同的线程池处理。当一种业务的请求处理发生问题时,不会将故障扩散到其他线程池,从而保证其他服务可用。

    进程隔离

    由于传统的系统所有功能都集中在一个系统中,为了避免系统其中一个模块功能出现问题导致整个系统无法使用的情况发生,将其该系统拆分成多子系统实现物理隔离,故通过进程隔离使得某一个子系统出现问题时不影响到其他子系统。

    集群隔离

    随着调用方的增多,当秒杀(并发量特别大功能)类似的服务被刷新会影响到其他服务的稳定性时,应该考虑为秒杀(并发量特别大功能)类似的服务提供单独的服务集群,即分服务分组,这样当某一个分组出现问题时,不会影响到其他分组,从而实现了故障隔离愿景。

    机房隔离

    随着对系统可用性的要求,会进行多机房部署,每一个机房的服务都有自己的服务分组,本机房的服务应该只调用本机房的服务,不进行跨机房调用。其中,一个机房服务发生问题时,可以通过DNS/负载均衡将请求全部切到另一个机房,或者考虑服务能自动重试其他机房的服务,从而提升系统可用性。

    读写隔离

    为了提高数据访问,一般采用redis主从模式将读和写进群分离,在正常情况下,当主redis集群出现问题时,从redis集群还是可以用的,从而不影响用户的访问。

    动静隔离

    例如当用户访问如结算页时,如果JS/CSS等静态资源也在结算页系统中时,很可能因为访问量太大导致带宽被打满导致出现不可用。

    为了不影响结算等用户操作的功能,将其JS/CSS等静态资源静态化与用户操作功能分开部署。

    资源隔离

    最常见的资源如磁盘、CPU、网络;对于宝贵的资源都会存在竞争问题。

    我们可以使用JIMDB数据同步时要dump数据,SSD盘容量用了50%以上,dump到同一块磁盘时遇到了容量不足的问题,我们通过单独挂一块SAS盘来专门同步数据。还有如使用Docker容器时,有的容器写磁盘非常频繁,因此要考虑为不同的容器挂载不同的磁盘。

    12、超时重试

    在实际开发过程中,我们见过太多故障时因为没有设置超时或者设置得不对而造成的,而这些故障都是因为没有意识到超时设置的重要性而造成的。如果应用不设置超时,则可能会导致请求响应慢,慢请求积累导致连锁反应,甚至造成应用雪塌。而有些中间件或者框架在超时后进行重试(例如dubbo默认重试两次),读服务天然适合重试,但写服务大多不能重试(如写订单、支付等),重试次数太多会导致多倍请求流量。

    例如模拟了Ddos攻击(分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS,通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。),后果可能是灾难,因此,务必设置合理的重试机制,并且应该和熔断、快速失败机制配合。所以在进行代码Review时,一定记得Review超时与重试机制。

    13、自动化

    具体有自动化发布过程,自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复等。

    14、冗余

    网站需要7×24小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问,而冗余则可以通过部署至少两台服务器构成一个集群实现服务高可用。数据库除了定期备份还需要实现冷热备份。甚至可以在全球范围内部署灾备数据中心。

    15、安全

    网站在安全架构方面有许多模式:通过密码和手机校验码进行身份认证;登录、交易需要对网络通信进行加密;为了防止机器人程序滥用资源,需要使用验证码进行识别;对常见的XSS攻击、SQL注入需要编码转换;垃圾信息需要过滤等。

    16、集群

    对于用户访问集中的模块需要将独立部署的服务器集群化,即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务。

      服务器集群能够为相同的服务提供更多的并发支持,因此当有更多的用户访问时,只需要向集群中加入新的机器即可;另外可以实现当其中的某台服务器发生故障时,可以通过负载均衡的失效转移机制将请求转移至集群中其他的服务器上,因此可以提高系统的可用性。

    17、分布式

    对于大型网站,分层和分隔的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着可以使用更多的计算机完成同样的工作,计算机越多,CPU、内存、存储资源就越多,能过处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。

      在网站应用中,常用的分布式方案有一下几种.

      分布式应用和服务:将分层和分隔后的应用和服务模块分布式部署,可以改善网站性能和并发性、加快开发和发布速度、减少数据库连接资源消耗。

      分布式静态资源:网站的静态资源如JS、CSS、Logo图片等资源对立分布式部署,并采用独立的域名,即人们常说的动静分离。静态资源分布式部署可以减轻应用服务器的负载压力;通过使用独立域名加快浏览器并发加载的速度。

      分布式数据和存储:大型网站需要处理以P为单位的海量数据,单台计算机无法提供如此大的存储空间,这些数据库需要分布式存储。

      分布式计算:目前网站普遍使用Hadoop和MapReduce分布式计算框架进行此类批处理计算,其特点是移动计算而不是移动数据,将计算程序分发到数据所在的位置以加速计算和分布式计算。

    18、压力测试

    线下压力测试

    通过如Jmeter,Apac,he ab 压力测试系统的某一个接口等(如登录、查询订单)或者某一个组件(例如数据库连接池),然后进行调优(如调优JVM参数,优化代码等),实现单个接口或者组件的性能最优。

    线上压力测试

    线上压力测试份方式非常多,按读分为读压、写压测和混合压测,按照数据仿真度分为仿真压力测试和引流压力测试,按照给用户提供服务分为隔离集群压力测试和线上集群压力测试。

    19、系统优化和容灾

    拿到全面的压力测试报告后,接下来就是分析报告,然后进行一些有针对性的优化,如硬件升级、系统扩容、参数调优、代码优化(代码同步改异步)、架构优化(如加缓存、读写分离、历史数据归档)等。在扩容时也需要考虑容灾,比如分组部署、跨机房部署。容灾是通过部署多组(单机房或多机房)相同系统,当其中一组出现问题时,可以切换到另一个分组,保证系统可用

    20、应急预案

    在系统压力测试之后发现一些系统瓶颈,在系统优化之后会提升系统吞吐量并降低响应时间,容灾之后的系统可用性得以保障,但还是会存在一些风险,如网络抖动、某台机器负载过高、某个服务变慢、数据库Load值过高,为了防止因为这些问题而出现系统雪崩,需要针对这些情况制定应急预案,从而在出现突发情况时,有响应的措施来解决掉这些问题。

    应急预案可按照如下几步进行:首先进行系统分级,然后进行全链路分析、配置监控,最后制定应急预案。

    展开全文
  • 高可用集群

    万次阅读 多人点赞 2016-09-23 20:49:13
    本文将详细介绍:高可用集群、高可用集群衡量标准、高可用集群实现原理、高可用集群工作模型、高可用集群构架、高可用集群软件、共享存储
  • 并发与高可用实战

    千次阅读 2018-10-30 18:45:50
    读写维度:比如商品系统中,如果查询量比较大,可以单独分为两个服务,分别为查询服务和写服务, 读写比例特征拆分;读多,可考虑多级缓存;写多,可考虑分库分表. AOP 维度: 根据访问特征,按照 AOP 进行拆分,...
  • 高可用高性能并发可信弹性

    千次阅读 2019-07-09 15:08:49
    高可用:设备可用性强,具有高可替代性,故障发生后,系统能马上恢复。 性能:设备性能强,系统运算能力强,响应速度快。 并发:设备并发能力强,具有同时处理多种事务的能力。 一个小型的网站,可以使用最...
  • 生产环境下的高可用NFS文件服务器

    万次阅读 2016-08-26 17:31:12
    所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。       在高可用(HA)解决方案中使用DRBD的功能,可以代替使用一个共享盘阵存储设备。因为...
  • Zuul的高可用

    千次阅读 2018-06-27 19:29:20
    Zuul的高可用非常关键,因为外部请求到后端服务的流量都会经过Zuul。故而在生产环境下一般都需要部署高可用的Zuul以避免单点故障。一 Zuul客户端也注册到Eureka Server上这种情况下,Zuul的高可用非常简单,只须将...
  • 并发和高可用

    千次阅读 2018-08-07 19:48:22
    并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。   响应时间:系统对请求做出响应的时间。例如系统处理一...
  • Mycat高级进阶---高可用与集群

    万次阅读 2017-03-22 19:39:54
    MySQL高可用的几种方案首先我们看看MySQL高可用的几种方案: 对于数据实时性要求不是特别严格的应用,只需要通过廉价的pc server 来扩展Slave 的数量,将读压力分散到多台Slave 的机器上面,即可通过分散单台...
  • 高可用NAS集群技术

    万次阅读 2017-12-13 12:25:53
    高可用NAS集群技术 目录 高可用NAS集群技术 一、前言 二、集群NAS的介绍 (一)什么是集群NAS (二)集群NAS的主流架构 (三)集群NAS的分类 三、集群存储高可用技术 (一)什么是集群高可用 (二)常用...
  • 并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。
  • KMS服务器关于Vol Windows/Office命令

    万次阅读 2018-11-07 14:14:21
    可用的KMS服务器地址: zh.us.to 有效 kms.03k.org 有效 kms.chinancce.com 有效 kms.shuax.com 有效 kms.dwhd.org 有效 kms.luody.info 有效 kms.digiboy.ir 有效 kms.lotro.cc 有效 www.zgbs.cc 有效 cy...
  • 对于一个互联网企业来说,搭建一个公司内部的DNS服务器是很必要的,一来可以通过公司内网的DNS缓存提高公司内部的DNS解析效率,二来域名服务商提供的解析服务并不可靠,为了安全起见,自己搭建(当然也有不错的第三...
  • Hive组件高可用

    千次阅读 2018-01-03 15:39:09
    Hive Metastore高可用此文档是为了系统管理员准备的,他们需要配置Hive Metastore高可用服务。 重要提示:支持HiveMetastore本身的关系型数据库也应该使用数据库系统所定义的最佳实践提供高可用性。 用例和故障...
  • 计算高可用2.存储高可用高可用状态决策1.独裁式2.协商式3.民主式 1.基本概念 这个定义的关键在于“无中断”,但恰好难点也在“无中断”上面,因为无论是单个硬件还是单 个软件,都不可能做到无中断,硬件会出故障,...
  • redis高可用,保证并发

    万次阅读 2018-11-15 17:51:29
    目录 redis如何通过读写分离来承载读请求QPS超过10万+ redis replication以及master持久化对主从架构的安全... redis主从架构下如何才能做到99.99%的高可用性?  redis哨兵架构的相关基础知识的讲解1、哨兵的...
  • 并发与高可用知识总结

    万次阅读 2019-09-02 15:48:33
    究竟啥才是互联网架构“并发” ...并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。 响应时间:系统对请求做出响应...
  • HDFS的高可用机制详解

    万次阅读 多人点赞 2018-03-13 11:14:32
    在Hadoop2.X之前,Namenode是HDFS...HDFS高可用(HA)方案就是为了解决上述问题而产生的,在HA HDFS集群中会同时运行两个Namenode,一个作为活动的Namenode(Active),一个作为备份的Namenode(Standby)。备份的N...
  • 系统架构与高可用

    千次阅读 2018-05-21 16:21:48
    某些请求耗时特别或者系统崩溃,一般是索引没有设计好查询太慢导致数据库连接数不够、或者一次性从数据库中查询百万级别数据加载到内存导致内存溢出(严禁查全表,尽量采用分页查询)、或者存在死锁导致数据库连接...
  • 多节点高可用Eureka集群与服务注册

    万次阅读 2018-05-06 23:30:36
    Eureka是Netfilx开元的服务发现组件,本身是一个基于REST的服务。它包含EurekaServer(以下简称ES)和EurekaClient(以下简称EC)两部分,SpringCloud将它集成在子项目SpringCloudNetfilx中,实现了微服务的注册与...
  • mysql高可用方案

    千次阅读 2019-01-04 20:11:08
    而在高可用方面,都是需要业务方自己去处理主从切换等等问题,出现主数据库故障的时候,往往需要业务方自己去修改配置文件,重启进程,增加了服务的中断时间。 二、为什么没有采用开源的高可用方案 业界比较...
  • 高可用基本架构

    千次阅读 2019-02-11 22:45:06
    高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降低到...
  • Redis高可用技术解决方案大全

    千次阅读 2018-04-10 11:35:24
    近来一直在折腾redis高可用的方案,以及优缺点以及如何选择合适的方案线上使用,刚好看到这篇,分享下Redis常见的几种主要使用方式:Redis 单副本Redis 多副本(主从)Redis Sentinel(哨兵)Redis ClusterRedis 自...
  • 如何构建高可用的分布式系统

    万次阅读 2017-03-25 23:18:46
    在公司做了一次高可用的分享,由于keynote的内容为大纲,特此加点注释说明,分享给大家,水平有限,欢迎拍砖~~ 分布式服务要素   分布式服务主要考虑如下几点: 性能 主要考虑指标: 响应时间...
  • SQL就像简单的查询语言Neo4j CQL 它遵循属性图数据模型 它通过使用Apache Lucence支持索引 它支持UNIQUE约束 它包含一个用于执行CQL命令的UI:Neo4j数据浏览器 它支持完整的ACID(原子性,一致性,隔离性和持久性)...
  • 微服务架构如何保障99.99%高可用

    千次阅读 2019-03-26 11:56:08
    微服务架构本身最最核心的保障高可用的措施,就是两点: 一个是基于Hystrix做资源隔离以及熔断; 另一个是做备用降级方案。 如果资源隔离和降级都做的很完善,那么在双11这种并发场景下,也许可能会出现个别...
  • 9种性能高可用高并发的技术架构

    千次阅读 2019-11-06 15:58:37
    面临难题:如何解决分布式系统中的服务高可用问题?避免多层服务依赖因为少量故障导致系统崩溃? 解决方案:基于hystrix的高可用缓存服务,资源隔离+限流+降级+熔断+超时控制 11、复杂的高可用分布式系统架构设计 ...
  • 浅谈系统的高可用

    千次阅读 2015-12-03 21:54:15
    高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。 对于高可用这个概念,个人认为至少满足下列几点: 1.程序异常处理,这个是基本功,仅能在正常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 415,626
精华内容 166,250
关键字:

高可用查询服务