• 关于

    系统响应时间可以做什么

    的搜索结果

回答

Re阿里云服务都不错除了备案 不要拿国家规定做借口,为什么别人就可以做的好。 以前在景安做备案接入根本没这么麻烦,我就用了两个小时上网填资料和寄文件,两周之后拿号,还免费。 你们备案做的什么样子?我搞这个备案搞了一下午了还没明白是怎么回事,不管怎么填资料都是产品信息无效,代备系统登陆页面的“点击了解详情”根本没东西。 今天才收到短信说要阻断,一看15/30号 一个月的时间都不留。而且发短信说“您是老用户赠送您两个SN号”,找来找去也只有200块的号。 我本来是准备换主机到阿里云,硬件还行,客服响应也蛮快 但是做国内IDC的,备案服务做成这个样子真是不敢买,谁知道你们下次什么时候又要“换服务商”

xstarcloud 2019-12-02 03:09:32 0 浏览量 回答数 0

问题

性能测试:软件测试的重中之重

云效平台 2019-12-01 21:45:09 5839 浏览量 回答数 1

问题

健康检查常见问题

行者武松 2019-12-01 21:43:15 3573 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

会话保持常见问题

行者武松 2019-12-01 21:43:17 3972 浏览量 回答数 0

回答

用异步实现,具体可以看下netty或者xsocket,两者都有proxy的实现###### JVM调整只是一方面,最重要的还是从代码入手,使用并发包、NIO等,另外在linux上java程序的性能比在windows上好得多。###### 问题补充说明下: 操作系统:linux   内存:8G  CUP: 两块 JDK:1.5 程序以经没什么可调整的了(我自个觉得,最主要是想从JVM这方面把它往上调,能调多少调多少),现在主要是布署在服务器上我的JVM如何调整认其响应速度更快,就目前,(非专业)我自个测下来的情况下2*24H  400个并发(最起码保证有200个足的并发下),接收请求2亿多次,响应才2千多万多点差不多三千那个样子,这个响应比太小了,能否优化JVM把这一性能再往上走进一步呢,(已试过优化JVM确实能提高,之前没优前更差), 但就目前,本人能力和限优不下去了: -server -Xms2048m -Xmx2048m -Xmn768m -XX:+UseTLAB -XX:+UseParNewGC \ 目前的设置如上,朋友们可否指点指点啊!###### 把JDK升级到1.6,因为支持epoll###### 回头去试试###### 一般来说,考虑性能问题,都先要分析清楚到底性能的瓶颈在哪里,哪几个阶段的性能不够,如何针对这几个阶段进行优化,这样大家也才好给你更具体的建议###### 把JDK升级到1.6,因为支持epoll 试了,JDK换了个1.6的性能确实有了点变化###### 你先把性能瓶颈找到再考虑其他的。 例如你这个例子,2亿多的请求,实际只响应了几千万条,说明程序的处理能力不够,资源不够。导致程序只能处理一部分的请求,多余的请求丢掉了。是每一个请求的处理时间和资源消耗太大,还是说怎么?如果一定要同步的请求和响应,那么如果你认为你程序没问题的话,也就是加资源的问题。CPU,内存,该加的加吧。 如果不一定非要请求响应同步,可以把请求和响应异步起来,这样你的并发就可以达到一个很可关的数字。######        类似的压力己做过,现在我主要的任务是调JVM,因为其它情况下的模拟以经做,最主要原因还是想在现有的硬件配置基础上,把JVM调到最优,对于这个应用而言        之所以才有这么些响应(应该更多一些,请求是人为做的,目的是让程序在里边做处理过滤掉没意义的部分),但按照预测,不应该这么低,在调试中,遇到JVM有崩掉情况,后发现是内存泄漏导致所至,现在主要是想把JVM调到最优化,有相关经验的可否能分享分享###### 个人觉得还是找到瓶颈,有时候一句不正确的代码都有可能使你的内存用光,可以用jprofile调试下

爱吃鱼的程序员 2020-06-03 20:58:28 0 浏览量 回答数 0

回答

在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又 要 藐 视 它。先举个例子感受一下千万级到底是什么数量级?现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右。对于一个后台服务器,单机的平均QPS可以到达800-1000,单独看写的业务量很简单 。为什么我们又不能说轻视它?第一,我们看它的数据存储,每天一百万的话,一年数据量的规模是多少?其次,刚才说的订单量,每一个订单要推送给附近的司机、司机要并发抢单,后面业务场景的访问量往往是前者的上百倍,轻松就超过上亿级别了。 今天我想从架构的本质谈起之后,希望大家理解在做一些建构设计的时候,它的出发点以及它解决的问题是什么。 架构,刚开始的解释是我从知乎上看到的。什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像。更抽象一点,说架构其 实 是 对 我 们 重复性业务 的抽象和我 们 未来 业务 拓展的前瞻,强调过去的经验和你对整个行业的预见。 我们要想做一个架构的话需要哪些能力?我觉得最重要的是架构师一个最重要的能力就是你要有 战 略分解能力。这个怎么来看呢: 第一,你必须要有抽象的能力,抽象的能力最基本就是去重,去重在整个架构中体现在方方面面,从定义一个函数,到定义一个类,到提供的一个服务,以及模板,背后都是要去重提高可复用率。 第二, 分类能力。做软件需要做对象的解耦,要定义对象的属性和方法,做分布式系统的时候要做服务的拆分和模块化,要定义服务的接口和规范。 第三, 算法(性能),它的价值体现在提升系统的性能,所有性能的提升,最终都会落到CPU,内存,IO和网络这4大块上。 这一页PPT举了一些例子来更深入的理解常见技术背后的架构理念。 第一个例子,在分布式系统我们会做 MySQL分 库 分表,我们要从不同的库和表中读取数据,这样的抽象最直观就是使用模板,因为绝大多数SQL语义是相同的,除了路由到哪个库哪个表,如果不使用Proxy中间件,模板就是性价比最高的方法。 第二看一下加速网络的CDN,它是做速度方面的性能提升,刚才我们也提到从CPU、内存、IO、网络四个方面来考虑,CDN本质上一个是做网络智能调度优化,另一个是多级缓存优化。 第三个看一下服务化,刚才已经提到了,各个大网站转型过程中一定会做服务化,其实它就是做抽象和做服务的拆分。第四个看一下消息队列,本质上还是做分类,只不过不是两个边际清晰的类,而是把两个边际不清晰的子系统通过队列解构并且异步化。新浪微博整体架构是什么样的 接下我们看一下微博整体架构,到一定量级的系统整个架构都会变成三层,客户端包括WEB、安卓和IOS,这里就不说了。接着还都会有一个接口层, 有三个主要作用: 第一个作用,要做 安全隔离,因为前端节点都是直接和用户交互,需要防范各种恶意攻击; 第二个还充当着一个 流量控制的作用,大家知道,在2014年春节的时候,微信红包,每分钟8亿多次的请求,其实真正到它后台的请求量,只有十万左右的数量级(这里的数据可能不准),剩余的流量在接口层就被挡住了; 第三,我们看对 PC 端和移 动 端的需求不一样的,所以我们可以进行拆分。接口层之后是后台,可以看到微博后台有三大块: 一个是 平台服 务, 第二, 搜索, 第三, 大数据。到了后台的各种服务其实都是处理的数据。 像平台的业务部门,做的就是 数据存储和读 取,对搜索来说做的是 数据的 检 索,对大数据来说是做的数据的 挖掘。微博其实和淘宝是很类似 微博其实和淘宝是很类似的。一般来说,第一代架构,基本上能支撑到用户到 百万 级别,到第二代架构基本能支撑到 千万 级别都没什么问题,当业务规模到 亿级别时,需要第三代的架构。 从 LAMP 的架构到面向服 务 的架构,有几个地方是非常难的,首先不可能在第一代基础上通过简单的修修补补满足用户量快速增长的,同时线上业务又不能停, 这是我们常说的 在 飞 机上 换 引擎的 问题。前两天我有一个朋友问我,说他在内部推行服务化的时候,把一个模块服务化做完了,其他部门就是不接。我建议在做服务化的时候,首先更多是偏向业务的梳理,同时要找准一个很好的切入点,既有架构和服务化上的提升,业务方也要有收益,比如提升性能或者降低维护成本同时升级过程要平滑,建议开始从原子化服务切入,比如基础的用户服务, 基础的短消息服务,基础的推送服务。 第二,就是可 以做无状 态 服 务,后面会详细讲,还有数据量大了后需要做数据Sharding,后面会将。 第三代 架构 要解决的 问题,就是用户量和业务趋于稳步增加(相对爆发期的指数级增长),更多考虑技术框架的稳定性, 提升系统整体的性能,降低成本,还有对整个系统监控的完善和升级。 大型网站的系统架构是如何演变的 我们通过通过数据看一下它的挑战,PV是在10亿级别,QPS在百万,数据量在千亿级别。我们可用性,就是SLA要求4个9,接口响应最多不能超过150毫秒,线上所有的故障必须得在5分钟内解决完。如果说5分钟没处理呢?那会影响你年终的绩效考核。2015年微博DAU已经过亿。我们系统有上百个微服务,每周会有两次的常规上线和不限次数的紧急上线。我们的挑战都一样,就是数据量,bigger and bigger,用户体验是faster and faster,业务是more and more。互联网业务更多是产品体验驱动, 技 术 在 产 品 体验上最有效的贡献 , 就是你的性能 越来越好 。 每次降低加载一个页面的时间,都可以间接的降低这个页面上用户的流失率。微博的技术挑战和正交分解法解析架构 下面看一下 第三代的 架构 图 以及 我 们 怎么用正交分解法 阐 述。 我们可以看到我们从两个维度,横轴和纵轴可以看到。 一个 维 度 是 水平的 分层 拆分,第二从垂直的维度会做拆分。水平的维度从接口层、到服务层到数据存储层。垂直怎么拆分,会用业务架构、技术架构、监控平台、服务治理等等来处理。我相信到第二代的时候很多架构已经有了业务架构和技术架构的拆分。我们看一下, 接口层有feed、用户关系、通讯接口;服务层,SOA里有基层服务、原子服务和组合服务,在微博我们只有原子服务和组合服务。原子服务不依赖于任何其他服务,组合服务由几个原子服务和自己的业务逻辑构建而成 ,资源层负责海量数据的存储(后面例子会详细讲)。技 术框架解决 独立于 业务 的海量高并发场景下的技术难题,由众多的技术组件共同构建而成 。在接口层,微博使用JERSY框架,帮助你做参数的解析,参数的验证,序列化和反序列化;资源层,主要是缓存、DB相关的各类组件,比如Cache组件和对象库组件。监 控平台和服 务 治理 , 完成系统服务的像素级监控,对分布式系统做提前诊断、预警以及治理。包含了SLA规则的制定、服务监控、服务调用链监控、流量监控、错误异常监控、线上灰度发布上线系统、线上扩容缩容调度系统等。 下面我们讲一下常见的设计原则。 第一个,首先是系统架构三个利器: 一个, 我 们 RPC 服 务组 件 (这里不讲了), 第二个,我们 消息中 间 件 。消息中间件起的作用:可以把两个模块之间的交互异步化,其次可以把不均匀请求流量输出为匀速的输出流量,所以说消息中间件 异步化 解耦 和流量削峰的利器。 第三个是配置管理,它是 代码级灰度发布以及 保障系统降级的利器。 第二个 , 无状态 , 接口 层 最重要的就是无状 态。我们在电商网站购物,在这个过程中很多情况下是有状态的,比如我浏览了哪些商品,为什么大家又常说接口层是无状态的,其实我们把状态从接口层剥离到了数据层。像用户在电商网站购物,选了几件商品,到了哪一步,接口无状态后,状态要么放在缓存中,要么放在数据库中, 其 实 它并不是没有状 态 , 只是在 这 个 过 程中我 们 要把一些有状 态 的 东 西抽离出来 到了数据层。 第三个, 数据 层 比服 务层 更需要 设计,这是一条非常重要的经验。对于服务层来说,可以拿PHP写,明天你可以拿JAVA来写,但是如果你的数据结构开始设计不合理,将来数据结构的改变会花费你数倍的代价,老的数据格式向新的数据格式迁移会让你痛不欲生,既有工作量上的,又有数据迁移跨越的时间周期,有一些甚至需要半年以上。 第四,物理结构与逻辑结构的映射,上一张图看到两个维度切成十二个区间,每个区间代表一个技术领域,这个可以看做我们的逻辑结构。另外,不论后台还是应用层的开发团队,一般都会分几个垂直的业务组加上一个基础技术架构组,这就是从物理组织架构到逻辑的技术架构的完美的映射,精细化团队分工,有利于提高沟通协作的效率 。 第五, www .sanhao.com 的访问过程,我们这个架构图里没有涉及到的,举个例子,比如当你在浏览器输入www.sanhao网址的时候,这个请求在接口层之前发生了什么?首先会查看你本机DNS以及DNS服务,查找域名对应的IP地址,然后发送HTTP请求过去。这个请求首先会到前端的VIP地址(公网服务IP地址),VIP之后还要经过负载均衡器(Nginx服务器),之后才到你的应用接口层。在接口层之前发生了这么多事,可能有用户报一个问题的时候,你通过在接口层查日志根本发现不了问题,原因就是问题可能发生在到达接口层之前了。 第六,我们说分布式系统,它最终的瓶颈会落在哪里呢?前端时间有一个网友跟我讨论的时候,说他们的系统遇到了一个瓶颈, 查遍了CPU,内存,网络,存储,都没有问题。我说你再查一遍,因为最终你不论用上千台服务器还是上万台服务器,最终系统出瓶颈的一定会落在某一台机(可能是叶子节点也可能是核心的节点),一定落在CPU、内存、存储和网络上,最后查出来问题出在一台服务器的网卡带宽上。微博多级双机房缓存架构 接下来我们看一下微博的Feed多级缓存。我们做业务的时候,经常很少做业务分析,技术大会上的分享又都偏向技术架构。其实大家更多的日常工作是需要花费更多时间在业务优化上。这张图是统计微博的信息流前几页的访问比例,像前三页占了97%,在做缓存设计的时候,我们最多只存最近的M条数据。 这里强调的就是做系统设计 要基于用 户 的 场 景 , 越细致越好 。举了一个例子,大家都会用电商,电商在双十一会做全国范围内的活动,他们做设计的时候也会考虑场景的,一个就是购物车,我曾经跟相关开发讨论过,购物车是在双十一之前用户的访问量非常大,就是不停地往里加商品。在真正到双十一那天他不会往购物车加东西了,但是他会频繁的浏览购物车。针对这个场景,活动之前重点设计优化购物车的写场景, 活动开始后优化购物车的读场景。 你看到的微博是由哪些部分聚合而成的呢?最右边的是Feed,就是微博所有关注的人,他们的微博所组成的。微博我们会按照时间顺序把所有关注人的顺序做一个排序。随着业务的发展,除了跟时间序相关的微博还有非时间序的微博,就是会有广告的要求,增加一些广告,还有粉丝头条,就是拿钱买的,热门微博,都会插在其中。分发控制,就是说和一些推荐相关的,我推荐一些相关的好友的微博,我推荐一些你可能没有读过的微博,我推荐一些其他类型的微博。 当然对非时序的微博和分发控制微博,实际会起多个并行的程序来读取,最后同步做统一的聚合。这里稍微分享一下, 从SNS社交领域来看,国内现在做的比较好的三个信息流: 微博 是 基于弱关系的媒体信息流 ; 朋友圈是基于 强 关系的信息流 ; 另外一个做的比 较 好的就是今日 头 条 , 它并不是基于关系来构建信息流 , 而是基于 兴趣和相关性的个性化推荐 信息流 。 信息流的聚合,体现在很多很多的产品之中,除了SNS,电商里也有信息流的聚合的影子。比如搜索一个商品后出来的列表页,它的信息流基本由几部分组成:第一,打广告的;第二个,做一些推荐,热门的商品,其次,才是关键字相关的搜索结果。 信息流 开始的时候 很 简单 , 但是到后期会 发现 , 你的 这 个流 如何做控制分发 , 非常复杂, 微博在最近一两年一直在做 这样 的工作。刚才我们是从业务上分析,那么技术上怎么解决高并发,高性能的问题?微博访问量很大的时候,底层存储是用MySQL数据库,当然也会有其他的。对于查询请求量大的时候,大家知道一定有缓存,可以复用可重用的计算结果。可以看到,发一条微博,我有很多粉丝,他们都会来看我发的内容,所以 微博是最适合使用 缓 存 的系统,微博的读写比例基本在几十比一。微博使用了 双 层缓 存,上面是L1,每个L1上都是一组(包含4-6台机器),左边的框相当于一个机房,右边又是一个机房。在这个系统中L1缓存所起的作用是什么? 首先,L1 缓 存增加整个系 统 的 QPS, 其次 以低成本灵活扩容的方式 增加 系统 的 带宽 。想象一个极端场景,只有一篇博文,但是它的访问量无限增长,其实我们不需要影响L2缓存,因为它的内容存储的量小,但它就是访问量大。这种场景下,你就需要使用L1来扩容提升QPS和带宽瓶颈。另外一个场景,就是L2级缓存发生作用,比如我有一千万个用户,去访问的是一百万个用户的微博 ,这个时候,他不只是说你的吞吐量和访问带宽,就是你要缓存的博文的内容也很多了,这个时候你要考虑缓存的容量, 第二 级缓 存更多的是从容量上来 规划,保证请求以较小的比例 穿透到 后端的 数据 库 中 ,根据你的用户模型你可以估出来,到底有百分之多少的请求不能穿透到DB, 评估这个容量之后,才能更好的评估DB需要多少库,需要承担多大的访问的压力。另外,我们看双机房的话,左边一个,右边一个。 两个机房是互 为 主 备 , 或者互 为热备 。如果两个用户在不同地域,他们访问两个不同机房的时候,假设用户从IDC1过来,因为就近原理,他会访问L1,没有的话才会跑到Master,当在IDC1没找到的时候才会跑到IDC2来找。同时有用户从IDC2访问,也会有请求从L1和Master返回或者到IDC1去查找。 IDC1 和 IDC2 ,两个机房都有全量的用户数据,同时在线提供服务,但是缓存查询又遵循最近访问原理。还有哪些多级缓存的例子呢?CDN是典型的多级缓存。CDN在国内各个地区做了很多节点,比如在杭州市部署一个节点时,在机房里肯定不止一台机器,那么对于一个地区来说,只有几台服务器到源站回源,其他节点都到这几台服务器回源即可,这么看CDN至少也有两级。Local Cache+ 分布式 缓 存,这也是常见的一种策略。有一种场景,分布式缓存并不适用, 比如 单 点 资 源 的爆发性峰值流量,这个时候使用Local Cache + 分布式缓存,Local Cache 在 应用 服 务 器 上用很小的 内存资源 挡住少量的 极端峰值流量,长尾的流量仍然访问分布式缓存,这样的Hybrid缓存架构通过复用众多的应用服务器节点,降低了系统的整体成本。 我们来看一下 Feed 的存 储 架构,微博的博文主要存在MySQL中。首先来看内容表,这个比较简单,每条内容一个索引,每天建一张表,其次看索引表,一共建了两级索引。首先想象一下用户场景,大部分用户刷微博的时候,看的是他关注所有人的微博,然后按时间来排序。仔细分析发现在这个场景下, 跟一个用户的自己的相关性很小了。所以在一级索引的时候会先根据关注的用户,取他们的前条微博ID,然后聚合排序。我们在做哈希(分库分表)的时候,同时考虑了按照UID哈希和按照时间维度。很业务和时间相关性很高的,今天的热点新闻,明天就没热度了,数据的冷热非常明显,这种场景就需要按照时间维度做分表,首先冷热数据做了分离(可以对冷热数据采用不同的存储方案来降低成本),其次, 很容止控制我数据库表的爆炸。像微博如果只按照用户维度区分,那么这个用户所有数据都在一张表里,这张表就是无限增长的,时间长了查询会越来越慢。二级索引,是我们里面一个比较特殊的场景,就是我要快速找到这个人所要发布的某一时段的微博时,通过二级索引快速定位。 分布式服务追踪系统 分布式追踪服务系统,当系统到千万级以后的时候,越来越庞杂,所解决的问题更偏向稳定性,性能和监控。刚才说用户只要有一个请求过来,你可以依赖你的服务RPC1、RPC2,你会发现RPC2又依赖RPC3、RPC4。分布式服务的时候一个痛点,就是说一个请求从用户过来之后,在后台不同的机器之间不停的调用并返回。 当你发现一个问题的时候,这些日志落在不同的机器上,你也不知道问题到底出在哪儿,各个服务之间互相隔离,互相之间没有建立关联。所以导致排查问题基本没有任何手段,就是出了问题没法儿解决。 我们要解决的问题,我们刚才说日志互相隔离,我们就要把它建立联系。建立联系我们就有一个请求ID,然后结合RPC框架, 服务治理功能。假设请求从客户端过来,其中包含一个ID 101,到服务A时仍然带有ID 101,然后调用RPC1的时候也会标识这是101 ,所以需要 一个唯一的 请求 ID 标识 递归迭代的传递到每一个 相关 节点。第二个,你做的时候,你不能说每个地方都加,对业务系统来说需要一个框架来完成这个工作, 这 个框架要 对业务 系 统 是最低侵入原 则 , 用 JAVA 的 话 就可以用 AOP,要做到零侵入的原则,就是对所有相关的中间件打点,从接口层组件(HTTP Client、HTTP Server)至到服务层组件(RPC Client、RPC Server),还有数据访问中间件的,这样业务系统只需要少量的配置信息就可以实现全链路监控 。为什么要用日志?服务化以后,每个服务可以用不同的开发语言, 考虑多种开发语言的兼容性 , 内部定 义标 准化的日志 是唯一且有效的办法。最后,如何构建基于GPS导航的路况监控?我们刚才讲分布式服务追踪。分布式服务追踪能解决的问题, 如果 单一用 户发现问题 后 , 可以通 过请 求 ID 快速找到 发 生 问题 的 节 点在什么,但是并没有解决如何发现问题。我们看现实中比较容易理解的道路监控,每辆车有GPS定位,我想看北京哪儿拥堵的时候,怎么做? 第一个 , 你肯定要知道每个 车 在什么位置,它走到哪儿了。其实可以说每个车上只要有一个标识,加上每一次流动的信息,就可以看到每个车流的位置和方向。 其次如何做 监 控和 报 警,我们怎么能了解道路的流量状况和负载,并及时报警。我们要定义这条街道多宽多高,单位时间可以通行多少辆车,这就是道路的容量。有了道路容量,再有道路的实时流量,我们就可以基于实习路况做预警? 对应于 分布式系 统 的话如何构建? 第一 , 你要 定义 每个服 务节 点它的 SLA A 是多少 ?SLA可以从系统的CPU占用率、内存占用率、磁盘占用率、QPS请求数等来定义,相当于定义系统的容量。 第二个 , 统计 线 上 动态 的流量,你要知道服务的平均QPS、最低QPS和最大QPS,有了流量和容量,就可以对系统做全面的监控和报警。 刚才讲的是理论,实际情况肯定比这个复杂。微博在春节的时候做许多活动,必须保障系统稳定,理论上你只要定义容量和流量就可以。但实际远远不行,为什么?有技术的因素,有人为的因素,因为不同的开发定义的流量和容量指标有主观性,很难全局量化标准,所以真正流量来了以后,你预先评估的系统瓶颈往往不正确。实际中我们在春节前主要采取了三个措施:第一,最简单的就是有降 级 的 预 案,流量超过系统容量后,先把哪些功能砍掉,需要有明确的优先级 。第二个, 线上全链路压测,就是把现在的流量放大到我们平常流量的五倍甚至十倍(比如下线一半的服务器,缩容而不是扩容),看看系统瓶颈最先发生在哪里。我们之前有一些例子,推测系统数据库会先出现瓶颈,但是实测发现是前端的程序先遇到瓶颈。第三,搭建在线 Docker 集群 , 所有业务共享备用的 Docker集群资源,这样可以极大的避免每个业务都预留资源,但是实际上流量没有增长造成的浪费。 总结 接下来说的是如何不停的学习和提升,这里以Java语言为例,首先, 一定要 理解 JAVA;第二步,JAVA完了以后,一定要 理 解 JVM;其次,还要 理解 操作系统;再次还是要了解一下 Design Pattern,这将告诉你怎么把过去的经验抽象沉淀供将来借鉴;还要学习 TCP/IP、 分布式系 统、数据结构和算法。

hiekay 2019-12-02 01:39:25 0 浏览量 回答数 0

问题

(update_non_index/flush_log=0) 响应时间, 95 percentil

kun坤 2020-06-14 13:59:23 0 浏览量 回答数 0

问题

【archsummit 回顾】阿里云章文嵩:构建大型云计算平台分布式技术的实践

云课堂 2019-12-01 21:03:36 14448 浏览量 回答数 9

问题

对Handler的理解:报错

kun坤 2020-06-08 11:03:22 4 浏览量 回答数 1

问题

如何快速掌握性能知识体系,做好性能测试?

云效平台 2019-12-01 21:40:27 4526 浏览量 回答数 0

问题

Nginx性能为什么如此吊

小柒2012 2019-12-01 21:20:47 15038 浏览量 回答数 3

问题

如何优化网站的访问速度

cnsjw 2019-12-01 21:00:50 29372 浏览量 回答数 35

回答

数据可靠性RocketMQ支持异步实时刷盘,同步刷盘,同步Replication,异步ReplicationKafka使用异步刷盘方式,异步Replication/同步Replication总结:RocketMQ的同步刷盘在单机可靠性上比Kafka更高,不会因为操作系统Crash,导致数据丢失。Kafka同步Replication理论上性能低于RocketMQ的同步Replication,原因是Kafka的数据以分区为单位组织,意味着一个Kafka实例上会有几百个数据分区,RocketMQ一个实例上只有一个数据分区,RocketMQ可以充分利用IO Group Commit机制,批量传输数据,配置同步Replication与异步Replication相比,性能损耗约20%~30%,Kafka没有亲自测试过,但是个人认为理论上会低于RocketMQ。性能对比Kafka单机写入TPS约在百万条/秒,消息大小10个字节RocketMQ单机写入TPS单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节总结:Kafka的TPS跑到单机百万,主要是由于Producer端将多个小消息合并,批量发向Broker。RocketMQ为什么没有这么做?Producer通常使用Java语言,缓存过多消息,GC是个很严重的问题Producer调用发送消息接口,消息未发送到Broker,向业务返回成功,此时Producer宕机,会导致消息丢失,业务出错Producer通常为分布式系统,且每台机器都是多线程发送,我们认为线上的系统单个Producer每秒产生的数据量有限,不可能上万。缓存的功能完全可以由上层业务完成。单机支持的队列数Kafka单机超过64个队列/分区,Load会发生明显的飙高现象,队列越多,load越高,发送消息响应时间变长。Kafka分区数无法过多的问题RocketMQ单机支持最高5万个队列,Load不会发生明显变化队列多有什么好处?单机可以创建更多Topic,因为每个Topic都是由一批队列组成Consumer的集群规模和队列数成正比,队列越多,Consumer集群可以越大消息投递实时性Kafka使用短轮询方式,实时性取决于轮询间隔时间,0.8以后版本支持长轮询。RocketMQ使用长轮询,同Push方式实时性一致,消息的投递延时通常在几个毫秒。消费失败重试Kafka消费失败不支持重试。RocketMQ消费失败支持定时重试,每次重试间隔时间顺延总结:例如充值类应用,当前时刻调用运营商网关,充值失败,可能是对方压力过多,稍后再调用就会成功,如支付宝到银行扣款也是类似需求。这里的重试需要可靠的重试,即失败重试的消息不因为Consumer宕机导致丢失。严格的消息顺序Kafka支持消息顺序,但是一台Broker宕机后,就会产生消息乱序RocketMQ支持严格的消息顺序,在顺序消息场景下,一台Broker宕机后,发送消息会失败,但是不会乱序Mysql Binlog分发需要严格的消息顺序定时消息Kafka不支持定时消息RocketMQ支持两类定时消息开源版本RocketMQ仅支持定时Level,定时Level用户可定制阿里云ONS支持定时Level,以及指定的毫秒级别的延时时间分布式事务消息Kafka不支持分布式事务消息阿里云ONS支持分布式定时消息,未来开源版本的RocketMQ也有计划支持分布式事务消息消息查询Kafka不支持消息查询RocketMQ支持根据Message Id查询消息,也支持根据消息内容查询消息(发送消息时指定一个Message Key,任意字符串,例如指定为订单Id)总结:消息查询对于定位消息丢失问题非常有帮助,例如某个订单处理失败,是消息没收到还是收到处理出错了。消息回溯Kafka理论上可以按照Offset来回溯消息RocketMQ支持按照时间来回溯消息,精度毫秒,例如从一天之前的某时某分某秒开始重新消费消息总结:典型业务场景如consumer做订单分析,但是由于程序逻辑或者依赖的系统发生故障等原因,导致今天消费的消息全部无效,需要重新从昨天零点开始消费,那么以时间为起点的消息重放功能对于业务非常有帮助。消费并行度Kafka的消费并行度依赖Topic配置的分区数,如分区数为10,那么最多10台机器来并行消费(每台机器只能开启一个线程),或者一台机器消费(10个线程并行消费)。即消费并行度和分区数一致。RocketMQ消费并行度分两种情况顺序消费方式并行度同Kafka完全一致乱序方式并行度取决于Consumer的线程数,如Topic配置10个队列,10台机器消费,每台机器100个线程,那么并行度为1000。消息轨迹Kafka不支持消息轨迹阿里云ONS支持消息轨迹开发语言友好性Kafka采用Scala编写RocketMQ采用Java语言编写Broker端消息过滤Kafka不支持Broker端的消息过滤RocketMQ支持两种Broker端消息过滤方式根据Message Tag来过滤,相当于子topic概念向服务器上传一段Java代码,可以对消息做任意形式的过滤,甚至可以做Message Body的过滤拆分。消息堆积能力理论上Kafka要比RocketMQ的堆积能力更强,不过RocketMQ单机也可以支持亿级的消息堆积能力,我们认为这个堆积能力已经完全可以满足业务需求。开源社区活跃度Kafka社区更新较慢RocketMQ的github社区有250个个人、公司用户登记了联系方式,QQ群超过1000人。成熟度Kafka在日志领域比较成熟RocketMQ在阿里集团内部有大量的应用在使用,每天都产生海量的消息,并且顺利支持了多次天猫双十一海量消息考验,是数据削峰填谷的利器。

王晨纯 2019-12-02 01:44:21 0 浏览量 回答数 0

问题

运维人员处理云服务器故障方法七七云转载

杨经理 2019-12-01 22:03:10 9677 浏览量 回答数 2

问题

性能测试技术怎么进行?

猫饭先生 2019-12-01 21:26:08 1341 浏览量 回答数 0

回答

说实话这乱七八糟一堆文字我看了两边,然后发现真救不了你. ######回复 @刘子玄:操作系统不管理寄存器,现在都是抢占式多线程操作系统,都是在线程释放资源的时候切换到其他进程的(你调用某些api的时候会发生等待和切换操作,然后保存线程执行环境数据)看一下操作系统原理的书籍就知道了.直接切换那个只有纯正的分时操作系统才会去做.现在估计只剩下大型UNIX了######==######靠时钟中断,硬件一定会定时发起时钟中断,中断服务一定会执行,这样就可以进行调度或做其他事了,中断机制由硬件保证。找书看吧,这些问题不是几句说得清。######谢了######在中断产生时,寄存器压栈,在中断结束后,堆栈的数据弹回到寄存器。###### 寄存器操作是汇编级别的最小操作单元,即使是操作系统也不能够管理寄存器. 是计算机有一些指令,能够自己把所有寄存器保存到一个地方.######计算机基础如此博大精深,几十年高科技结晶,不是三天三夜就能说清的,更何况几句话###### 简单2个字压栈.OS的原理很简单,你可以找一些嵌入式的OS开源代码进行阅读,相信读完2个系统的代码后,就对OS核心部分很清楚了. 挑你的一个问题进行回答:" 操作系统是如何让一个程序在规定时间内执行再准确的暂停了?这是如何控制的?"      感觉你还不清楚调度算法的实现.简单的说:硬件中断将其打断,如果需要1ms的进程调度精度,那么就设置时钟中断为1ms. 你可以看下中断部分的代码.       CPU的PC指针即使软件不去设置它也不是固定不变只能向下跑的.当中断发生的时候,PC指针会自动修改到相应中断向量的物理地址上,并且中断时的重要寄存器的值被硬件自动保存. 于是我们就设置一个时钟中断向量(将这个地址上写入我们的代码函数的地址),每18msPC指针会被自动改到这个地方,在这个地方我们根据调度算法,看是继续执行被打断的线程还是切换到更合适的线程上.  感性上,线程/cpu的运行实际上是非常的不连贯, 中途不断的被各种中断疯狂的打断.尤其高响应的硬实时OS,打断应该更加频繁. 我们想干任何事情都可以在中断处理中去做.        此外除了硬件中断,因为硬件功能都是api提供,so程序代码实际上经常会很频繁调用一些系统API,既然调用了系统api,os也完全可以在系统api执行软中断,执行调度算法,把pc指针移到别处去,不再正常的函数返回了(保存好数据,下次调度它时,模拟这个函数返回,应用程序完全不知道发生了什么). ######一个嵌入式OS的代码不过几千行而已. 看完几个 你就精通OS的实现了.不过"知识改变命运", 懂得越多混得越惨, 个人建议你干点其他能赚钱的事情.底层实现的东西,除了吹牛,提升点技术素质,对赚钱来说毫无用处,面试时都没用!!(实际上现在面试都是看算法)  小正太, 根据赚钱来指导自己学习/背诵什么东西.(很心痛的经验)######回复 @MinGKai:haha.反正比赚1个亿简单多了.######“精通”OS有那么简单么…………######这个你放心,我只会把编程当成毕生的爱好,而不会用作工作。

优选2 2020-06-09 16:14:52 0 浏览量 回答数 0

回答

说实话这乱七八糟一堆文字我看了两边,然后发现真救不了你. ######回复 @刘子玄 : 操作系统不管理寄存器,现在都是抢占式多线程操作系统,都是在线程释放资源的时候切换到其他进程的(你调用某些api的时候会发生等待和切换操作,然后保存线程执行环境数据)看一下操作系统原理的书籍就知道了.直接切换那个只有纯正的分时操作系统才会去做.现在估计只剩下大型UNIX了######= =######靠时钟中断,硬件一定会定时发起时钟中断,中断服务一定会执行,这样就可以进行调度或做其他事了,中断机制由硬件保证。找书看吧,这些问题不是几句说得清。######谢了######在中断产生时,寄存器压栈,在中断结束后,堆栈的数据弹回到寄存器。###### 寄存器操作是汇编级别的最小操作单元,即使是操作系统也不能够管理寄存器. 是计算机有一些指令,能够自己把所有寄存器保存到一个地方. ######计算机基础如此博大精深,几十年高科技结晶,不是三天三夜就能说清的,更何况几句话###### 简单2个字 压栈. OS的原理很简单, 你可以找一些嵌入式的OS开源代码进行阅读, 相信读完2个系统的代码后, 就对OS核心部分很清楚了. 挑你的一个问题进行回答: "操作系统是如何让一个程序在规定时间内执行再准确的暂停了?这是如何控制的?"       感觉你还不清楚调度算法的实现.简单的说: 硬件中断将其打断,如果需要1ms的进程调度精度,那么就设置时钟中断为1ms.  你可以看下中断部分的代码.        CPU的PC指针即使软件不去设置它也不是固定不变只能向下跑的. 当中断发生的时候,PC指针会自动修改到相应中断向量的物理地址上,并且中断时的重要寄存器的值被硬件自动保存.  于是我们就设置一个时钟中断向量(将这个地址上写入我们的代码函数的地址), 每18ms PC指针会被自动改到这个地方,在这个地方 我们根据调度算法, 看是继续执行被打断的线程 还是切换到更合适的线程上.   感性上, 线程/cpu 的运行 实际上是非常的不连贯,  中途不断的被各种中断疯狂的打断. 尤其高响应的硬实时OS,打断应该更加频繁.  我们想干任何事情都可以在中断处理中去做.         此外除了硬件中断, 因为硬件功能都是api提供,so程序代码实际上经常会很频繁调用一些系统API, 既然调用了系统api, os也完全可以在系统api执行软中断, 执行调度算法, 把pc指针移到别处去, 不再正常的函数返回了(保存好数据, 下次调度它时,模拟这个函数返回, 应用程序完全不知道发生了什么). ######一个嵌入式OS的代码不过几千行而已.  看完几个  你就精通OS的实现了. 不过"知识改变命运",  懂得越多混得越惨,  个人建议你干点其他能赚钱的事情. 底层实现的东西, 除了吹牛, 提升点技术素质, 对赚钱来说毫无用处, 面试时都没用!! (实际上现在面试都是看算法)   小正太,  根据赚钱来指导自己学习/背诵 什么东西. (很心痛的经验)######回复 @MinGKai : haha. 反正比赚1个亿简单多了.######“精通”OS有那么简单么…………######这个你放心,我只会把编程当成毕生的爱好,而不会用作工作。

爱吃鱼的程序员 2020-05-30 22:45:50 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档添加解析记录云解析支持的记录类型:点击查看 A记录什么情况下会用到A记录? 答:如果需要将域名指向一个ip地址,就需要添加A记录 A记录的添加方式: 主机记录处填子域名 举例:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内。 记录类型选择“A”记录。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析;如希望实现智能解析效果,除了“默认”线路外,您可以根据访问者来源来指定不同的线路类型来实现智能访问。如果您对解析线路不理解,也可以点击右侧的小问号,会有对线路的含义说明。 记录值为ip地址,只可以填写IPv4地址。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 CNAME记录什么情况下会用到CNAME记录? 答:如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。最常用到CNAME的情况包括:CDN、OSS、WAF、高防IP域名。相同主机记录,可以添加多条CNAME域名,DNS查询时,轮询响应不同CNAME域名。 CNAME记录的添加方式: 主机记录处填子域名 说明:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内,“@”的CNAME会影响到MX记录的正常解析,添加时慎重考虑)。 记录类型选择“CNAME”记录 线路类型 说明:如果只有一个IP地址或CNAME域名,请务必选择“默认”,”默认”为必填项,否则会导致部分用户无法解析; 记录值为CNAME指向的域名。 说明:只可以填写域名,记录生成后会自动在域名后面补一个“.”,这是正常现象。 MX记录什么情况下会用到MX记录? 答:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录 MX记录的添加方式: 主机记录处填子域名 说明:一般情况下是要做xxx@123.com的邮箱,所以主机记录一般是留空的;如果主机记录填mail,邮箱地址会变为xxx@mail.123.com 记录类型为MX。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析,邮件无法收取;MX一般不需要做智能解析,直接默认即可 记录值填写域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级的数值越低,优先级别就越高。 NS记录什么情况下会用到NS记录? 答:如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录 NS记录的添加方式: 主机记录处填子域名 说明:比如需要将www.123.com的解析授权给其他DNS服务器,只需要在主机记录处填写www即可,主机记录“@”不能做NS记录,授权出去的子域名不会影响其他子域名的正常解析 记录类型为NS。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析。 记录值为要授权的DNS服务器域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级不需要填写。 AAAA记录什么情况下会用到AAAA记录? 答:当您希望访问者通过IPv6地址访问您的域名时,可以使用AAAA记录 AAAA记录的添加方式: 主机记录处填子域名 说明:比如需要www.123.com,只需要在主机记录处填写www即可;如果只是想添加123.com的解析,主机记录直接留空,系统会自动填一个“@”到输入框内 记录类型为AAAA。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析 记录值为ip地址,只可以填写IPv6地址。 TTL默认为1分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 SRV记录什么情况下会用到SRV记录? 答:SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理 SRV记录的添加方式: 主机记录处格式为:服务的名字.协议的类型 格式为:服务的名字.协议的类型(例如:_example-server._tcp) 记录类型为SRV线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:优先级 权重 端口 主机名 例如:0 5 5060 sipserver.ccxcn.com.记录生成后会自动在域名后面补一个“.”,这是正常现象 MX优先级不需要填写 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录生效时间越快 CAA记录什么情况下会用到CAA记录? 答:CAA(Certificate Authority Authorization),即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录,可以限定域名颁发的证书和CA(证书颁发机构)之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。 CAA记录的添加方式: 主机记录: @ 记录类型为CAA 线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:[flag] [tag] [value] 举例: 0 issue “ca.example.net” 0 issuewild “example.com”0 iodef “mailto:admin@example.com” 格式说明: flag:认证机构限制标志,取值0或128;tag: 证书属性标签,取值:issue(CA授权任何类型的域名证书),issuewild(CA授权通配符域名证书),iodef(指定CA可报告策略违规)。value:证书颁发机构域名、策略违规报告邮件地址等信息; URL显性/隐性转发什么情况下会用到URL转发显性/隐性? 答:将一个域名指向另外一个已经存在的站点,就需要添加URL记录。 URL转发的添加方式: 以http://test.com 跳转到 http://www.aliyun.com:80/ 为例。 隐性转发: 用的是iframe框架技术,非重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,但地址栏显示当前地址http://test.com 显性转发: 用的是302重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,且地址栏显示目标地址http://www.aliyun.com:80/ 注意: URL转发时记录值不能为IP地址,且不支持泛解析设置。URL转发的目标域名不支持中文域名。 URL转发属于特殊商品,云解析不提供攻击防护服务,如遇攻击黑洞时无法使用URL转发,可以将需要转发的主机记录配置为A或CNAME记录。 根据工信部关于域名跳转服务的政策要求,URL转发功能目前只支持网站有备案号且接入商是万网的域名转发需求(转发前后的域名),网站无备案号或接入商不是万网的域名转发需求暂不支持。

2019-12-01 23:11:31 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档添加解析记录云解析支持的记录类型:点击查看 A记录什么情况下会用到A记录? 答:如果需要将域名指向一个ip地址,就需要添加A记录 A记录的添加方式: 主机记录处填子域名 举例:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内。 记录类型选择“A”记录。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析;如希望实现智能解析效果,除了“默认”线路外,您可以根据访问者来源来指定不同的线路类型来实现智能访问。如果您对解析线路不理解,也可以点击右侧的小问号,会有对线路的含义说明。 记录值为ip地址,只可以填写IPv4地址。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 CNAME记录什么情况下会用到CNAME记录? 答:如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。最常用到CNAME的情况包括:CDN、OSS、WAF、高防IP域名。相同主机记录,可以添加多条CNAME域名,DNS查询时,轮询响应不同CNAME域名。 CNAME记录的添加方式: 主机记录处填子域名 说明:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内,“@”的CNAME会影响到MX记录的正常解析,添加时慎重考虑)。 记录类型选择“CNAME”记录 线路类型 说明:如果只有一个IP地址或CNAME域名,请务必选择“默认”,”默认”为必填项,否则会导致部分用户无法解析; 记录值为CNAME指向的域名。 说明:只可以填写域名,记录生成后会自动在域名后面补一个“.”,这是正常现象。 MX记录什么情况下会用到MX记录? 答:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录 MX记录的添加方式: 主机记录处填子域名 说明:一般情况下是要做xxx@123.com的邮箱,所以主机记录一般是留空的;如果主机记录填mail,邮箱地址会变为xxx@mail.123.com 记录类型为MX。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析,邮件无法收取;MX一般不需要做智能解析,直接默认即可 记录值填写域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级的数值越低,优先级别就越高。 NS记录什么情况下会用到NS记录? 答:如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录 NS记录的添加方式: 主机记录处填子域名 说明:比如需要将www.123.com的解析授权给其他DNS服务器,只需要在主机记录处填写www即可,主机记录“@”不能做NS记录,授权出去的子域名不会影响其他子域名的正常解析 记录类型为NS。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析。 记录值为要授权的DNS服务器域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级不需要填写。 AAAA记录什么情况下会用到AAAA记录? 答:当您希望访问者通过IPv6地址访问您的域名时,可以使用AAAA记录 AAAA记录的添加方式: 主机记录处填子域名 说明:比如需要www.123.com,只需要在主机记录处填写www即可;如果只是想添加123.com的解析,主机记录直接留空,系统会自动填一个“@”到输入框内 记录类型为AAAA。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析 记录值为ip地址,只可以填写IPv6地址。 TTL默认为1分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 SRV记录什么情况下会用到SRV记录? 答:SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理 SRV记录的添加方式: 主机记录处格式为:服务的名字.协议的类型 格式为:服务的名字.协议的类型(例如:_example-server._tcp) 记录类型为SRV线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:优先级 权重 端口 主机名 例如:0 5 5060 sipserver.ccxcn.com.记录生成后会自动在域名后面补一个“.”,这是正常现象 MX优先级不需要填写 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录生效时间越快 CAA记录什么情况下会用到CAA记录? 答:CAA(Certificate Authority Authorization),即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录,可以限定域名颁发的证书和CA(证书颁发机构)之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。 CAA记录的添加方式: 主机记录: @ 记录类型为CAA 线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:[flag] [tag] [value] 举例: 0 issue “ca.example.net” 0 issuewild “example.com”0 iodef “mailto:admin@example.com” 格式说明: flag:认证机构限制标志,取值0或128;tag: 证书属性标签,取值:issue(CA授权任何类型的域名证书),issuewild(CA授权通配符域名证书),iodef(指定CA可报告策略违规)。value:证书颁发机构域名、策略违规报告邮件地址等信息; URL显性/隐性转发什么情况下会用到URL转发显性/隐性? 答:将一个域名指向另外一个已经存在的站点,就需要添加URL记录。 URL转发的添加方式: 以http://test.com 跳转到 http://www.aliyun.com:80/ 为例。 隐性转发: 用的是iframe框架技术,非重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,但地址栏显示当前地址http://test.com 显性转发: 用的是302重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,且地址栏显示目标地址http://www.aliyun.com:80/ 注意: URL转发时记录值不能为IP地址,且不支持泛解析设置。URL转发的目标域名不支持中文域名。 URL转发属于特殊商品,云解析不提供攻击防护服务,如遇攻击黑洞时无法使用URL转发,可以将需要转发的主机记录配置为A或CNAME记录。 根据工信部关于域名跳转服务的政策要求,URL转发功能目前只支持网站有备案号且接入商是万网的域名转发需求(转发前后的域名),网站无备案号或接入商不是万网的域名转发需求暂不支持。

2019-12-01 23:11:31 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档添加解析记录云解析支持的记录类型:点击查看 A记录什么情况下会用到A记录? 答:如果需要将域名指向一个ip地址,就需要添加A记录 A记录的添加方式: 主机记录处填子域名 举例:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内。 记录类型选择“A”记录。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析;如希望实现智能解析效果,除了“默认”线路外,您可以根据访问者来源来指定不同的线路类型来实现智能访问。如果您对解析线路不理解,也可以点击右侧的小问号,会有对线路的含义说明。 记录值为ip地址,只可以填写IPv4地址。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 CNAME记录什么情况下会用到CNAME记录? 答:如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。最常用到CNAME的情况包括:CDN、OSS、WAF、高防IP域名。相同主机记录,可以添加多条CNAME域名,DNS查询时,轮询响应不同CNAME域名。 CNAME记录的添加方式: 主机记录处填子域名 说明:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内,“@”的CNAME会影响到MX记录的正常解析,添加时慎重考虑)。 记录类型选择“CNAME”记录 线路类型 说明:如果只有一个IP地址或CNAME域名,请务必选择“默认”,”默认”为必填项,否则会导致部分用户无法解析; 记录值为CNAME指向的域名。 说明:只可以填写域名,记录生成后会自动在域名后面补一个“.”,这是正常现象。 MX记录什么情况下会用到MX记录? 答:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录 MX记录的添加方式: 主机记录处填子域名 说明:一般情况下是要做xxx@123.com的邮箱,所以主机记录一般是留空的;如果主机记录填mail,邮箱地址会变为xxx@mail.123.com 记录类型为MX。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析,邮件无法收取;MX一般不需要做智能解析,直接默认即可 记录值填写域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级的数值越低,优先级别就越高。 NS记录什么情况下会用到NS记录? 答:如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录 NS记录的添加方式: 主机记录处填子域名 说明:比如需要将www.123.com的解析授权给其他DNS服务器,只需要在主机记录处填写www即可,主机记录“@”不能做NS记录,授权出去的子域名不会影响其他子域名的正常解析 记录类型为NS。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析。 记录值为要授权的DNS服务器域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级不需要填写。 AAAA记录什么情况下会用到AAAA记录? 答:当您希望访问者通过IPv6地址访问您的域名时,可以使用AAAA记录 AAAA记录的添加方式: 主机记录处填子域名 说明:比如需要www.123.com,只需要在主机记录处填写www即可;如果只是想添加123.com的解析,主机记录直接留空,系统会自动填一个“@”到输入框内 记录类型为AAAA。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析 记录值为ip地址,只可以填写IPv6地址。 TTL默认为1分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 SRV记录什么情况下会用到SRV记录? 答:SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理 SRV记录的添加方式: 主机记录处格式为:服务的名字.协议的类型 格式为:服务的名字.协议的类型(例如:_example-server._tcp) 记录类型为SRV线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:优先级 权重 端口 主机名 例如:0 5 5060 sipserver.ccxcn.com.记录生成后会自动在域名后面补一个“.”,这是正常现象 MX优先级不需要填写 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录生效时间越快 CAA记录什么情况下会用到CAA记录? 答:CAA(Certificate Authority Authorization),即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录,可以限定域名颁发的证书和CA(证书颁发机构)之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。 CAA记录的添加方式: 主机记录: @ 记录类型为CAA 线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:[flag] [tag] [value] 举例: 0 issue “ca.example.net” 0 issuewild “example.com”0 iodef “mailto:admin@example.com” 格式说明: flag:认证机构限制标志,取值0或128;tag: 证书属性标签,取值:issue(CA授权任何类型的域名证书),issuewild(CA授权通配符域名证书),iodef(指定CA可报告策略违规)。value:证书颁发机构域名、策略违规报告邮件地址等信息; URL显性/隐性转发什么情况下会用到URL转发显性/隐性? 答:将一个域名指向另外一个已经存在的站点,就需要添加URL记录。 URL转发的添加方式: 以http://test.com 跳转到 http://www.aliyun.com:80/ 为例。 隐性转发: 用的是iframe框架技术,非重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,但地址栏显示当前地址http://test.com 显性转发: 用的是302重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,且地址栏显示目标地址http://www.aliyun.com:80/ 注意: URL转发时记录值不能为IP地址,且不支持泛解析设置。URL转发的目标域名不支持中文域名。 URL转发属于特殊商品,云解析不提供攻击防护服务,如遇攻击黑洞时无法使用URL转发,可以将需要转发的主机记录配置为A或CNAME记录。 根据工信部关于域名跳转服务的政策要求,URL转发功能目前只支持网站有备案号且接入商是万网的域名转发需求(转发前后的域名),网站无备案号或接入商不是万网的域名转发需求暂不支持。

2019-12-01 23:11:31 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档添加解析记录云解析支持的记录类型:点击查看 A记录什么情况下会用到A记录? 答:如果需要将域名指向一个ip地址,就需要添加A记录 A记录的添加方式: 主机记录处填子域名 举例:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内。 记录类型选择“A”记录。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析;如希望实现智能解析效果,除了“默认”线路外,您可以根据访问者来源来指定不同的线路类型来实现智能访问。如果您对解析线路不理解,也可以点击右侧的小问号,会有对线路的含义说明。 记录值为ip地址,只可以填写IPv4地址。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 CNAME记录什么情况下会用到CNAME记录? 答:如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。最常用到CNAME的情况包括:CDN、OSS、WAF、高防IP域名。相同主机记录,可以添加多条CNAME域名,DNS查询时,轮询响应不同CNAME域名。 CNAME记录的添加方式: 主机记录处填子域名 说明:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内,“@”的CNAME会影响到MX记录的正常解析,添加时慎重考虑)。 记录类型选择“CNAME”记录 线路类型 说明:如果只有一个IP地址或CNAME域名,请务必选择“默认”,”默认”为必填项,否则会导致部分用户无法解析; 记录值为CNAME指向的域名。 说明:只可以填写域名,记录生成后会自动在域名后面补一个“.”,这是正常现象。 MX记录什么情况下会用到MX记录? 答:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录 MX记录的添加方式: 主机记录处填子域名 说明:一般情况下是要做xxx@123.com的邮箱,所以主机记录一般是留空的;如果主机记录填mail,邮箱地址会变为xxx@mail.123.com 记录类型为MX。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析,邮件无法收取;MX一般不需要做智能解析,直接默认即可 记录值填写域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级的数值越低,优先级别就越高。 NS记录什么情况下会用到NS记录? 答:如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录 NS记录的添加方式: 主机记录处填子域名 说明:比如需要将www.123.com的解析授权给其他DNS服务器,只需要在主机记录处填写www即可,主机记录“@”不能做NS记录,授权出去的子域名不会影响其他子域名的正常解析 记录类型为NS。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析。 记录值为要授权的DNS服务器域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级不需要填写。 AAAA记录什么情况下会用到AAAA记录? 答:当您希望访问者通过IPv6地址访问您的域名时,可以使用AAAA记录 AAAA记录的添加方式: 主机记录处填子域名 说明:比如需要www.123.com,只需要在主机记录处填写www即可;如果只是想添加123.com的解析,主机记录直接留空,系统会自动填一个“@”到输入框内 记录类型为AAAA。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析 记录值为ip地址,只可以填写IPv6地址。 TTL默认为1分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 SRV记录什么情况下会用到SRV记录? 答:SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理 SRV记录的添加方式: 主机记录处格式为:服务的名字.协议的类型 格式为:服务的名字.协议的类型(例如:_example-server._tcp) 记录类型为SRV线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:优先级 权重 端口 主机名 例如:0 5 5060 sipserver.ccxcn.com.记录生成后会自动在域名后面补一个“.”,这是正常现象 MX优先级不需要填写 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录生效时间越快 CAA记录什么情况下会用到CAA记录? 答:CAA(Certificate Authority Authorization),即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录,可以限定域名颁发的证书和CA(证书颁发机构)之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。 CAA记录的添加方式: 主机记录: @ 记录类型为CAA 线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:[flag] [tag] [value] 举例: 0 issue “ca.example.net” 0 issuewild “example.com”0 iodef “mailto:admin@example.com” 格式说明: flag:认证机构限制标志,取值0或128;tag: 证书属性标签,取值:issue(CA授权任何类型的域名证书),issuewild(CA授权通配符域名证书),iodef(指定CA可报告策略违规)。value:证书颁发机构域名、策略违规报告邮件地址等信息; URL显性/隐性转发什么情况下会用到URL转发显性/隐性? 答:将一个域名指向另外一个已经存在的站点,就需要添加URL记录。 URL转发的添加方式: 以http://test.com 跳转到 http://www.aliyun.com:80/ 为例。 隐性转发: 用的是iframe框架技术,非重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,但地址栏显示当前地址http://test.com 显性转发: 用的是302重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,且地址栏显示目标地址http://www.aliyun.com:80/ 注意: URL转发时记录值不能为IP地址,且不支持泛解析设置。URL转发的目标域名不支持中文域名。 URL转发属于特殊商品,云解析不提供攻击防护服务,如遇攻击黑洞时无法使用URL转发,可以将需要转发的主机记录配置为A或CNAME记录。 根据工信部关于域名跳转服务的政策要求,URL转发功能目前只支持网站有备案号且接入商是万网的域名转发需求(转发前后的域名),网站无备案号或接入商不是万网的域名转发需求暂不支持。

2019-12-01 23:11:31 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档添加解析记录云解析支持的记录类型:点击查看 A记录什么情况下会用到A记录? 答:如果需要将域名指向一个ip地址,就需要添加A记录 A记录的添加方式: 主机记录处填子域名 举例:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内。 记录类型选择“A”记录。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析;如希望实现智能解析效果,除了“默认”线路外,您可以根据访问者来源来指定不同的线路类型来实现智能访问。如果您对解析线路不理解,也可以点击右侧的小问号,会有对线路的含义说明。 记录值为ip地址,只可以填写IPv4地址。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 CNAME记录什么情况下会用到CNAME记录? 答:如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。最常用到CNAME的情况包括:CDN、OSS、WAF、高防IP域名。相同主机记录,可以添加多条CNAME域名,DNS查询时,轮询响应不同CNAME域名。 CNAME记录的添加方式: 主机记录处填子域名 说明:域名为example.com,想通过www.example.com来实现域名访问,只需要在主机记录处填写www即可;如果想通过example.com来实现域名访问,可以主机记录直接留空,系统会自动填一个“@”到输入框内,“@”的CNAME会影响到MX记录的正常解析,添加时慎重考虑)。 记录类型选择“CNAME”记录 线路类型 说明:如果只有一个IP地址或CNAME域名,请务必选择“默认”,”默认”为必填项,否则会导致部分用户无法解析; 记录值为CNAME指向的域名。 说明:只可以填写域名,记录生成后会自动在域名后面补一个“.”,这是正常现象。 MX记录什么情况下会用到MX记录? 答:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录 MX记录的添加方式: 主机记录处填子域名 说明:一般情况下是要做xxx@123.com的邮箱,所以主机记录一般是留空的;如果主机记录填mail,邮箱地址会变为xxx@mail.123.com 记录类型为MX。 线路类型 说明:“默认”为必填项,否则会导致部分用户无法解析,邮件无法收取;MX一般不需要做智能解析,直接默认即可 记录值填写域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级的数值越低,优先级别就越高。 NS记录什么情况下会用到NS记录? 答:如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录 NS记录的添加方式: 主机记录处填子域名 说明:比如需要将www.123.com的解析授权给其他DNS服务器,只需要在主机记录处填写www即可,主机记录“@”不能做NS记录,授权出去的子域名不会影响其他子域名的正常解析 记录类型为NS。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析。 记录值为要授权的DNS服务器域名。 说明:记录生成后会自动在域名后面补一个“.”,这是正常现象。 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快 MX优先级不需要填写。 AAAA记录什么情况下会用到AAAA记录? 答:当您希望访问者通过IPv6地址访问您的域名时,可以使用AAAA记录 AAAA记录的添加方式: 主机记录处填子域名 说明:比如需要www.123.com,只需要在主机记录处填写www即可;如果只是想添加123.com的解析,主机记录直接留空,系统会自动填一个“@”到输入框内 记录类型为AAAA。 线路类型 说明:默认为必填项,否则会导致部分用户无法解析 记录值为ip地址,只可以填写IPv6地址。 TTL默认为1分钟 说明:TTL为缓存时间,数值越小,修改记录各地生效时间越快。 MX优先级不需要填写。 SRV记录什么情况下会用到SRV记录? 答:SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理 SRV记录的添加方式: 主机记录处格式为:服务的名字.协议的类型 格式为:服务的名字.协议的类型(例如:_example-server._tcp) 记录类型为SRV线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:优先级 权重 端口 主机名 例如:0 5 5060 sipserver.ccxcn.com.记录生成后会自动在域名后面补一个“.”,这是正常现象 MX优先级不需要填写 TTL默认为10分钟 说明:TTL为缓存时间,数值越小,修改记录生效时间越快 CAA记录什么情况下会用到CAA记录? 答:CAA(Certificate Authority Authorization),即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录,可以限定域名颁发的证书和CA(证书颁发机构)之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。 CAA记录的添加方式: 主机记录: @ 记录类型为CAA 线路类型(默认为必填项,否则会导致部分用户无法解析) 记录值格式为:[flag] [tag] [value] 举例: 0 issue “ca.example.net” 0 issuewild “example.com”0 iodef “mailto:admin@example.com” 格式说明: flag:认证机构限制标志,取值0或128;tag: 证书属性标签,取值:issue(CA授权任何类型的域名证书),issuewild(CA授权通配符域名证书),iodef(指定CA可报告策略违规)。value:证书颁发机构域名、策略违规报告邮件地址等信息; URL显性/隐性转发什么情况下会用到URL转发显性/隐性? 答:将一个域名指向另外一个已经存在的站点,就需要添加URL记录。 URL转发的添加方式: 以http://test.com 跳转到 http://www.aliyun.com:80/ 为例。 隐性转发: 用的是iframe框架技术,非重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,但地址栏显示当前地址http://test.com 显性转发: 用的是302重定向技术;效果为浏览器地址栏输入http://test.com 回车,打开网站内容是目标地址http://www.aliyun.com:80/ 的网站内容,且地址栏显示目标地址http://www.aliyun.com:80/ 注意: URL转发时记录值不能为IP地址,且不支持泛解析设置。URL转发的目标域名不支持中文域名。 URL转发属于特殊商品,云解析不提供攻击防护服务,如遇攻击黑洞时无法使用URL转发,可以将需要转发的主机记录配置为A或CNAME记录。 根据工信部关于域名跳转服务的政策要求,URL转发功能目前只支持网站有备案号且接入商是万网的域名转发需求(转发前后的域名),网站无备案号或接入商不是万网的域名转发需求暂不支持。

2019-12-01 23:11:31 0 浏览量 回答数 0

问题

如何快速定位云主机的故障

firstsko 2019-12-01 21:43:10 10637 浏览量 回答数 1

回答

分布式事务的解决方案有如下几种: 全局消息基于可靠消息服务的分布式事务TCC最大努力通知方案1:全局事务(DTP模型)全局事务基于DTP模型实现。DTP是由X/Open组织提出的一种分布式事务模型——X/Open Distributed Transaction Processing Reference Model。它规定了要实现分布式事务,需要三种角色: AP:Application 应用系统 它就是我们开发的业务系统,在我们开发的过程中,可以使用资源管理器提供的事务接口来实现分布式事务。 TM:Transaction Manager 事务管理器 分布式事务的实现由事务管理器来完成,它会提供分布式事务的操作接口供我们的业务系统调用。这些接口称为TX接口。事务管理器还管理着所有的资源管理器,通过它们提供的XA接口来同一调度这些资源管理器,以实现分布式事务。DTP只是一套实现分布式事务的规范,并没有定义具体如何实现分布式事务,TM可以采用2PC、3PC、Paxos等协议实现分布式事务。RM:Resource Manager 资源管理器 能够提供数据服务的对象都可以是资源管理器,比如:数据库、消息中间件、缓存等。大部分场景下,数据库即为分布式事务中的资源管理器。资源管理器能够提供单数据库的事务能力,它们通过XA接口,将本数据库的提交、回滚等能力提供给事务管理器调用,以帮助事务管理器实现分布式的事务管理。XA是DTP模型定义的接口,用于向事务管理器提供该资源管理器(该数据库)的提交、回滚等能力。DTP只是一套实现分布式事务的规范,RM具体的实现是由数据库厂商来完成的。有没有基于DTP模型的分布式事务中间件?DTP模型有啥优缺点?方案2:基于可靠消息服务的分布式事务这种实现分布式事务的方式需要通过消息中间件来实现。假设有A和B两个系统,分别可以处理任务A和任务B。此时系统A中存在一个业务流程,需要将任务A和任务B在同一个事务中处理。下面来介绍基于消息中间件来实现这种分布式事务。 title 在系统A处理任务A前,首先向消息中间件发送一条消息消息中间件收到后将该条消息持久化,但并不投递。此时下游系统B仍然不知道该条消息的存在。消息中间件持久化成功后,便向系统A返回一个确认应答;系统A收到确认应答后,则可以开始处理任务A;任务A处理完成后,向消息中间件发送Commit请求。该请求发送完成后,对系统A而言,该事务的处理过程就结束了,此时它可以处理别的任务了。 但commit消息可能会在传输途中丢失,从而消息中间件并不会向系统B投递这条消息,从而系统就会出现不一致性。这个问题由消息中间件的事务回查机制完成,下文会介绍。消息中间件收到Commit指令后,便向系统B投递该消息,从而触发任务B的执行;当任务B执行完成后,系统B向消息中间件返回一个确认应答,告诉消息中间件该消息已经成功消费,此时,这个分布式事务完成。上述过程可以得出如下几个结论: 消息中间件扮演者分布式事务协调者的角色。 系统A完成任务A后,到任务B执行完成之间,会存在一定的时间差。在这个时间差内,整个系统处于数据不一致的状态,但这短暂的不一致性是可以接受的,因为经过短暂的时间后,系统又可以保持数据一致性,满足BASE理论。 上述过程中,如果任务A处理失败,那么需要进入回滚流程,如下图所示: title 若系统A在处理任务A时失败,那么就会向消息中间件发送Rollback请求。和发送Commit请求一样,系统A发完之后便可以认为回滚已经完成,它便可以去做其他的事情。消息中间件收到回滚请求后,直接将该消息丢弃,而不投递给系统B,从而不会触发系统B的任务B。此时系统又处于一致性状态,因为任务A和任务B都没有执行。 上面所介绍的Commit和Rollback都属于理想情况,但在实际系统中,Commit和Rollback指令都有可能在传输途中丢失。那么当出现这种情况的时候,消息中间件是如何保证数据一致性呢?——答案就是超时询问机制。 title 系统A除了实现正常的业务流程外,还需提供一个事务询问的接口,供消息中间件调用。当消息中间件收到一条事务型消息后便开始计时,如果到了超时时间也没收到系统A发来的Commit或Rollback指令的话,就会主动调用系统A提供的事务询问接口询问该系统目前的状态。该接口会返回三种结果: 提交 若获得的状态是“提交”,则将该消息投递给系统B。回滚 若获得的状态是“回滚”,则直接将条消息丢弃。处理中 若获得的状态是“处理中”,则继续等待。消息中间件的超时询问机制能够防止上游系统因在传输过程中丢失Commit/Rollback指令而导致的系统不一致情况,而且能降低上游系统的阻塞时间,上游系统只要发出Commit/Rollback指令后便可以处理其他任务,无需等待确认应答。而Commit/Rollback指令丢失的情况通过超时询问机制来弥补,这样大大降低上游系统的阻塞时间,提升系统的并发度。 下面来说一说消息投递过程的可靠性保证。 当上游系统执行完任务并向消息中间件提交了Commit指令后,便可以处理其他任务了,此时它可以认为事务已经完成,接下来消息中间件一定会保证消息被下游系统成功消费掉!那么这是怎么做到的呢?这由消息中间件的投递流程来保证。 消息中间件向下游系统投递完消息后便进入阻塞等待状态,下游系统便立即进行任务的处理,任务处理完成后便向消息中间件返回应答。消息中间件收到确认应答后便认为该事务处理完毕! 如果消息在投递过程中丢失,或消息的确认应答在返回途中丢失,那么消息中间件在等待确认应答超时之后就会重新投递,直到下游消费者返回消费成功响应为止。当然,一般消息中间件可以设置消息重试的次数和时间间隔,比如:当第一次投递失败后,每隔五分钟重试一次,一共重试3次。如果重试3次之后仍然投递失败,那么这条消息就需要人工干预。 title title 有的同学可能要问:消息投递失败后为什么不回滚消息,而是不断尝试重新投递? 这就涉及到整套分布式事务系统的实现成本问题。 我们知道,当系统A将向消息中间件发送Commit指令后,它便去做别的事情了。如果此时消息投递失败,需要回滚的话,就需要让系统A事先提供回滚接口,这无疑增加了额外的开发成本,业务系统的复杂度也将提高。对于一个业务系统的设计目标是,在保证性能的前提下,最大限度地降低系统复杂度,从而能够降低系统的运维成本。 不知大家是否发现,上游系统A向消息中间件提交Commit/Rollback消息采用的是异步方式,也就是当上游系统提交完消息后便可以去做别的事情,接下来提交、回滚就完全交给消息中间件来完成,并且完全信任消息中间件,认为它一定能正确地完成事务的提交或回滚。然而,消息中间件向下游系统投递消息的过程是同步的。也就是消息中间件将消息投递给下游系统后,它会阻塞等待,等下游系统成功处理完任务返回确认应答后才取消阻塞等待。为什么这两者在设计上是不一致的呢? 首先,上游系统和消息中间件之间采用异步通信是为了提高系统并发度。业务系统直接和用户打交道,用户体验尤为重要,因此这种异步通信方式能够极大程度地降低用户等待时间。此外,异步通信相对于同步通信而言,没有了长时间的阻塞等待,因此系统的并发性也大大增加。但异步通信可能会引起Commit/Rollback指令丢失的问题,这就由消息中间件的超时询问机制来弥补。 那么,消息中间件和下游系统之间为什么要采用同步通信呢? 异步能提升系统性能,但随之会增加系统复杂度;而同步虽然降低系统并发度,但实现成本较低。因此,在对并发度要求不是很高的情况下,或者服务器资源较为充裕的情况下,我们可以选择同步来降低系统的复杂度。 我们知道,消息中间件是一个独立于业务系统的第三方中间件,它不和任何业务系统产生直接的耦合,它也不和用户产生直接的关联,它一般部署在独立的服务器集群上,具有良好的可扩展性,所以不必太过于担心它的性能,如果处理速度无法满足我们的要求,可以增加机器来解决。而且,即使消息中间件处理速度有一定的延迟那也是可以接受的,因为前面所介绍的BASE理论就告诉我们了,我们追求的是最终一致性,而非实时一致性,因此消息中间件产生的时延导致事务短暂的不一致是可以接受的。 方案3:最大努力通知(定期校对)最大努力通知也被称为定期校对,其实在方案二中已经包含,这里再单独介绍,主要是为了知识体系的完整性。这种方案也需要消息中间件的参与,其过程如下: title 上游系统在完成任务后,向消息中间件同步地发送一条消息,确保消息中间件成功持久化这条消息,然后上游系统可以去做别的事情了;消息中间件收到消息后负责将该消息同步投递给相应的下游系统,并触发下游系统的任务执行;当下游系统处理成功后,向消息中间件反馈确认应答,消息中间件便可以将该条消息删除,从而该事务完成。上面是一个理想化的过程,但在实际场景中,往往会出现如下几种意外情况: 消息中间件向下游系统投递消息失败上游系统向消息中间件发送消息失败对于第一种情况,消息中间件具有重试机制,我们可以在消息中间件中设置消息的重试次数和重试时间间隔,对于网络不稳定导致的消息投递失败的情况,往往重试几次后消息便可以成功投递,如果超过了重试的上限仍然投递失败,那么消息中间件不再投递该消息,而是记录在失败消息表中,消息中间件需要提供失败消息的查询接口,下游系统会定期查询失败消息,并将其消费,这就是所谓的“定期校对”。 如果重复投递和定期校对都不能解决问题,往往是因为下游系统出现了严重的错误,此时就需要人工干预。 对于第二种情况,需要在上游系统中建立消息重发机制。可以在上游系统建立一张本地消息表,并将 任务处理过程 和 向本地消息表中插入消息 这两个步骤放在一个本地事务中完成。如果向本地消息表插入消息失败,那么就会触发回滚,之前的任务处理结果就会被取消。如果这量步都执行成功,那么该本地事务就完成了。接下来会有一个专门的消息发送者不断地发送本地消息表中的消息,如果发送失败它会返回重试。当然,也要给消息发送者设置重试的上限,一般而言,达到重试上限仍然发送失败,那就意味着消息中间件出现严重的问题,此时也只有人工干预才能解决问题。 对于不支持事务型消息的消息中间件,如果要实现分布式事务的话,就可以采用这种方式。它能够通过重试机制+定期校对实现分布式事务,但相比于第二种方案,它达到数据一致性的周期较长,而且还需要在上游系统中实现消息重试发布机制,以确保消息成功发布给消息中间件,这无疑增加了业务系统的开发成本,使得业务系统不够纯粹,并且这些额外的业务逻辑无疑会占用业务系统的硬件资源,从而影响性能。 因此,尽量选择支持事务型消息的消息中间件来实现分布式事务,如RocketMQ。 方案4:TCC(两阶段型、补偿型)TCC即为Try Confirm Cancel,它属于补偿型分布式事务。顾名思义,TCC实现分布式事务一共有三个步骤: Try:尝试待执行的业务 这个过程并未执行业务,只是完成所有业务的一致性检查,并预留好执行所需的全部资源Confirm:执行业务 这个过程真正开始执行业务,由于Try阶段已经完成了一致性检查,因此本过程直接执行,而不做任何检查。并且在执行的过程中,会使用到Try阶段预留的业务资源。Cancel:取消执行的业务 若业务执行失败,则进入Cancel阶段,它会释放所有占用的业务资源,并回滚Confirm阶段执行的操作。下面以一个转账的例子来解释下TCC实现分布式事务的过程。 假设用户A用他的账户余额给用户B发一个100元的红包,并且余额系统和红包系统是两个独立的系统。 Try 创建一条转账流水,并将流水的状态设为交易中将用户A的账户中扣除100元(预留业务资源)Try成功之后,便进入Confirm阶段Try过程发生任何异常,均进入Cancel阶段Confirm 向B用户的红包账户中增加100元将流水的状态设为交易已完成Confirm过程发生任何异常,均进入Cancel阶段Confirm过程执行成功,则该事务结束Cancel 将用户A的账户增加100元将流水的状态设为交易失败在传统事务机制中,业务逻辑的执行和事务的处理,是在不同的阶段由不同的部件来完成的:业务逻辑部分访问资源实现数据存储,其处理是由业务系统负责;事务处理部分通过协调资源管理器以实现事务管理,其处理由事务管理器来负责。二者没有太多交互的地方,所以,传统事务管理器的事务处理逻辑,仅需要着眼于事务完成(commit/rollback)阶段,而不必关注业务执行阶段。 TCC全局事务必须基于RM本地事务来实现全局事务TCC服务是由Try/Confirm/Cancel业务构成的, 其Try/Confirm/Cancel业务在执行时,会访问资源管理器(Resource Manager,下文简称RM)来存取数据。这些存取操作,必须要参与RM本地事务,以使其更改的数据要么都commit,要么都rollback。 这一点不难理解,考虑一下如下场景: title 假设图中的服务B没有基于RM本地事务(以RDBS为例,可通过设置auto-commit为true来模拟),那么一旦[B:Try]操作中途执行失败,TCC事务框架后续决定回滚全局事务时,该[B:Cancel]则需要判断[B:Try]中哪些操作已经写到DB、哪些操作还没有写到DB:假设[B:Try]业务有5个写库操作,[B:Cancel]业务则需要逐个判断这5个操作是否生效,并将生效的操作执行反向操作。 不幸的是,由于[B:Cancel]业务也有n(0<=n<=5)个反向的写库操作,此时一旦[B:Cancel]也中途出错,则后续的[B:Cancel]执行任务更加繁重。因为,相比第一次[B:Cancel]操作,后续的[B:Cancel]操作还需要判断先前的[B:Cancel]操作的n(0<=n<=5)个写库中哪几个已经执行、哪几个还没有执行,这就涉及到了幂等性问题。而对幂等性的保障,又很可能还需要涉及额外的写库操作,该写库操作又会因为没有RM本地事务的支持而存在类似问题。。。可想而知,如果不基于RM本地事务,TCC事务框架是无法有效的管理TCC全局事务的。 反之,基于RM本地事务的TCC事务,这种情况则会很容易处理:[B:Try]操作中途执行失败,TCC事务框架将其参与RM本地事务直接rollback即可。后续TCC事务框架决定回滚全局事务时,在知道“[B:Try]操作涉及的RM本地事务已经rollback”的情况下,根本无需执行[B:Cancel]操作。 换句话说,基于RM本地事务实现TCC事务框架时,一个TCC型服务的cancel业务要么执行,要么不执行,不需要考虑部分执行的情况。 TCC事务框架应该提供Confirm/Cancel服务的幂等性保障一般认为,服务的幂等性,是指针对同一个服务的多次(n>1)请求和对它的单次(n=1)请求,二者具有相同的副作用。 在TCC事务模型中,Confirm/Cancel业务可能会被重复调用,其原因很多。比如,全局事务在提交/回滚时会调用各TCC服务的Confirm/Cancel业务逻辑。执行这些Confirm/Cancel业务时,可能会出现如网络中断的故障而使得全局事务不能完成。因此,故障恢复机制后续仍然会重新提交/回滚这些未完成的全局事务,这样就会再次调用参与该全局事务的各TCC服务的Confirm/Cancel业务逻辑。 既然Confirm/Cancel业务可能会被多次调用,就需要保障其幂等性。 那么,应该由TCC事务框架来提供幂等性保障?还是应该由业务系统自行来保障幂等性呢? 个人认为,应该是由TCC事务框架来提供幂等性保障。如果仅仅只是极个别服务存在这个问题的话,那么由业务系统来负责也是可以的;然而,这是一类公共问题,毫无疑问,所有TCC服务的Confirm/Cancel业务存在幂等性问题。TCC服务的公共问题应该由TCC事务框架来解决;而且,考虑一下由业务系统来负责幂等性需要考虑的问题,就会发现,这无疑增大了业务系统的复杂度。

1210119897362579 2019-12-02 00:14:25 0 浏览量 回答数 0

问题

ECS Windows 系统 SVCHOST.EXE进程占用资源(CPU,内存)较高的处理是什么

boxti 2019-12-01 22:06:56 2057 浏览量 回答数 0

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

universitylife 2019-12-01 21:15:34 33359 浏览量 回答数 19

问题

小试用,大学问菜鸟也要知道如何去试用之云服务器测评

universitylife 2019-12-01 21:31:33 15660 浏览量 回答数 10

问题

Web测试方法

技术小菜鸟 2019-12-01 21:41:32 7022 浏览量 回答数 1

回答

MongoDB ACID事务支持 这里要有一定的关系型数据库的事务的概念,不然不一定能理解的了这里说的事务概念。 下面说一说MongoDB的事务支持,这里可能会有疑惑,前面我们在介绍MongoDB时,说MongoDB是一个NoSQL数据库,不支持事务。这里又介绍MongoDB的事务。这里要说明一下MongoDB的事务支持跟关系型数据库的事务支持是两码事,如果你已经非常了解关系型数据库的事务,通过下面一副图对比MongoDB事务跟MySQL事务的不同之处。 MongoDB是如何实现事务的ACID? 1)MongoDB对原子性(Atomicity)的支持 原子性在Mongodb中到底是一个什么概念呢?为什么说支持但又说Mongodb的原子性是单行/文档级原子性,这里提供了一个MongoDB更新语句样例,如下图: MongoDB是如何实现事务的ACID? 更新“username”等于“tj.tang”的文档,更新salary、jobs、hours字段。这里对于这三个字段Mongodb在执行时要么都更新要么都不更新,这个概念在MySQL中可能你没有考虑过,但在MongoDB中由于文档可以嵌套子文档可以很复杂,所以Mongodb的原子性叫单行/文档级原子性。 对于关系型数据库的多行、多文档、多语句原子性目前Mongodb是不支持的,如下情况: MongoDB是如何实现事务的ACID? MongoDB更新条件为工资小于50万的人都把工资调整为50万,这就会牵扯到多文档更新原子性。如果当更新到Frank这个文档时,出现宕机,服务器重启之后是无法像关系型数据库那样做到数据回滚的,也就是说处理这种多文档关系型数据库事务的支持,但MongoDB不支持。那么怎么解决Mongodb这个问题呢?可以通过建模,MongoDB不是范式而是反范式的设计,通过大表和小表可以把相关的数据放到同一个文档中去。然后通过一条语句来执行操作。 2)MongoDB对一致性(consistency)的支持 对于数据一致性来说,传统数据库(单机)跟分布式数据库(MongoDB)对于数据一致性是不太一样的,怎么理解呢?如下图: MongoDB是如何实现事务的ACID? 对于传统型数据库来说,数据一致性主要是在单机上,单机的问题主要是数据进来时的规则检验,数据不能被破坏掉。而在分布式数据库上,因为他们都是多节点分布式的,我们讲的一致性往往就是讲的各个节点之间的数据是否一致。而MongoDB在这点上做的还是不错的,MongoDB支持强一致性或最终一致性(弱一致性),MongoDB的数据一致性也叫可调一致性,什么意思呢?如下图: MongoDB是如何实现事务的ACID? MongoDB的可调一致性,也就是可以自由选择强一致性或最终一致性,如果你的应用场景是前台的方式可以选择强一致性,如果你的应用场景是后台的方式(如报表)可以选择弱一致性。 一致性 上面我们讲到了通过将数据冗余存储到不同的节点来保证数据安全和减轻负载,下面我们来看看这样做引发的一个问题:保证数据在多个节点间的一致性是非常困难的。在实际应用中我们会遇到很多困难,同步节点可能会故障,甚至会无法恢复,网络可能会有延迟或者丢包,网络原因导致集群中的机器被分隔成两个不能互通的子域等等。在NoSQL中,通常有两个层次的一致性:第一种是强一致性,既集群中的所有机器状态同步保持一致。第二种是最终一致性,既可以允许短暂的数据不一致,但数据最终会保持一致。我们先来讲一下,在分布式集群中,为什么最终一致性通常是更合理的选择,然后再来讨论两种一致性的具体实现结节。 关于CAP理论 为什么我们会考虑削弱数据的一致性呢?其实这背后有一个关于分布式系统的理论依据。这个理论最早被Eric Brewer提出,称为CAP理论,尔后Gilbert和Lynch对CAP进行了理论证明。这一理论首先把分布式系统中的三个特性进行了如下归纳: 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。 分区容忍性(P):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务。 而CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。 要保证数据强一致性,最简单的方法是令写操作在所有数据节点上都执行成功才能返回成功,也就是同步概念。而这时如果某个结点出现故障,那么写操作就成功不了了,需要一直等到这个节点恢复。也就是说,如果要保证强一致性,那么就无法提供7×24的高可用性。 而要保证可用性的话,就意味着节点在响应请求时,不用完全考虑整个集群中的数据是否一致。只需要以自己当前的状态进行请求响应。由于并不保证写操作在所有节点都写成功,这可能会导致各个节点的数据状态不一致。 CAP理论导致了最终一致性和强一致性两种选择。当然,事实上还有其它的选择,比如在Yahoo的PNUTS中,采用的就是松散的一致性和弱可用性结合的方法。但是我们讨论的NoSQL系统没有类似的实现,所以我们在后续不会对其进行讨论。 强一致性 强一致性的保证,要求所有数据节点对同一个key值在同一时刻有同样的value值。虽然实际上可能某些节点存储的值是不一样的,但是作为一个整体,当客户端发起对某个key的数据请求时,整个集群对这个key对应的数据会达成一致。下面就举例说明这种一致性是如何实现的。 假设在我们的集群中,一个数据会被备份到N个结点。这N个节点中的某一个可能会扮演协调器的作用。它会保证每一个数据写操作会在成功同步到W个节点后才向客户端返回成功。而当客户端读取数据时,需要至少R个节点返回同样的数据才能返回读操作成功。而NWR之间必须要满足下面关系:R+W>N 下面举个实在的例子。比如我们设定N=3(数据会备份到A、B、C三个结点)。比如值 employee30:salary 当前的值是20000,我们想将其修改为30000。我们设定W=2,下面我们会对A、B、C三个节点发起写操作(employee30:salary, 30000),当A、B两个节点返回写成功后,协调器就会返回给客户端说写成功了。至于节点C,我们可以假设它从来没有收到这个写请求,他保存的依然是20000那个值。之后,当一个协调器执行一个对employee30:salary的读操作时,他还是会发三个请求给A、B、C三个节点: 如果设定R=1,那么当C节点先返回了20000这个值时,那我们客户端实际得到了一个错误的值。 如果设定R=2,则当协调器收到20000和30000两个值时,它会发现数据不太正确,并且会在收到第三个节点的30000的值后判断20000这个值是错误的。 所以如果要保证强一致性,在上面的应用场景中,我们需要设定R=2,W=2 如果写操作不能收到W个节点的成功返回,或者写操作不能得到R个一致的结果。那么协调器可能会在某个设定的过期时间之后向客户端返回操作失败,或者是等到系统慢慢调整到一致。这可能就导致系统暂时处于不可用状态。 对于R和W的不同设定,会导致系统在进行不同操作时需要不同数量的机器节点可用。比如你设定在所有备份节点上都写入才算写成功,既W=N,那么只要有一个备份节点故障,写操作就失败了。一般设定是R+W = N+1,这是保证强一致性的最小设定了。一些强一致性的系统设定W=N,R=1,这样就根本不用考虑各个节点数据可能不一致的情况了。 HBase是借助其底层的HDFS来实现其数据冗余备份的。HDFS采用的就是强一致性保证。在数据没有完全同步到N个节点前,写操作是不会返回成功的。也就是说它的W=N,而读操作只需要读到一个值即可,也就是说它R=1。为了不至于让写操作太慢,对多个节点的写操作是并发异步进行的。在直到所有的节点都收到了新的数据后,会自动执行一个swap操作将新数据写入。这个操作是原子性和一致性的。保证了数据在所有节点有一致的值。 最终一致性 像Voldemort,Cassandra和Riak这些类Dynamo的系统,通常都允许用户按需要设置N,R,W三个值,即使是设置成W+R<= N也是可以的。也就是说他允许用户在强一致性和最终一致性之间自由选择。而在用户选择了最终一致性,或者是W 3)MongoDB对隔离性(isolation)的支持 在关系型数据库中,SQL2定义了四种隔离级别,分别是READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。但是很少有数据库厂商遵循这些标准,比如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ隔离级别。而MySQL支持这全部4种隔离级别。每一种级别都规定了一个事务中所做的修改,哪些在事务内核事务外是可见的,哪些是不可见的。为了尽可能减少事务间的影响,事务隔离级别越高安全性越好但是并发就越差;事务隔离级别越低,事务请求的锁越少,或者保持锁的时间就越短,这也就是为什么绝大多数数据库系统默认的事务隔离级别是RC。 下图展示了几家不同的数据库厂商的不同事物隔离级别。 MongoDB是如何实现事务的ACID? MongoDB在3.2之前使用的是“读未提交”,这种情况下会出现“脏读”。但在MongoDB 3.2开始已经调整为“读已提交”。 下面说说每种隔离级别带来的问题: READ-UNCOMMITTED(读尚未提交的数据) 在这个级别,一个事务的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为“脏读(dirty read)”。这个级别会导致很多问题,从性能上来说,READ UNCOMMITTED不会比其他的级别好太多,但却缺乏其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。 READ-COMMITTED(读已提交的数据) 在这个级别,能满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫“不可重复读(non-repeatable read)”,因为两次执行同样的查询,可能会得到不一样的结果。 REPEATABLE-READ(可重复读) 在这个级别,保证了在同一个事务中多次读取统一记录的结果是一致的。MySQL默认使用这个级别。InnoDB和XtraDB存储引擎通过多版本并发控制MVCC(multiversion concurrency control)解决了“幻读”和“不可重复读”的问题。通过前面的学习我们知道RR级别总是读取事务开始那一刻的快照信息,也就是说这些数据数据库当前状态,这在一些对于数据的时效特别敏感的业务中,就很可能会出问题。 SERIALIZABLE(串行化) 在这个级别,它通过强制事务串行执行,避免了前面说的一系列问题。简单来说,SERIALIZABLE会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。实际应用中也很少在本地事务中使用SERIALIABLE隔离级别,主要应用在InnoDB存储引擎的分布式事务中。 4)MongoDB对持久性(durability)的支持 对于数据持久性来说,在传统数据库中(单机)的表现为服务器任何时候发生宕机都不需要担心数据丢失的问题,因为有方式可以把数据永久保存起来了。一般都是通过日志来保证数据的持久性。通过下图来看一下传统数据库跟MongoDB对于数据持久性各自所使用的方式。 MongoDB是如何实现事务的ACID? 从上图可以看出,MongoDB同样是使用数据进来先写日志(日志刷盘的速度是非常快)然后在写入到数据库中的这种方式来保证数据的持久性,如果出现服务器宕机,当启动服务器时会从日志中读取数据。不同的是传统数据库这种方式叫做“WAL” Write-Ahead Logging(预写日志系统),而MongoDB叫做“journal”。此外MongoDB在数据持久性上这点可能做的更好,MongoDB的复制默认节点就是三节点以上的复制集群,当数据到达主节点之后会马上同步到从节点上去。

景凌凯 2019-12-02 02:05:12 0 浏览量 回答数 0

问题

Node.js 应该处于技术架构中的哪个位置?

李博 bluemind 2019-12-01 21:47:42 2961 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅