首页 文章 精选 留言 我的

精选列表

搜索[图像理解],共10000篇文章
优秀的个人博客,低调大师

理解Eureka的自我保护模式

本文我们来探讨Eureka的自我保护模式。自我保护模式是Eureka的重要特性。进入自我保护模式最直观的体现,是Eureka Server首页输出的警告,如图4-10所示。 4-10 保护模式.png 图4-10 Eureka Server自我保护模式界面 默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。 Eureka通过“自我保护模式”来解决这个问题——当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。 综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。 在Spring Cloud中,可以使用eureka.server.enable-self-preservation = false 禁用自我保护模式。 拓展阅读 (1) Eureka官方关于自我保护模式的介绍: https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication (2) Eureka的FAQ,其中讲到了自我保护模式: https://github.com/Netflix/eureka/wiki/FAQ (3) Eureka与Zookeeper做服务发现的对比: http://dockone.io/article/78 (4) Eureka不注销任何微服务的讨论: http://stackoverflow.com/questions/32616329/eureka-never-unregisters-a-service 节选自《Spring Cloud与Docker实战微服务》 目录详见:[http://www.itmuch.com/advertisment/my-spring-book/] 本文链接: http://www.itmuch.com/spring-cloud-sum/understanding-eureka-self-preservation/ **版权声明: **本博客由周立创作,采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。(http://www.itmuch.com/advertisment/my-spring-book/)

优秀的个人博客,低调大师

深入理解Android的渲染机制

基础知识 CPU:中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps、Drawables等都是一起打包到统一的纹理)。 GPU:一个类似于CPU的专门用来处理Graphics的处理器, 作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。 OpenGL ES:是手持嵌入式设备的3DAPI,跨平台的、功能完善的2D和3D图形应用程序接口API,有一套固定渲染管线流程. OpenGL ES详解 DisplayList在Android把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。 格栅化是 将图片等矢量资源,转化为一格格像素点的像素图,显示到屏幕上。 垂直同步VSYNC:让显卡的运算和显示器刷新率一致以稳定输出的画面质量。它告知GPU在载入新帧之前,要等待屏幕绘制完成前一帧。下面的三张图分别是GPU和硬件同步所发生的情况,Refresh Rate:屏幕一秒内刷新屏幕的次数,由硬件决定,例如60Hz.而Frame Rate:GPU一秒绘制操作的帧数,单位是30fps,正常情况过程图如下: 渲染机制分析 渲染流程简介 Android整体的绘制流程如下: UI对象—->CPU处理为多维图形,纹理 —–通过OpeGL ES接口调用GPU—-> GPU对图进行光栅化(Frame Rate ) —->硬件时钟(Refresh Rate)—-垂直同步—->投射到屏幕 Android系统每隔16ms发出VSYNC信号(1000ms/60=16.66ms),触发对UI进行渲染, 如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着计算渲染的大多数操作都必须在16ms内完成。 渲染时间线 正常情况下Android的GPU会在16ms完成页面的绘制,如果一帧画面渲染时间超过16ms的时候,垂直同步机制会让显示器硬件 等待GPU完成栅格化渲染操作,然后再次绘制界面,这样就会看起来画面停顿。 当GPU渲染速度过慢,就会导致如下情况,某些帧显示的画面内容就会与上一帧的画面相同。 渲染常见问题 GPU过度绘制 OverDraw是开发中常见的优化点,是指一个界面出现层层绘制的情况,如: 我们可以使用一些第三方工具来查看是否过渡绘制。如小米魅族。 任何时候View中的绘制内容发生变化时,都会重新执行创建DisplayList,渲染DisplayList,更新到屏幕上等一 系列操作。这个流程的表现性能取决于你的View的复杂程度,View的状态变化以及渲染管道的执行性能。 当View的大小发生改变,DisplayList就会重新创建,然后再渲染,而当View发生位移,则DisplayList不会重新创建,而是执行重新渲染的操作。 所以当界面过于复杂的时候,DisplayList绘制界面就会出现延迟而造成卡顿。 我们可以使用渲染工具检测,工具中,不同手机呈现方式可能会有差别.分别关于StatusBar,NavBar,激活的程序Activity区域的GPU Rending信息。激活的程序Activity区域的GPU Rending信息。 我们打开手机的GPU Rending呈现的信息,我们以魅族为例: 说明:每一条柱状线都包含三部分, 蓝色代表测量绘制Display List的时间, 红色代表OpenGL渲染Display List所需要的时间, 黄色代表CPU等待GPU处理的时间。 Android渲染优化 读懂Android的渲染机制对于优化,特别是在写布局的时候是很有帮助的。减少布局层级,减少GPU的渲染这对我们提供app的质量是很有帮助的。 去掉不必要的界面: 布局层级优化 使用Hierarchy Viewer工具可以查看界面的层级,关于这块的介绍请查看我之前的博客:Android布局优化 当然Android在某些系统版本也增加了检测overdraw的工具。如Android 在4。2版本中增加了Debug GPU Overdraw选项,如果你用的是Jelly Bean 4.3 或者 KitKat 设备,在屏幕的左下角会有一个计数展示屏幕overdraw的程度。 另一种查看overdraw的方式是在Debug GPU overdraw菜单里选择“Show Overdraw areas”选项。选择之后,会在app的不同区域覆盖不同的颜色来表示overdraw的次数。比较屏幕上这些不同的颜色,可以快速方便的定位overdraw问题。 图片格式选择 Android的界面能用png最好是用png了,因为32位的png颜色过渡平滑且支持透明。jpg是像素化压缩过的图片,质量已经下降了,再拿来做9path的按钮和平铺拉伸的控件必然惨不忍睹,要尽量避免。有条件的可以选择webpp,这种格式的图片占据的大小比较小,并且能满足手机显示的需要。 当背景无法避免,尽量用Color.TRANSPARENT 因为透明色Color.TRANSPARENT是不会被渲染的,他是透明的。 所以我们在设置界面的时候需要做一个判断: Beanbean=list.get(i); if(bean.img==0){ Picasso.with(getContext()).load(android.R.color.transparent).into(holder.imageView); holder.imageView.setBackgroundColor(bean.backPic); }else{ Picasso.with(getContext()).load(bean.img).into(holder.imageView); holder.imageView.setBackgroundColor(Color.TRANSPARENT); } 本文作者:佚名 来源:51CTO

优秀的个人博客,低调大师

深入理解Flink核心技术

Flink项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多的人关注Flink项目。本文将深入分析Flink一些关键的技术与特性,希望能够帮助读者对Flink有更加深入的了解,对其他大数据系统的开发者也能有所裨益。 注:本文假设读者对MapReduce,Spark及Storm等大数据处理系统有基本了解,同时熟悉流处理与批处理的基本概念。36大数据(http://www.36dsj.com/) Flink简介 Flink的核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布,数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以方便用户编写分布式任务: 1. DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便的采用Flink提供的各种操作符对分布式数据集进行各种操作,支持Java,Scala和Python。 2. DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便的采用Flink提供的各种操作符对分布式数据流进行各种操作,支持Java和Scala。 3. Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过Flink提供的类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。 此外,Flink还针对特定的应用领域提供了领域库,例如: 1. Flink ML,Flink的机器学习库,提供了机器学习Pipelines API以及很多的机器学习算法实现。 2. Gelly,Flink的图计算库,提供了图计算的相关API以及很多的图计算算法实现。 Flink的技术栈如下图所示:36大数据(http://www.36dsj.com/) 图1 Flink技术栈 此外,Flink也可以方便地和其他的Hadoop生态圈的项目集成,例如,Flink可以读取存储在HDFS或HBase中的静态数据,以Kafka作为流式的数据源,直接重用MapReduce/Storm代码,或是通过YARN申请集群资源等等。 统一的批处理与流处理系统 在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据项目一般会被设计为只能处理其中一种任务,例如Apache Storm,Apache Smaza只支持流处理任务,而Aapche MapReduce, Apache Tez,Apache Spark只支持批处理任务。 Spark Streaming是Apache Spark之上支持流处理任务的子系统,看似一个特例,实则不然。Spark Streaming采用了一种micro-batch的架构,即将输入的数据流切分成细粒度的batch数据,对于每一个batch数据,以此为输入提交一个批处理Spark任务,所以Spark Streaming本质上还是基于Spark批处理系统对流式数据进行处理,和Apache Storm,Apache Smaza等完全流式的数据处理方式完全不同。Flink能够同时处理批处理任务与流处理任务,其灵活的执行引擎支持完全原生的批量的数据处理和流式的数据处理。 在执行引擎这一层,流处理系统与批处理系统最大的不同在于节点间数据传输的方式。对于一个流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理。而对于一个批处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,并不会立刻通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘上,当所有数据都被处理完成后,才开始将处理后的数据通过网络传输到下一个节点。36大数据(http://www.36dsj.com/) 这两种数据传输模式是两个极端,对应的是流处理系统对低延迟的要求和批处理系统对高吞吐量的要求。Flink的执行引擎采用了一种十分灵活的方式,同时支持了这两种数据传输模型。Flink以固定的缓存块为单位进行网络数据传输,用户可以通过缓存块超时值指定缓存块的传输时机。如果缓存块的超时值为0,则Flink的数据传输方式类似上面提到的流处理系统的标准模型,此时系统可以获得最低的处理延迟。 如果缓存块的超时值为无限大,则Flink的数据传输方式类似上面提到的批处理系统的标准模型,此时系统可以获得最高的处理吞吐量。同时缓存块的超时值也可以设置为0到无限大之间的任意值。缓存块的超时阈值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会越低,缓存块的超时阈值越大时,则反之。通过调整缓存块的超时阈值,用户可根据自己的需要灵活的权衡Flink的延迟和吞吐量。 图2 Flink执行引擎数据传输模式 在统一的流式执行引擎的基础上,Flink同时支持了流处理系统与批处理系统,并且保证了其流处理系统与批处理系统的性能(延迟,吞吐量等),相对于其他原生的流处理与批处理系统,并没有因为统一的执行引擎而受到影响。用户可以在Flink上同时执行批处理任务与流处理任务,这大大减轻了用户安装,部署,监控,维护等成本。36大数据(http://www.36dsj.com/) Flink流处理的容错机制 对于一个分布式系统来说,单个进程或是节点崩溃导致整个Job失败是经常发生的事情,在异常发生的时候不会丢失用户数据,并能够自动恢复是分布式系统的需要支持的特性之一。本节主要介绍Flink流处理系统对于任务级别的容错机制。 批处理系统比较容易实现容错机制,由于文件可以重复访问,当某个任务失败后,重启该任务即可。但是在流处理系统中,由于数据源是无限的数据流,一个流处理任务甚至可能会执行几个月,将所有数据缓存或是持久化,留待以后重复访问基本上是不可行的。Flink基于分布式快照与可部分重发的数据源实现了容错,用户可自定义对整个Job进行快照的时间间隔,当出现任务失败时,Flink将整个Job恢复到最近一次快照的状态,并从数据源重发快照之后的数据。 Flink的分布式快照的实现借鉴了Chandy和Lamport在1985年发表的一篇关于分布式快照的论文,其实现的主要思想如下: 按照用户自定义的分布式快照间隔时间,Flink会在定时在所有数据源中插入一种特殊的快照标记消息,这些快照标记消息和其他消息一样在DAG中流动,但是不会被用户定义的业务逻辑所处理,每一个快照标记消息都将其所在的数据流分成两部分:本次快照数据和下次快照数据。36大数据(http://www.36dsj.com/) 图3 Flink包含快照标记消息的消息流 快照标记消息沿着DAG流经各个操作符,当操作符处理到快照标记消息时,会对自己的状态进行快照,并存储起来。当一个操作符有多个输入的时候,Flink会将先抵达的快照标记消息及其之后的消息缓存起来,当所有的输入中对应该次快照的快照标记消息全部抵达后,操作符对自己的状态快照并存储,之后处理所有快照标记消息之后的已缓存消息。操作符对自己的状态快照并存储可以是异步与增量的操作,并不需要阻塞消息的处理。分布式快照的流程如下图所示: 图4 Flink分布式快照流程图 当所有的Data Sink(终点操作符)都收到快照标记信息并对自己的状态快照和存储后,整个分布式快照就完成了,同时通知数据源释放该快照标记消息之前的所有消息。若之后发生节点崩溃等异常情况时,只需要恢复之前存储的分布式快照状态,并从数据源重发该快照以后的消息就可以了。 Exactly-Once是流处理系统需要支持的一个非常重要的特性,它保证每一条消息被流处理系统处理一次,且仅被处理一次,许多流处理任务的业务逻辑都依赖于Exactly-Once特性。相对于At-Least-Once或是At-Most-Once, Exactly-Once特性对流处理系统的要求更严格,实现也更困难。Flink基于分布式快照实现了Exactly-Once特性。36大数据(http://www.36dsj.com/) 相对于其他流处理系统的容错方案,Flink基于分布式快照的方案在功能和性能方面都具有很多优点,包括: 1. 低延迟。由于操作符状态的存储可以是异步的,所以进行快照的过程基本上不会阻塞消息的处理,对消息的延迟不会产生负面的影响。 2. 高吞吐量。当操作符状态较少时,对吞吐量基本没有影响。当操作符状态较多时,相对于其他的容错机制,分布式快照的时间间隔是用户自定义的,所以用户可以权衡错误恢复时间和吞吐量的要求,调整分布式快照的时间间隔。 3. 与业务逻辑的隔离。Flink的分布式快照机制与用户的业务逻辑是完全隔离的,用户的业务逻辑不会依赖或是对分布式快照产生任何影响。 4. 错误恢复代价。分布式快照的时间间隔越短,错误恢复的时间越少,与吞吐量负相关。 Flink流处理的时间窗口 对于流处理系统来说,流入的消息是无限的,所以对于聚合或是连接等操作,流处理系统需要对流入的消息进行分段,然后基于每一段数据进行聚合或是连接等操作。消息的分段即称为窗口,流处理系统支持的窗口有很多类型,最常见的就是时间窗口,基于时间间隔对消息进行分段处理。本节主要介绍Flink流处理系统支持的各种时间窗口。 对于目前大部分流处理系统来说,时间窗口一般是根据Task所在节点的本地时钟来进行切分,这种方式实现起来比较容易,不会阻塞消息处理。但是可能无法满足某些应用的要求,例如: 1. 消息本身带有时间戳,用户希望按照消息本身的时间特性进行分段处理。 2. 由于不同节点的时钟可能不同,以及消息在流经各个节点时延迟不同,在某个节点属于同一个时间窗口处理的消息,流到下一个节点时可能被切分到不同的时间窗口中,从而产生不符合预期的结果。 Flink支持三种类型的时间窗口,分别适用于用户对于时间窗口不同类型的要求: 1. Operator Time。根据Task所在节点的本地时钟来进行切分的时间窗口。 2. Event Time。消息自带时间戳,根据消息的时间戳进行处理,确保时间戳在同一个时间窗口的所有消息一定会被正确处理。由于消息可能是乱序流入Task的,所以Task需要缓存当前时间窗口消息处理的状态,直到确认属于该时间窗口的所有消息都被处理后,才可以释放其状态。如果乱序的消息延迟很高的话,会影响分布式系统的吞吐量和延迟。 3. Ingress Time。有时消息本身并不带有时间戳信息,但用户依然希望按照消息而不是节点时钟划分时间窗口(例如,避免上面提到的第二个问题)。此时可以在消息源流入Flink流处理系统时,自动生成增量的时间戳赋予消息,之后处理的流程与Event Time相同。Ingress Time可以看成是Event Time的一个特例,由于其在消息源处时间戳一定是有序的,所以在流处理系统中,相对于Event Time,其乱序的消息延迟不会很高,因此对Flink分布式系统的吞吐量和延迟的影响也会更小。 Event Time时间窗口的实现 Flink借鉴了Google的MillWheel项目,通过WaterMark来支持基于Event Time时间窗口。 当操作符通过基于Event Time的时间窗口来处理数据时,它必须在确定所有属于该时间窗口的消息全部流入此操作符后,才能开始处理数据。但是由于消息可能是乱序的,所以操作符无法直接确认何时所有属于该时间窗口的消息全部流入此操作符。36大数据(http://www.36dsj.com/) WaterMark包含一个时间戳,Flink使用WaterMark标记所有小于该时间戳的消息都已流入,Flink的数据源在确认所有小于某个时间戳的消息都已输出到Flink流处理系统后,会生成一个包含该时间戳的WaterMark,插入到消息流中输出到Flink流处理系统中,Flink操作符按照时间窗口缓存所有流入的消息,当操作符处理到WaterMark时,它对所有小于该WaterMark时间戳的时间窗口的数据进行处理并发送到下一个操作符节点,然后也将WaterMark发送到下一个操作符节点。 为了保证能够处理所有属于某个时间窗口的消息,操作符必须等到大于这个时间窗口的WaterMark之后,才能开始对该时间窗口的消息进行处理,相对于基于Operator Time的时间窗口,Flink需要占用更多的内存,且会直接影响消息处理的延迟时间。对此,一个可能的优化措施是,对于聚合类的操作符,可能可以提前对部分消息进行聚合操作,当有属于该时间窗口的新消息流入时,基于之前的部分聚合结果继续计算,这样的话,只需缓存中间计算结果即可,无需缓存该时间窗口的所有消息。 对于基于Event Time时间窗口的操作符来说,流入WaterMark的时间戳与当前节点的时钟一致是最简单理想的状况了,但是在实际环境中是不可能的,由于消息的乱序以及前面节点处理效率的不同,总是会有某些消息流入时间大于其本身的时间戳,真实WaterMark时间戳与理想情况下WaterMark时间戳的差别称为Time Skew,如下图所示: 图5 WaterMark的Time Skew图 Time Skew决定了该WaterMark与上一个WaterMark之间的时间窗口所有数据需要缓存的时间,Time Skew时间越长,该时间窗口数据的延迟越长,占用内存的时间也越长,同时会对流处理系统的吞吐量产生负面影响。 基于时间戳的排序 在流处理系统中,由于流入的消息是无限的,所以对消息进行排序基本上被认为是不可行的。但是在Flink流处理系统中,基于WaterMark,Flink实现了基于时间戳的全局排序。 Flink基于时间戳进行排序的实现思路如下:排序操作符缓存所有流入的消息,当其接收到WaterMark时,对时间戳小于该WaterMark的消息进行排序,并发送到下一个节点,在此排序操作符中释放所有时间戳小于该WaterMark的消息,继续缓存流入的消息,等待下一个WaterMark触发下一次排序。 由于WaterMark保证了其之后不会出现时间戳比它小的消息,所以可以保证排序的正确性。需要注意的是,如果排序操作符有多个节点,只能保证每个节点的流出消息是有序的,节点之间的消息不能保证有序,要实现全局有序,则只能有一个排序操作符节点。 通过支持基于Event Time的消息处理,Flink扩展了其流处理系统的应用范围,使得更多的流处理任务可以通过Flink来执行。 定制的内存管理 略,请参考上篇文章:脱离JVM? Hadoop生态圈的挣扎与演化 总结 本文主要介绍了Flink项目的一些关键特性,Flink是一个拥有诸多特色的项目,包括其统一的批处理和流处理执行引擎,通用大数据计算框架与传统数据库系统的技术结合,以及流处理系统的诸多技术创新等,因为篇幅有限,Flink还有一些其他很有意思的特性没有详细介绍,比如DataSet API级别的执行计划优化器,原生的迭代操作符等,感兴趣的读者可以通过Flink的官网了解更多Flink的详细内容。 本文作者:李呈祥 来源:51CTO

优秀的个人博客,低调大师

理解云计算备份与灾难恢复

如今,云计算和用户生态系统有一个新的转变,IT的转化创造了一个独特的“数据需求”环境。这意味着有放在这些工作负荷的详细的信息工作和更大的恢复需求。IT管理人员负责管理他们的备份系统,并必须准备好他们的灾难恢复策略。适当的恢复方法是至关重要的,特别是对正常运行时间要求更高的组织。 现代基于云计算的备份解决方案的一个固有优势是恢复速度和数据的可靠性。此外,从云平台上看,经常发现其他类型的备份解决方案有一些性能问题,例如磁带,需要加载,卸载,并在寻找过程中找到并恢复数据。有些系统可能甚至加载磁带插入驱动器需要长达四分钟的时间。这就是为什么使用基于云计算的备份解决方案通常被看作是灾难恢复解决方案的一部分的原因。当设计一个云就绪灾难恢复策略时,重要的是要了解企业现有的数据需求。 在这里,有几个重要的环境因素需要考虑: ·恢复时间目标。在使用基于云计算的备份解决方案时,管理员可以快速、高效地恢复数据。然而,当分析一个数据恢复方案时,一个组织必须建立他们的数据恢复时间目标,这并不总是意味着一个普通的数字。根据不同的数据集,复原时间目标(RTO)可以是不同的。例如,一个高度利用数据库可以具有5分钟的复原时间目标,而较少使用的文件共享可以设定为2-4小时。RTO可以建立业务影响分析(BIA),这将在下一点讨论。而高效利用的环境具有非常低的RTO的标准,应进行测试来确保一个给定的备份解决方案以满足这些要求。请记住,当灾难发生时,数据必须快速提供。恢复工作的速度和可靠性是使用基于云计算备份解决方案的优势。 ·开展业务影响分析。每个企业都希望利用云备份平台为数据恢复组件必须进行业务影响分析。这将让IT团队知道哪些数据集对组织至关重要,并采取最优先的事项。有一个很重要的业务影响分析的结果要记住:一个备份解决方案的成本将上升时,其目标更接近“零”停机时间。这就是为什么在最初的规划阶段中,将数据放在优先位置,把相应的数据集放置到磁盘的备份解决方案是很重要的。根据云存储的类型(全闪存、高速、标准磁盘、大小)的恢复时间会有所不同。在一个云备份平台对高优先级的数据上进行业务影响分析可能更昂贵,这是非常有可能的,但其恢复时间更快。 ·请记住:数据恢复通常不包括历史数据。当一个灾难恢复解决方案在工作时,一个环境真的只需要当前的数据,这将让业务恢复快速启动和运行。这意味着,基于云计算的备份系统,可能需要定期备份以及将那些准备恢复目前数据。常规备份作业中其数据是陈旧的,甚至准备存档的。这样一来,环境准备恢复最新的数据集,而不必担心旧的数据,以及是不是至关重要的灾难恢复过程。此外,这也有助于企业控制成本。很多时候管理人员认为,他们需要有“一切”运行的业务运作。然而,在大多数情况下,这是没有必要的。知道哪些应用程序需要恢复,哪些数据是关键和依赖于业务,以及如何快速给用户访问这些资源。基于云的备份和解决方案可以帮助隔离这些关键的环境,并可以使他们迅速获得。 如今,云计算被企业和用户用来作为一个强大的业务运营工具。组织正在使用云备份和灾难恢复解决方案,以创造一个更灵活和强大的IT生态系统。人们看到更高水平的虚拟化,更好的数据管理机制,更加支持真正的移动办公。不过,要了解云计算和数据要求,解决方案必须适合企业的业务使用情况。适当的计划和云架构将帮助企业得到获得最好的云环境。而且在有需要时,可以帮助企业更有效地恢复。 本文转自d1net(转载)

优秀的个人博客,低调大师

如何理解5G空口(NR)?

电信行业肯定希望在超高容量和低延迟的下一代网络的支持下部署5G业务,但是在5G商用之前,该技术需要做进一步的标准化工作,目前5G的标准化工作组织主要是3GPP。3GPP关注不同的技术、服务质量以及很多5G互操作等其他低级技术课题。3GPP的主要研究项目可以分为3个部分:无线接入、核心传输网络、服务。在本文中,我将尝试讨论对未来的发展,并探讨5G NR的标准。 如何预测5G的未来? 今天我们可以确定5G发展的三大支柱。首先是增强的移动宽带(eMBB),预计将能够使数据连接达到一个全新的高度。其次是关键任务服务,如关键通信延迟以及极端可靠性应用,如机器人,医疗技术应用。第三个是物联网相关的领域,我们希望5G能够满足大的设备密度下保持传输速度。这些都是非常多样化的应用,5G是涵盖这些的技术。 正如我们可以看到在5G领域部署的新的机遇,由于新兴技术的复杂性,很难精确地预测未来的前景以及消费者消费行为的转变。 正如2004年开始的LTE标准化工作,也早于“智能手机时代”。我们当时只关心如何预测和驱动程序,如视频和创新应用演变并推动移动用户消耗更多的数据。这就是为什么我们需要创造性地组合下一代技术的原因。 当前业界发展的状况有很大的相似性,我们希望进入一个全新的时代,自动驾驶汽车、自动化交通、医疗应用、公共安全等用途非常苛刻,而且新兴的私有IoT网络领域将会有巨大的连接需求。3GPP的目前是创造一个非常有效的环境,符合IMT-2020的需求,正如3G/4G网络初始阶段一样。3GPP还商定了一项考虑5G无牌照频段操作的项目。 无证频谱中的NR将带来全新的机遇? 简而言之,5G NR的设想是以更低的成本提供低延迟,高可靠性和安全性的服务。整个架构的设计方式是将其扩展到连接的大量的物联网设备,不仅可以提供电信领域的创新服务,还可以在健康、汽车、公共安全等垂直领域提供创新服务。 我们来简要地看一下3GPP的全体会议作出了哪些重要决策,Release 14是即将发布的版本,将重点关注诸如带内/四波段载波聚合,增强V2X服务的功能。Release 15正在规划中,NR的规范性工作将在该版本中得以出现。 一些初始5G NR要求如下: 由于厂商和运营商都在追求尽快部署,3GPP决定在今年12月左右进行非独立运营,将大大依赖LTE作为“控制平面主机”实现现有EPC移动性管理等任务。随后将独立完成目标用例,如eMBB和URLCC,频率范围在6 Ghz以上。 无证频谱和NR能够带来的新的范例越来越受到关注,目前该领域是一个开放的研究项目,最终的范围非常广泛且仍然是TBD。无证频谱的扩展服务接入将覆盖特定的范围,将覆盖低频和毫米波频段。 但无证频谱的问题是没有任何仲裁,利用率不会很好。特别是当负载非常高时,利用率会变得非常低下,因为所有的用户是平等对待的。一旦无证频谱不可用,所有人都将无法访问。虽然得到3GPP许可的频谱非常昂贵且完全被监管,运营商具有相关的专有权限,因此主要的区别在于QoS是否有保障。 在这两种情况之间有共享频谱,例如在欧盟地区提供2.3 Ghz频谱,在美国提供3.5 Ghz频谱,现在有了新的模式和功能来为共享频谱提供QoS。在高通NR研讨会上,Juan Montojo举了一个有趣的“垂直共享”的例子,它始终倾向于高优先级运营商,但同时让主机访问次要资源。另一个模式是“横向共享”,每个人都像使用WiFi一样,但共享频谱中特定类型的设备是针对性的。 随着我们进一步提高QoS之间的鸿沟,通过上述两个模式的组合以及创新的方式,共享频谱实际上能够带来新的机遇。 当与CoMP等技术相结合,传输中所有的个体合作创造价值,潜在的收益将非常有吸引力。令人兴奋但是,3GPP正在考虑在无证频谱中的NR实现,我相信这将带来非常广阔的市场机遇。 本文转自d1net(转载)

优秀的个人博客,低调大师

[iOS]深入理解ivar及property

以下所有类和对象的描述均以Objective-C为参考, cpu架构为arm64 0x0 一句话描述类和对象与内存的关系 类本身是一个描述, 描述里包含实例化这个类需要多大的内存, 以及内存的每个byte是什么内容, 这个内容的头部是一个isa, 其他内容是ivar的值或指针. 对象是按类的描述所从内存空间里面开辟出对应大小的空间并填充isa指针(alloc), 类的初始化方法往这个空间里的byte里面存初始化的内容. 0x1 ivar 举个例子: @interface AClass : NSObject { NSString *_aString; NSInteger _aInt; } @end @implementation AClass - (instancetype)init { if (self = [sup

优秀的个人博客,低调大师

深入理解docker的link机制

什么是docker的link机制 同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地址来通信,也可以通过宿主机的ip加上容器暴露出的端口号来通信,前者会导致ip地址的硬编码,不方便迁移,并且容器重启后ip地址会改变,除非使用固定的ip,后者的通信方式比较单一,只能依靠监听在暴露出的端口的进程来进行有限的通信。通过docker的link机制可以通过一个name来和另一个容器通信,link机制方便了容器去发现其它的容器并且可以安全的传递一些连接信息给其它的容器。其使用方式如下: 1.运行一个容器,通过–name指定一个便于记忆的名字,这个容器被称为source container,也就是要连接的容器 docker run --name db -e MYSQL_ROOT_PASSWORD=server -d my

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册