可用性测试

activemq 高可用性测试-Replicated LevelDB

白昼怎懂夜的黑 提交于 2020-04-22 04:20:08
Synopsis The Replicated LevelDB Store uses Apache ZooKeeper to pick a master from a set of broker nodes configured to replicate a LevelDB Store. Then synchronizes all slave LevelDB Stores with the master keeps them up to date by replicating all updates from the master. The Replicated LevelDB Store uses the same data files as a LevelDB Store, so you can switch a broker configuration between replicated and non replicated whenever you want. Version Compatibility Available as of ActiveMQ 5.9.0. How it works. It uses Apache ZooKeeper to coordinate which node in the cluster becomes the master. The

详解Session分布式共享(.NET CORE版)

感情迁移 提交于 2020-03-29 00:56:06
一、前言&回顾 在上篇文章 Session分布式共享 = Session + Redis + Nginx 中,好多同学留言问了我好多问题,其中印象深刻的有:nginx挂了怎么办?采用Redis的Session方案与微软Session方案相比,有什么优势呢?Cookie也可以取代Session的,采用Redis的Session方案优势在哪里?Nginx的iphash方式到底是什么?MachineKey有啥用?Net Core怎样实现? 那会儿看到大家的提问,我的回答也只是从应用层面回答,基本上的回答可以总结为:“别人这么做了,解决了这个问题,我用这个方法也解决了这个问题,原理请看链接。”很惭愧的说,那时的我并没有完全理解他真正的优势在哪里,只是凭着直觉和经验知道这样做比较好,知道当一部分东西不可控时候,将其解耦、可视化、集群就可以让一个系统更加健壮,但没有一个理论支撑。经过最近一段时间的查阅资料和阅读书籍,对此有了深刻理解,本文将从网站架构的可用性角度对这种Session共享进行分析和讲解,并用.net core再次实现这种架构模式。(Session分布式共享的net core版,因为工作没有机会应用到生产环境,过往经验就更别提了,所以只是研究性的,请大家注意,但园子里早有大牛写出了相关文章,本文结束会将相关文章贴出) 二、网站可用性--Session管理

网站架构的高可用性总结

和自甴很熟 提交于 2020-03-13 05:41:54
一、产品发布与测试: 1、产品的发布测试:自测---公测--预发布测试---典型逻辑案例测试---正式发布(灰度发布); 2、互联网产品一周发布一次,机制:每周四发布(前三天产品研发,周四发布,如有问题,周五解决问题;); 3、灰度发布测试,采取部分服务器先发布,没有任何问题,产品在所有服务器上部署;(AB版本测试); 4、自动化测试(目前研发团队实力无法做大,期待更完善的研发团队) 二、产品发布要求: 1、没有监控功能的产品或者功能模块,不允许发布; 监控:用户行为监控(客户端:百度统计等,服务端)、服务器性能监控(工具:Ganglia)、运行数据报告; 三、代码控制: 1、代码版本控制工具:SVN、GIT; 主要采取:主干发布,分支开发; 四、产品架构的高可用性: 1、网站可用性的度量和考核; 可用性度量:2个9是基本可用,网站年度不可用时间不超过88小时;3个9是较高可用,网站年度不可用时间不超过9小时,4个9是具有自动恢复能力的的高可用,网站年度 不可用时间不超过53分钟(QQ是4个9);5个9是极高可用性,网站年度不可用时间不超过5分钟。 可用性考核:对外是服务承诺,对内是考核指标;(互联网公司,网站可用性与工程师、架构师的绩效关联); 高可用的应用:负载均衡 + 集群;集群中的用户上下文:单独的Session(也可以是redis)管理,利用redis解决用户上下文问题

分析可用性和可修改性战术

时光怂恿深爱的人放手 提交于 2020-03-13 05:39:47
  这周我们学习这两个方面的内容了。老师上课的时候讲到了可用性和可修改战术。可用性战术将会阻止错误发展为故障,或者至少能够把错误的影响限制在一定范围内,从而使系统恢复成为可能。可修改性战术的目标是控制实现、测试和部署变更的时间和成本。 然后提到了《大型网站技术架构:核心原理与案例分析》第五、六、七章,通过对这三章的扩展阅读,对可用性和易用性战术也有了一些自己的认识。对于自己之的程序也有了新的认识,当时觉得网站已经很好了,现在想想,很多实际的功能还有不完善的地方以及有很多的bug没有提示也没有解决方案。根据文章中的内容,我们需要从可用性,易用性,可扩展性方面着手。 首先我们了解一些可用性。可用性与系统故障及其相关后果有关。网站的页面功能完整呈现在最终用户面前,需要经过很多个环节,任何一个环节出了问题,都可能导致网站页面不可访问。要保证一个网站永远安全几乎是一件不可能完成的使命。网站不可用也被称作网站故障。当系统不再提供其规范中所说明的服务时,就出现了系统故障。系统的用户可以观察到此类故障。有两个著名的例子。书中有两个涉及到可用性崩溃的较为著名的例子,一是2010年1月12日,百度被黑客攻击,其DNS域名被劫持,导致百度全站长达数小时不可访问。2011年4月12日,亚马逊云计算服务EC2发生故障,其ESB服务不可用,故障持续了数天,最终还是有部分数据未能恢复。 对于实发性的项目

可用性测试的五点思考

醉酒当歌 提交于 2020-02-29 03:53:35
   可用性测试 (Usability testing)是用来评估产品或系统的一种方法,这种方法起源于经典的实验学,可以进行复杂的 大样本测试 ,也可以进行简单的 小样本定性测试 。关于 可用性测试 的具体内容(5W+1H),网上已经有很多资料,包括中文和英文。我想了下,在这里,还是不再写普适性的科普文章,而是决定从近期做的 可用性测试 项目中提取一些个人思考,来与大家分享。   这些思考将分为五个点:(1) 预测试 ;(2)尽可能邀请相关方参与;(3)及时 调整脚本 ;(4)可用性问题的优先级排列;(5)注意用户的正面评价。其中(1)和(2)是可用性测试之前的准备,(3)是 可用性测试 中需要注意的,(4)和(5)是 可用性测试 结束后需要注意的。下面将按 照可用性测试 前、中、后分别进行概述。    可用性测试 之前   预测试   预测试是在正式 可用性测试 之前安排的一场模拟测试。进行 预测试 的主要目的在于确保测试中的硬件和软件是否 正常运行 、 脚本 是否清晰、任务是否可行、访谈的问题设计是否合理和清晰等。如果遇到这些问题,要及时进行调整和修改,这样可以避免一些 无效的测试 或可能出现的错误,从而降低时间成本。    预测试 可以找身边的同事,但这个同事不能是参与产品开发和设计的相关人员,可以考虑行政、后勤等非产品相关人员, 测试和访谈

面向使用的软件设计随笔07

随声附和 提交于 2020-02-07 22:19:25
  怎样才能满足对可用性日益增长的需求?软件可用性可以通过许多途径加以改进,但人们普遍使用的是其中几种比较成熟的方法。最受人们欢迎和广泛使用的方法有可用性测试、风格指南及标准、专家咨询和反复原型设计。尽管这些方法往往是有效的,但它们都有很大的不足。   改进软件可用性方面最常用的方法是可用性测试。可用性测试是以人们熟悉和广泛传授的标准技术为基础的。测试可以在可用性测试实验室中在受控条件下进行,或者是在日常工作条件下通过现场测试来进行。可用性测试的实验室方法和现场方法各有长处和不足,在时间和预算允许的情况下,最好结合在一起使用。如果运用得当,实验室和现场可用性测试方法都会成为改进软件可用性的有效手段,但它们都有各自的严重局限。可用性测试是一种改进软件可用性的有效手段,但高质量不是靠测试得到的。所有测试技术的最大问题是它们往往是在产品开发过程后期才进行。要进行测试,必须要有一个东西可以测试,通常这要求已经有一个正在开发的可以使用的系统、一个相对完整的模拟系统或者能够充分运转的原型。发现和改正任何软件缺陷的成本是随时间增加的。一旦系统交付使用,发现和改正缺陷的成本将会大幅度增加。为了改进质量,通过更有效地运用更好的方法去防止缺陷远比缺陷检测和清除更加高效和划算。   可用性测试经常避免不了这样一种情况 ,即无论测试如何细致入微和富有成果,其结果往往不尽如人意。对于开发过程来说

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-03 02:27:34
这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的 步骤 这一篇依然使用step by step的方式介绍怎麽搭建AlwaysOn 请先使用本地用户Administrator登录这两个集群节点并执行下面的操作,先不要用域用户DCADMIN登录 1、两个集群节点都需先安装.NET Framework 3.5(在Windows Server 2012 R2中使用添加功能来安装)。 2、各个集群节点本地都要准备好相关软件,在各个节点上独立安装SQL Server 2012(不能使用群集方式安装),保证各个节点中使用相同的安装目录结构和排序规则! 选择全新SQL Server独立安装,不要选择新的SQL Server故障转移集群安装 至于安装过程,默认下一步下一步就可以了,跟单机安装SQL Server没有区别,这里就忽略安装过程了 注意:因为本人的安装包已经 自带SP1补丁包 ,为了后续避免踩坑,如果没有安装SP1或以上补丁包的,请先安装 注意:如果一开始使用域用户DCADMIN来登录集群节点机器,并安装SQL Server的时候会遇到一个坑,SQL Server安装程序会连接故障转移集群,但是实际上单机安装SQL Server根本不需要连接故障转移集群 本人排查了很久都找不到原因

kafka集群并测试其高可用性

廉价感情. 提交于 2019-12-03 01:35:00
kafka集群并测试其高可用性 介绍 Kafka 是由 Apache软件基金会 开发的一个开源流处理平台,由 Scala 和 Java 编写。Kafka是一种高吞吐量的 分布式 发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像 Hadoop 一样的 日志 数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过 Hadoop 的并行加载机制来统一线上和离线的消息处理,也是为了通过 集群 来提供实时的消息。 一、KAFKA 体系结构图: Producer: 生产者,也就是发送消息的一方。生产者负责创建消息,通过zookeeper找到broker,然后将其投递到 Kafka 中。 Consumer: 消费者,也就是接收消息的一方。通过zookeeper找对应的broker 进行消费,进而进行相应的业务逻辑处理。 Broker: 服务代理节点。对于 Kafka 而言,Broker 可以简单地看作一个独立的 Kafka 服务节点或 Kafka 服务实例。大多数情况下也可以将 Broker 看作一台 Kafka 服务器,前提是这台服务器上只部署了一个 Kafka 实例。一个或多个

并发到底带来了什么问题?

青春壹個敷衍的年華 提交于 2019-12-01 09:43:38
说在前面 我曾不止一次听说过这句话: “十个女人无法在一个月内生出孩子” 我明白这句话的意思,用来形容我们的开发工作需要循序渐进,没有办法简单的增加人员就能加快研发速度。 这句话也经常被用于反驳产品经理或者老板,试图让他们明白我们内心所表达的观点,老实说我也说过这样的话,当时还觉得挺有道理,现在想来可能有些一厢情愿了。 没错,在现实世界中,当然不可能在一个月内生出孩子,但我们毕竟是做产品写代码的,而不是真的要去生孩子,所以这种说法未免有点偷换概念。 我并不是较真,如果只是想让产品经理明白我们所要表达的观点,我们完全可以用其他的比喻,如实反馈存在的困难与问题即可。 言归正传,这句话与本文有什么关系呢?本文想要就“并发”所带来的问题进行探讨,相信看完后你会对此有一个感觉。 与我之前写的几篇文章一样,并发一词在本文中所表达的意思是: “在分布式环境下,超过一个线程同时对同一个状态进行访问和变更所导致的一致性问题和可用性问题” 问题的根源:状态 我无法给出一个百分比数据用以说明到底有多少后端应用程序在使用数据库,但我想国内涉及到增删查改之类的各种“管理系统”应该不在少数。 说到底,增删改查是落地,而怎么落地则取决于业务的需要,也就是说,业务规则以及流程表达了我们的逻辑,但终究离不开柴米油盐(增删改查)。 那么什么是状态? 它可以是文件,也可以是数据库,可以是一个变量,也可以是缓存

史上最全的后端技术大全,你都了解哪些技术呢?

做~自己de王妃 提交于 2019-11-28 15:43:30
| 导语 工欲善其事,必先利其器; 士欲宣其义,必先读其书。 后台开发作为互联网技术领域的掌上明珠,一直都是开发者们的追逐的高峰。 本文将从后台开发所涉及到的技术术语出发,基于系统开发、架构设计、网络通信等几个方面让大家对后台 开 发有一个清晰的了解,讲解全面易懂。 系统开发 1. 高内聚/低耦合 高内聚指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。 模块的内聚反映模块内部联系的紧密程度。 模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。一个完整的系统,模块与模块之间,尽可能的使其独立存在。 通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。 2. 过度设计 过度设计就是进行了过多的面向未来的设计或者说把相对简单的事情想复杂了,过度追求模块化、可扩展性、设计模式等,为系统增加了不必要的复杂度。 3. 过早优化 过早指的不是在开发过程的早期,而是在还没弄清楚需求未来的变化的走向的时候。你的优化不仅可能导致你无法很好地实现新的需求,而且你对优化的预期的猜测有可能还是错的,导致实际上你除了把代码变复杂以外什么都没得到。 正确的方法是, 先有质量地实现你的需求,写够testcase,然后做profile去找到性能的瓶颈,这个时候才做优化。 4. 重构