可用性

分布式系统学习总结

微笑、不失礼 提交于 2019-12-22 04:50:01
前言 随着大型网站的各种高斌发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题。大型网站的架构也在不断发展。提高大型网站的高可用架构,就不得不提 分布式系统(Distributed Systems) 。下面说一下分布式系统及其相关的概念 在学习分布式系统之前,先了解一下与之相对应的集中式系统是什么样的。 集中式系统 集中式系统,主要指IBM、HP一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。而运算、存储等全部在主机上进行,也就是我们平常说的单机服务器。 集中式系统的最大特点就是不熟结构非常简单,底层一般采用IBM、HP等厂商购买的昂贵的大型主机。因此无需要考虑如何对服务进行多节点的部署,也就不用考虑各节点的分布式协作问题。但是,由于采用单机部署、和可能带来系统大而复杂、难于维护、发生单点故障(单个点发生故障的时候会波及到整个系统或者网络,从而导致整个系统或者网络的瘫痪)、扩展性差等问题。 说完集中式系统,再来说一个与分布式很相似的概念-集群 集群 集群是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。用来提供比集中式系统更具扩展性与可用性的服务平台。集群有两个关键的特性: 可扩展性,集群的性能不限于单一的服务实体,新的服务实体可以动态地添加到集群

分布式学习最佳实践:从分布式系统的特征开始(附思维导图)

北战南征 提交于 2019-12-22 04:47:58
    我的探索历程    这一部分,与分布式不大相关,记录的是我是如何在分布式学习这条道路上摸索的,不感兴趣的读者请直接跳到下一章 。     过去的一年,我在分布式 学习 这条道路上苦苦徘徊,始终没有找到一个好的学习方法,一个能激励我持续学习的方法。   当然,我也在不停的反思,最先发现的问题是学习不系统,东看看,西看看,看过就忘。于是写了一篇文章《 带着问题学习分布式系统 》提出了一些问题,然后写了两篇文章来回带自己提出的问题。回过头看,其实这两篇文章都是基于分布式存储的。   然后接下来,又是一段时间的迷茫,不知道要学习啥(也是在学习Paxos的时候遇到了阻碍),偶然看到了关于SMART的一些文章,发现原来自己的学习一点都不SAMRT,所以坚持不下去。于是又写了一篇文章《 带着SMART原则重新出发 》,希望给自己设定SMART的目标,结果被博友打脸“一点都不smart”,而且也被结果打脸了,确实没有让我“重新出发”。   我也曾经在网上搜索,“如何学习分布式系统“,但并没有找到理想的、或者说适合我的学习方法。网上的答案,都是说,看这些论文,看这些系统的实现。。。或者很多大学的课程,都是罗列出一堆术语:概念、协议、组件。而我觉得,逐个去了解这些术语似乎很无聊,因为不知道为什么要这个协议,或者说这些协议、组件是如何组合起来的。   在没有得到适合自己的方案之后,我自己思考

SQL Server 2016 Failover Cluster+ ALwaysOn(三)

折月煮酒 提交于 2019-12-21 23:36:51
SQL Server 2016 Failover Cluster+ ALwaysOn(三) 我们前面两篇文章介绍了SQL Server 2016 Failover Cluster的配置,同时又介绍配置新增AlwaysOn节点的先前条件,今天我们主要介绍Always的详细配置。我们前面已经提到了,如果要实现SQL Server 2016 Failover Cluster+ ALwaysOn,SQL Server Failover Cluster两个节点或者多个节点安装一个SQL 实例,然后ALwaysOn也需要安装一个单独的实例,虽然AlwaysOn节点必须要加入Faillover Cluster中,但是要创建AlwaysOn必须要它和之前的SQL群集实例之间创建AlwaysOn可用性组关系。另外AlwaysOn功能的开启是在实例级设置的,这里一共有2个SQL实例,所以就需要对这2个SQL实例分别进行设置。对于SQL群集实例,在其任一所有者节点上使用SQL Server configuration manager设置一次就可以了(重启SQL服务后生效)。 我们还是继续回顾上面的架构图 接下来我们配置ALwaysOn High Availability,我们发现提示错误,但是有引导我们如何配置 我们通过SSMS右击--AlwayOn High Avaliablity 会有一个提示

22.CAP理论

我只是一个虾纸丫 提交于 2019-12-21 16:39:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> CAP理论有以下两个版本: 第一个版本的解释:对于一个分布式计算系统,不可能同时满足一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三个设计约束。 第二个版本的解释:在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Avaliability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须牺牲。 对比两个版本的定义,有几个很关键的差异: 第二版定义了什么才是CAP理论讨论的分布式系统,强调了两点:interconnected和Share data (连接和数据共享),为何要强调这两点呢?因为分布式系统并不一定会互联和共享数据。最简单的如Memcache集群,相互之间没有连接和数据共享,因此Memcache集群这类分布式系统不符合CAP理论探讨的对象;而Mysql集群就是互联和进行数据复制的,因此是CAP理论讨论的对象。 第二版强调了write/read pair,也就是说,CAP理论关注的是数据的读写操作,而不是分布式系统中的所有功能。如Zookeeper的选举机制就不是CAP探讨的对象。 所以,相比来说,第二版定义更加精确。 一致性

线上Linux服务器优化经验

被刻印的时光 ゝ 提交于 2019-12-18 10:00:59
什么是Linux 服务器? Linux服务器就是采用Linux系统的网络服务器,同时也有采用windows的服务器,作用是类似的。而Linux并不是一个特定的系统,而是使用Linux内核的系统, 现在发行版很多,Red hat是其中一个常用做服务器的发行版。 通常我们可以将服务器看做一台配置功能强大的超级电脑,它也有自己独立的操作系统,其中核心系统以Linux系统为主的服务器,我们都可以称为Linux服务器,在服务器选择时时,我们通常可以根据我们的喜好和操作习惯来选择服务器的操作系统。 Linux服务器是被设计来处理的业务应用,如网络和系统管理,数据库管理和Web服务等,是具备高性能和开源性的一种服务器。 可用性: Linux服务器利用SLES 12利用“永久在线”功能集诱导企业级IT组织使用Linux服务器操作系统,这些功能包括基于Btrfs的快照、热补丁以及高可用性。 SUSE主席Nils Brauckmann表示,SUSE想打造一个可靠的Linux服务器版本,其更新旨在确保连续不间断服务。 l Linux服务器SLES 12热补丁 Linux服务器内核更新需要服务器重新启动,就是说Linux服务器管理员无法给关键业务或基本服务器打补丁。即使几分钟的宕机在企业数据中心中也是无法容忍的。这让很多服务器运行着没打补丁的软件,脆弱易受攻击。热补丁解决了这个问题。

软件架构质量属性之《独孤九剑》

最后都变了- 提交于 2019-12-16 14:29:52
   什么是架构?架构是一个系统的基本组织结构,涵盖所包含的组件、组件之间的关系、组件与环境的关系、以及指导架构设计和演进的原则等内容。经常有人问架构重点需要关注多少属性,我们粗略的可以概括一下九点: 可修改性、可测试性、可扩展性、性能、可用性、安全性、可部署性、共享性。      一、 可修改性   什么是可修改性?可修改性是指一个系统进行修改的容易程度,以及系统适应这些修改的灵活性。   与可修改性相关的几个方面:可读性(readability)、模块化(modularity)、可重用性(reusability)、可维护性(maintainability) 可读性涉及要素:1)写得好。方法、函数、变量、类、模块是否简单明了。2)文档齐全。代码中注释是否齐全。3)结构规整。结构清晰明了、注释简介规范。    提高可读性策略:1.提供显示接口;2.减少双向依赖;3.抽象公共服务;4.使用继承技术;5.使用延迟绑定技术。      二、 可测试性   什么是可测试性?可测试性是指软件系统通过执行基本的测试来暴露其错误的难易程度。   软件测试包括:功能测试(白盒测试、黑盒测试)、性能测试(负载测试、压力测试、可扩展性测试)、安全性测试、可用性测试、安装测试、可访问性测试。   增强可测试性策略:1)降低系统复杂度(子系统)、2)高内聚低耦合、3)提供定义良好的接口、4)降低类的复杂性

Eureka的工作原理以及它与ZooKeeper的区别(菜鸟笔记)

核能气质少年 提交于 2019-12-14 15:08:11
1. 服务启动后向Eureka注册 Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。 当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为 DOWN 状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。 服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。 2.Eureka的自我保护机制 在默认配置中,Eureka Server在默认90s没有得到客户端的心跳,则注销该实例,但是往往因为微服务跨进程调用,网络通信往往会面临着各种问题,比如微服务状态正常,但是因为网络分区故障时,Eureka Server注销服务实例则会让大部分微服务不可用,这很危险,因为服务明明没有问题。 为了解决这个问题,Eureka 有自我保护机制,通过在Eureka Server配置如下参数,可启动保护机制 eureka .server.enable - self -preservation=true

springcloud之CAP原理

蓝咒 提交于 2019-12-14 07:28:25
用来衡量分布式系统架构是否符合要求的重要指导方式.通过一致性,可用性,分区容忍性三个维度,来去衡量一个软件架构. CAP原理 C:一致性 ---多节点数据一致 A:可用性 ---保持服务可用:多节点 P:分区容忍性 ---是否可以将数据存到多个地方 不能同时满足C,A,P AC :放弃分区容忍,物理数据库 AP:可以短暂允许数据不一致 ,nosql数据库 CP:放弃可用性 来源: CSDN 作者: level_Tiller 链接: https://blog.csdn.net/level_Tiller/article/details/103470019

F5

跟風遠走 提交于 2019-12-11 13:31:42
f5负载均衡工作原理详解 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。 均衡负载能够平均分配客户请求到服务器列阵,籍此提供快速获取重要数据,解决大量并发访问服务问题。这种群集技术可以用最少的投资获得接近于大型主机的性能。 1、负载均衡原理图: ①、客户发出服务请求到VIP ②、BIGIP接收到请求,将数据包中目的IP地址改为选中的后台服务器IP地址,然后将数据包发出到后台选定的服务器 ③、后台服务器收到后,将应答包按照其路由发回到BIGIP ④、BIGIP收到应答包后将其中的源地址改回成VIP的地址,发回客户端,由此就完成了一个标准的服务器负载平衡的流程。 2. 负载平衡典型流程 ①、通过VIP来截获合适的需要负载平衡的流量 l ②、服务器监控和健康检查,随时了解服务器群的可用性状态 ③、负载均衡和应用交换功能,通过各种策略导向到合适的服务器 2.1 通过VIP来截获合适的需要负载平衡的流量 在BIGIP上通过设置VIP来截获需要进行负载平衡的流量,这个VIP地址可以是一个独立的主机地址和端口的组合(例如:202.101.112.115:80)也可以是一个网络地址和端口的组合(例如

1 设计过程及评估

。_饼干妹妹 提交于 2019-12-10 17:42:59
1 设计过程及评估 设计开发网站需要仔细考虑与可用性相关的问题、方法和过程。本章将介绍其中的最重 要部分,包括首要问题,例如网站目标清晰准确、用户需求正确全面、网站满足用户期望、可用性目标设定、以及内容有用。 为了确保最佳结果,应当全面考虑用户界面问题,设计最利于人使用的网站。现有研究 认为,构建网站最佳方法是不同人提出解决方案(即并行设计),然后采取迭代设计。这种方法需要进行合适的可用性测试,并利用测试结果改进网站。 1.2 建立用户需求 重要性 ★★★★★ 证据力度 ★★★★☆ 指南:利用所有可用资源更好理解用户需求。 说明:与潜在用户交流越多,越能更好理解用户需求。开发者与用户之间信息交换越多, 网站成功机会越大。交流方式包括客户支持热线、客户调查及访谈、公告牌、销售人员、用户组、展览会、及焦点小组等。成功网站至少需要四个(平均为五个)不同信息来源。不要过多依赖用户中介。 通过与用户交流所得信息,建立用例(Use Case)。用例描述用户需要和想要网站提供 的功能。有项研究中,与传统面向功能的分析方法相比,用例能更好描述用户表现和偏好。 1.3 理解并满足用户期望 重要性 ★★★★★ 证据力度 ★★★☆☆ 指南:确保网站格式满足用户期望,特别是与导航、内容和组织相关的期望。 说明:有项研究发现,用户定义的“可用性”指使用系统完成任务时,用户对一致程度、 效率高低、内容丰富程度