精华内容
下载资源
问答
  • DDR工作原理

    万次阅读 多人点赞 2018-06-21 18:57:44
    DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。...本文只着重讲讲DDR的原理和DDR SDRAM相对于传统SDRAM(又称SDR SDRAM)的不同。 DDR的核心频率、时钟频率和数据传输频率: ...

    DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。本文只着重讲讲DDR的原理和DDR SDRAM相对于传统SDRAM(又称SDR SDRAM)的不同。

     

    DDR的核心频率、时钟频率和数据传输频率:

    核心频率就是内存的工作频率;DDR1内存的核心频率是和时钟频率相同的,到了DDR2和DDR3时才有了时钟频率的概念,就是将核心频率通过倍频技术得到的一个频率。数据传输频率就是传输数据的频率。DDR1预读取是2位,DDR2预读取是4位,DDR3预读取是8位。

    DDR1在传输数据的时候在时钟脉冲的上升沿和下降沿都传输一次,所以数据传输频率就是核心频率的2倍。DDR2内存将核心频率倍频2倍所以时钟频率就是核心频率的2倍了,同样还是上升边和下降边各传输一次数据,所以数据传输频率就是核心频率的4倍。

    DDR3内存的时钟频率是核心频率的4倍,所以数据传输频率就是核心频率的8倍了。

    1

     

    一、DDR的基本原理

    有很多文章都在探讨DDR的原理,但似乎也不得要领,甚至还带出一些错误的观点。首先我们看看一张DDR正规的时序图。

    2

    从中可以发现它多了两个信号: CLK#与DQS,CLK#与正常CLK时钟相位相反,形成差分时钟信号。而数据的传输在CLK与CLK#的交叉点进行,可见在CLK的上升与下降沿(此时正好是CLK#的上升沿)都有数据被触发,从而实现DDR。在此,我们可以说通过差分信号达到了DDR的目的,甚至讲CLK#帮助了第二个数据的触发,但这只是对表面现象的简单描述,从严格的定义上讲并不能这么说。之所以能实现DDR,还要从其内部的改进说起。

    3

    DDR内存芯片的内部结构图

    这是一颗128Mbit的内存芯片,从图中可以看出来,白色区域内与SDRAM的结构基本相同,但请注意灰色区域,这是与SDRAM的不同之处。首先就是内部的L-Bank规格。SDRAM中L-Bank 存储单元的容量与芯片位宽相同,但在DDR SDRAM中并不是这样,存储单元的容量是芯片位宽的一倍,所以在此不能再套用讲解SDRAM时 “芯片位宽=存储单元容量” 的公式了。也因此,真正的行、列地址数量也与同规格SDRAM不一样了。

    以本芯片为例,在读取时,L-Bank在内部时钟信号的触发下一次传送8bit的数据给读取锁存器,再分成两路4bit数据传给复用器,由后者将它们合并为一路4bit数据流,然后由发送器在DQS的控制下在外部时钟上升与下降沿分两次传输4bit的数据给北桥。这样,如果时钟频率为100MHz,那么在I/O端口处,由于是上下沿触发,那么就是传输频率就是200MHz。

    现在大家基本明白DDR SDRAM的工作原理了吧,这种内部存储单元容量(也可以称为芯片内部总线位宽)=2×芯片位宽(也可称为芯片I/O总线位宽)的设计,就是所谓的两位预取(2-bit Prefetch),有的公司则贴切的称之为2-n Prefetch(n代表芯片位宽)。

    二、DDR SDRAM与SDRAM的不同

    DDR SDRAM与SDRAM的不同主要体现在以下几个方面。

    DDR SDRAM与SDRAM的主要不同对比表

    4

    5

     

    DDR SDRAM与SDRAM一样,在开机时也要进行MRS,不过由于操作功能的增多,DDR SDRAM在MRS之前还多了一EMRS阶段(Extended Mode Register Set,扩展模式寄存器设置),这个扩展模式寄存器控制着DLL的有效/禁止、输出驱动强度、QFC 有效/无效等。

    6

    由于EMRS与MRS的操作方法与SDRAM的MRS大同小异,在此就不再列出具体的模式表了,有兴趣的话可查看相关的DDR内存资料。下面我们就着重说说DDR SDRAM的新设计与新功能。

    7

    1、 差分时钟

    差分时钟(参见上文“DDR SDRAM读操作时序图”)是DDR的一个必要设计,但CK#的作用,并不能理解为第二个触发时钟(你可以在讲述DDR原理时简单地这么比喻),而是起到触发时钟校准的作用。由于数据是在CK的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求CK的上下沿间距要有精确的控制。但因为温度、电阻性能的改变等原因,CK上下沿间距可能发生变化,此时与其反相的CK#就起到纠正的作用(CK上升快下降慢,CK# 则是上升慢下降快)。而由于上下沿触发的原因,也使CL=1.5和2.5成为可能,并容易实现。与CK反相的CK#保证了触发时机的准确性

    8

    2、 数据选取脉冲(DQS)

    总结DQS:它是双向信号;读内存时,由内存产生,DQS的沿和数据的沿对齐;写入内存时,由外部产生,DQS的中间对应数据的沿,即此时DQS的沿对应数据最稳定的中间时刻。

    DQS是DDR SDRAM中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是数据的同步信号。

    在读取时,DQS与数据信号同时生成(也是在CK与 CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,数据真正出现在数据I/O总线上相对于DQS触发的时间间隔被称为 tAC。注意,这与SDRAM中的tAC的不同。实际上,DQS生成时,芯片内部的预取已经完毕了,tAC是指上文结构图中灰色部分的数据输出时间,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要求,对于 DDR266,tAC的允许范围是±0.75ns,对于DDR333,则是±0.7ns,有关它们的时序图示见前文,其中CL里包含了一段DQS的导入期。

    前文已经说了DQS是为了保证接收方的选择数据, DQS在读取时与数据同步传输,那么接收时也是以DQS的上下沿为准吗?不,如果以DQS的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各I/O端口的出现时间可能有快有慢,会与DQS有一定的间隔,这也就是为什么要有一个tAC规定的原因。而在接收方,一切必须保证同步接收,不能有tAC之类的偏差。这样在写入时,芯片不再自己生成DQS,而以发送方传来的DQS为基准,并相应延后一定的时间,在DQS的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在DQS上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿。

    9

    3、 写入延迟

    在上面的DQS写入时序图中,可以发现写入延迟已经不是0了,在发出写入命令后,DQS与写入数据要等一段时间才会送达。这个周期被称为DQS相对于写入命令的延迟时间(tDQSS, WRITE Command to the first corresponding rising edge of DQS),对于这个时间大家应该很好理解了。

    为什么要有这样的延迟设计呢?原因也在于同步,毕竟一个时钟周期两次传送,需要很高的控制精度,它必须要等接收方做好充分的准备才行。tDQSS是DDR内存写入操作的一个重要参数,太短的话恐怕接受有误,太长则会造成总线空闲。tDQSS最短不能小于0.75个时钟周期,最长不能超过1.25个时钟周期。有人可能会说,如果这样,DQS不就与芯片内的时钟不同步了吗?对,正常情况下,tDQSS是一个时钟周期,但写入时接受方的时钟只用来控制命令信号的同步,而数据的接受则完全依靠DQS进行同步,所以 DQS与时钟不同步也无所谓。不过,tDQSS产生了一个不利影响——读后写操作延迟的增加,如果CL=2.5,还要在tDQSS基础上加入半个时钟周期,因为命令都要在CK的上升沿发出。

    10

    当CL=2.5时,读后写的延迟将为tDQSS+0.5个时钟周期(图中BL=2)

    另外,DDR内存的数据真正写入由于要经过更多步骤的处理,所以写回时间(tWR)也明显延长,一般在3个时钟周期左右,而在DDR-Ⅱ规范中更是将tWR列为模式寄存器的一项,可见它的重要性。

    11

    4、 突发长度与写入掩码

    在DDR SDRAM中,突发长度只有2、4、8三种选择,没有了随机存取的操作(突发长度为1)和全页式突发。这是为什么呢?因为L-Bank一次就存取两倍于芯片位宽的数据,所以芯片至少也要进行两次传输才可以,否则内部多出来的数据怎么处理?而全页式突发事实证明在PC内存中是很难用得上的,所以被取消也不希奇。

    但是,突发长度的定义也与SDRAM的不一样了(见本章节最前那幅DDR简示图),它不再指所连续寻址的存储单元数量,而是指连续的传输周期数,每次是一个芯片位宽的数据。对于突发写入,如果其中有不想存入的数据,仍可以运用DM信号进行屏蔽。DM信号和数据信号同时发出,接收方在DQS的上升与下降沿来判断DM的状态,如果DM为高电平,那么之前从DQS 中部选取的数据就被屏蔽了。有人可能会觉得,DM是输入信号,意味着芯片不能发出DM信号给北桥作为屏蔽读取数据的参考。其实,该读哪个数据也是由北桥芯片决定的,所以芯片也无需参与北桥的工作,哪个数据是有用的就留给北桥自己去选吧。

    5、 延迟锁定回路(DLL)

    DDR SDRAM对时钟的精确性有着很高的要求,而DDR SDRAM有两个时钟,一个是外部的总线时钟,一个是内部的工作时钟,在理论上DDR SDRAM这两个时钟应该是同步的,但由于种种原因,如温度、电压波动而产生延迟使两者很难同步,更何况时钟频率本身也有不稳定的情况(SDRAM也内部时钟,不过因为它的工作/传输频率较低,所以内外同步问题并不突出)。DDR SDRAM的tAC就是因为内部时钟与外部时钟有偏差而引起的,它很可能造成因数据不同步而产生错误的恶果。实际上,不同步就是一种正/负延迟,如果延迟不可避免,那么若是设定一个延迟值,如一个时钟周期,那么内外时钟的上升与下降沿还是同步的。鉴于外部时钟周期也不会绝对统一,所以需要根据外部时钟动态修正内部时钟的延迟来实现与外部时钟的同步,这就是DLL的任务。

    DLL不同于主板上的PLL,它不涉及频率与电压转换,而是生成一个延迟量给内部时钟。目前DLL有两种实现方法,一个是时钟频率测量法(CFM,Clock Frequency Measurement),一个是时钟比较法(CC,Clock Comparator)。

    CFM是测量外部时钟的频率周期,然后以此周期为延迟值控制内部时钟,这样内外时钟正好就相差了一个时钟周期,从而实现同步。DLL就这样反复测量反复控制延迟值,使内部时钟与外部时钟保持同步。

    12

    CFM式DLL工作示意图

    CC的方法则是比较内外部时钟的长短,如果内部时钟周期短了,就将所少的延迟加到下一个内部时钟周期里,然后再与外部时钟做比较,若是内部时钟周期长了,就将多出的延迟从下一个内部时钟中刨除,如此往复,最终使内外时钟同步。

    13

    CC式DLL工作示意图

    CFM与CC各有优缺点,CFM的校正速度快,仅用两个时钟周期,但容易受到噪音干扰,并且如果测量失误,则内部的延迟就永远错下去了。CC的优点则是更稳定可靠,如果比较失败,延迟受影响的只是一个数据(而且不会太严重),不会涉及到后面的延迟修正,但它的修正时间要比CFM长。DLL功能在DDR SDRAM中可以被禁止,但仅限于除错与评估操作,正常工作状态是自动有效的。

    14

    转自一些论坛:

     

    1.并行匹配主要是考虑到负载过重,属于信号完整性的问题;如果接口下就1~2片DDR可以考虑串阻匹配的

    2.由于DDR2的电平HSTL电平的,也就是时钟是伪差分的方式,没必要按3W做,等长是必要的,最好做VTT

     

    理论上3W,指两线中心间距=3*线到地平面距离

    一般的3W原则,采用的是,两线中心间距=3*线宽

    根据JEDEC[1]建议DDR2的最高工作电压是1.9V,并且建议对于要求内存稳定使用的环境绝不能超过此值(例如服务器或其他任务关键设备)。此外,JEDEC规定内存模块必须在受到永久损害前承受2.3V的电压。

    欢迎加入硬件QQ群:101 808 3751,一起讨论硬件问题,分享调试心得,共同成长。

     

    展开全文
  • 计算机工作原理(动画)

    热门讨论 2014-04-02 08:54:14
    计算机工作原理(动画)一直在找有关CPU相关的工作原理动画,终于找到了。喜欢这个的可以认真看看了
  • 以太网交换机的工作原理

    千次阅读 2019-12-13 12:23:08
    交换机的原理:交叉矩阵 实质就是一个多接口的网桥 以太网交换机具有并行性,能同时联通多个接口,使每一对相互通信的主机都能像独自占通信媒体那样,进行无碰撞的传输数据。 以太网交换机的自学习功能: 以太网...

    以太网交换机:
    交换机的原理:交叉矩阵
    实质就是一个多接口的网桥
    以太网交换机具有并行性,能同时联通多个接口,使每一对相互通信的主机都能像独自占通信媒体那样,进行无碰撞的传输数据。

    以太网交换机的自学习功能:
    以太网交换机运行自学习算法自动维护交换表
    在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。

    1. 交换表一开始是空的

    2. 对于在某接口接收到的每个入帧,该交换机在其表中存储:
      1)、在该帧源地址字段中的MAC地址;
      2)、该帧的接口;
      3)、帧进入的时间;

    3. 对于后面的如果如果交换表中没有,同样进行2中的步骤
      在这里插入图片描述
      自学习和转发帧的流程
      查找转发表中与收到的帧的源地址有无相匹配的项目,若没有,就在转发表中增加一个项目(源地址、进入的接口和时间)。如有,则把原来的项目进行更新。
      转发帧,查找表中与收到的目的地址有无相匹配的项目,若没有,则通过其他接口(进入交换机的接口除外)进行转发。若有,则按转发表中的接口进行转发。若转发表中给出的接口就是该帧进入交换机的接口,则应该丢弃这个帧
      在这里插入图片描述

    展开全文
  • Boost电路的结构及工作原理

    万次阅读 多人点赞 2019-01-14 20:52:59
     Boost电路的工作原理分为充电和放电两个部分来说明。  充电过程  在充电过程中,开关闭合(三极管导通),等效电路图入下图所示,开关(三极管)处用导线代替。  这时,输入电压流过电感。二极管...

    Boost电路定义

      Boost升压电路的英文名称为“theboostconverter”,或者叫“step-upconverter”,是一种开关直流升压电路,它能够将直流电变为另一固定电压或可调电压的直流电,也称为直流—直流变换器(DC/DCConverter)。

      直流—直流变换器通过对电力电子器件的通断控制,将直流电压断续地加到负载上,通过改变占空比改变输出电压平均值。

    Boost电路的结构及工作原理_Boost的应用电路

      假定那个开关(三极管或者mos管)已经断开了很长时间,所有的元件都处于理想状态,那么电容电压等于输入电压。

      开关管Q也为PWM控制方式,但最大占空比Dy必须限制,不允许Dy=1的状态下工作。电感Lf在输入侧,成为升压电感。

      Boost电路结构

      下面以UC3842的Boost电路为例介绍Boost电路的结构。

    Boost电路的结构及工作原理_Boost的应用电路

      图中输入电压Vi=16~20V,既供给芯片,又供给升压变换。

      开关管以UC3842设定的频率周期开闭,使电感L储存能量并释放能量。

      当开关管导通时,电感以Vi/L的速度充电,把能量储存在L中。当开关截止时,L产生反向感应电压,通过二极管D把储存的电能以(Vo-Vi)/L的速度释放到输出电容器C2中。输出电压由传递的能量多少来控制,而传递能量的多少通过电感电流的峰值来控制。

      整个稳压过程由二个闭环来控制,即:

      闭环1输出电压通过取样后反馈给误差放大器,用于同放大器内部的2.5V基准电压比较后产生误差电压,误差放大器控制由于负载变化造成的输出电压的变化。

      闭环2Rs为开关管源极到公共端间的电流检测电阻,开关管导通期间流经电感L的电流在Rs上产生的电压送至PwM比较器同相输入端,与误差电压进行比较后控制调制脉冲的脉宽,从而保持稳定的输出电压。误差信号实际控制着峰值电感电流。

      Boost电路的工作原理

    Boost电路的结构及工作原理_Boost的应用电路

      Boost电路的工作原理分为充电和放电两个部分来说明。

      充电过程

    Boost电路的结构及工作原理_Boost的应用电路

      在充电过程中,开关闭合(三极管导通),等效电路图入下图所示,开关(三极管)处用导线代替。

      这时,输入电压流过电感。二极管防止电容对地放电。

      由于输入是直流电,所以电感上的电流以一定的比率线性增加,这个比率跟电感大小有关。

      随着电感电流增加,电感里储存了一些能量。

      放电过程

    Boost电路的结构及工作原理_Boost的应用电路

      如图,这是当开关断开(三极管截止)时的等效电路。

      当开关断开(三极管截止)时,由于电感的电流保持特性,流经电感的电流不会马上变为0,而是缓慢的由充电完毕时的值变为0。

      而原来的电路已断开,于是电感只能通过新电路放电,即电感开始给电容充电,电容两端电压升高,此时电压已经高于输入电压了。升压完毕。

      说起来升压过程就是一个电感的能量传递过程。充电时,电感吸收能量,放电时电感放出能量。

      如果电容量足够大,那么在输出端就可以在放电过程中保持一个持续的电流。

      如果这个通断的过程不断重复,就可以在电容两端得到高于输入电压的电压。

     

      Boost电路参数设计

      对于Boost电路,电感电流连续模式与电感电流非连续模式有很大的不同,非连续模式输出电压与输入电压,电感,负载电阻,占空比还有开关频率都有关系。而连续模式输出电压的大小只取决于输入电压和占空比。

    Boost电路的结构及工作原理_Boost的应用电路

      输出滤波电容的选择

      在开关电源中,输出电容的作用是存储能量,维持一个恒定的电压。

      Boost电路的电容选择主要是控制输出的纹波在指标规定的范围内。

      对于Boost电路,电容的阻抗和输出电流决定了输出电压纹波的大小。

      电容的阻抗由三部分组成,即等效串联电感(ESL),等效串联电阻(ESR)和电容值(C)。

      在电感电流连续模式中,电容的大小取决于输出电流、开关频率和期望的输出纹波。

      在MOSFET开通时,输出滤波电容提供整个负载电流。

      电感

      在开关电源中,电感的作用是存储能量。

      电感的作用是维持一个恒定的电流,或者说,是限制电感中电流的变化。

      在Boost电路中,选择合适电感量通常用来限制流过它的纹波电流。

      电感的纹波电流正比于输入电压和MOSFET开通时间,反比于电感量。电感量的大小决定了连续模式和非连续模式的工作点。

      除了电感的感量外,选择电感还应注意它最大直流或者峰值电流,和最大的工作频率。

      电感电流超过了其额定电流或者工作频率超过了其最大工作频率,都会导致电感饱和及过热。

      MOSFET

      在小功率的DC/DC变化中,PowerMOSFET是最常用的功率开关。MOSFET的成本比较低,工作频率比较高。

      设计中选取MOSFET主要考虑到它的导通损耗和开关损耗。

      要求MOSFET要有足够低的导通电阻RDS(ON)和比较低的栅极电荷Qg。

      Boost电路的应用领域

      MAX1771

    Boost电路的结构及工作原理_Boost的应用电路

      MAX1771是美信公司的电源管理芯片,可以做为升压电路使用,电路结构为Boost电路,如下图2.1所示。当电压输入电压的范围是5-12V,输出根据的调节范围是24-36V。引脚1输出PWM来控制场效应管IRF3205的导通与截止。引脚3是电压反馈端,内置1.25V的稳压源。当输入到3脚的电压高于或低于1.25V时,芯片会自动调节PWM占空比的减小或增大,以得到稳定的输出。

      TL494

    Boost电路的结构及工作原理_Boost的应用电路

      TL494是一种固定频率脉宽调制电路,它包含了开关电源控制所需的全部功能,广泛应用于单端正激双管式、半桥式、全桥式开关电源。

      IR2110

    Boost电路的结构及工作原理_Boost的应用电路

      IR2110是美国国际整流器公司利用自身独有的高压集成电路及无门锁CMOS技术,于1990年前后开发并投放市场的大功率MOSFET和IGBT专用栅极驱动集成电路,已在电源变换、马达调速等功率驱动领域中获得了广泛的应用。

      FAN7930C

    Boost电路的结构及工作原理_Boost的应用电路

      FAN7930C是一款有源功率因数校正(PFC)控制器,采用8脚SOP封装。用于在临界导通模式(CRM)下运行的升压PFC应用。

    展开全文
  • Eureka工作原理

    万次阅读 多人点赞 2019-07-03 10:46:48
    Eureka 工作原理 上节内容为大家介绍了,注册中心 Eureka 产品的使用,以及如何利用 Eureka 搭建单台和集群的注册中心。这节课我们来继续学习 Eureka,了解它的相关概念、工作流程机制等。 Eureka 作为 Spring Cloud...

    Eureka 工作原理

    上节内容为大家介绍了,注册中心 Eureka 产品的使用,以及如何利用 Eureka 搭建单台和集群的注册中心。这节课我们来继续学习 Eureka,了解它的相关概念、工作流程机制等。

    Eureka 作为 Spring Cloud 体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。

    Eureka 核心概念

    回到上节的服务注册调用示意图,服务提供者和服务的消费者,本质上也是 Eureka Client 角色。整体上可以分为两个主体:Eureka Server 和 Eureka Client。
    在这里插入图片描述

    Eureka Server:注册中心服务端

    注册中心服务端主要对外提供了三个功能:

    服务注册
    服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表

    提供注册表
    服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表

    同步状态
    Eureka Client 通过注册、心跳机制和 Eureka Server 同步当前客户端的状态。

    Eureka Client:注册中心客户端
    Eureka Client 是一个 Java 客户端,用于简化与 Eureka Server 的交互。Eureka Client 会拉取、更新和缓存 Eureka Server 中的信息。因此当所有的 Eureka Server 节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者,但是当服务有更改的时候会出现信息不一致。

    Register: 服务注册
    服务的提供者,将自身注册到注册中心,服务提供者也是一个 Eureka Client。当 Eureka Client 向 Eureka Server 注册时,它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等。

    Renew: 服务续约
    Eureka Client 会每隔 30 秒发送一次心跳来续约。 通过续约来告知 Eureka Server 该 Eureka Client 运行正常,没有出现问题。 默认情况下,如果 Eureka Server 在 90 秒内没有收到 Eureka Client 的续约,Server 端会将实例从其注册表中删除,此时间可配置,一般情况不建议更改。

    服务续约的两个重要属性

    服务续约任务的调用间隔时间,默认为30秒
    eureka.instance.lease-renewal-interval-in-seconds=30
    
    服务失效的时间,默认为90秒。
    eureka.instance.lease-expiration-duration-in-seconds=90
    

    Eviction 服务剔除
    当 Eureka Client 和 Eureka Server 不再有心跳时,Eureka Server 会将该服务实例从服务注册列表中删除,即服务剔除。

    Cancel: 服务下线
    Eureka Client 在程序关闭时向 Eureka Server 发送取消请求。 发送请求后,该客户端实例信息将从 Eureka Server 的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:

    DiscoveryManager.getInstance().shutdownComponent()

    GetRegisty: 获取注册列表信息
    Eureka Client 从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与 Eureka Client 的缓存信息不同,Eureka Client 自动处理。

    如果由于某种原因导致注册列表信息不能及时匹配,Eureka Client 则会重新获取整个注册表信息。 Eureka Server 缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。Eureka Client 和 Eureka Server 可以使用 JSON/XML 格式进行通讯。在默认情况下 Eureka Client 使用压缩 JSON 格式来获取注册列表的信息。

    获取服务是服务消费者的基础,所以必有两个重要参数需要注意:

    # 启用服务消费者从注册中心拉取服务列表的功能
    eureka.client.fetch-registry=true
    
    # 设置服务消费者从注册中心拉取服务列表的间隔
    eureka.client.registry-fetch-interval-seconds=30
    

    Remote Call: 远程调用
    当 Eureka Client 从注册中心获取到服务提供者信息后,就可以通过 Http 请求调用对应的服务;服务提供者有多个时,Eureka Client 客户端会通过 Ribbon 自动进行负载均衡。

    自我保护机制

    默认情况下,如果 Eureka Server 在一定的 90s 内没有接收到某个微服务实例的心跳,会注销该实例。但是在微服务架构下服务之间通常都是跨进程调用,网络通信往往会面临着各种问题,比如微服务状态正常,网络分区故障,导致此实例被注销。

    固定时间内大量实例被注销,可能会严重威胁整个微服务架构的可用性。为了解决这个问题,Eureka 开发了自我保护机制,那么什么是自我保护机制呢?

    Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 即会进入自我保护机制。

    Eureka Server 触发自我保护机制后,页面会出现提示:

    在这里插入图片描述

    Eureka Server 进入自我保护机制,会出现以下几种情况:
    (1 Eureka 不再从注册列表中移除因为长时间没收到心跳而应该过期的服务
    (2 Eureka 仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)
    (3 当网络稳定时,当前实例新的注册信息会被同步到其它节点中

    Eureka 自我保护机制是为了防止误杀服务而提供的一个机制。当个别客户端出现心跳失联时,则认为是客户端的问题,剔除掉客户端;当 Eureka 捕获到大量的心跳失败时,则认为可能是网络问题,进入自我保护机制;当客户端心跳恢复时,Eureka 会自动退出自我保护机制。

    如果在保护期内刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,即会调用失败。对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

    通过在 Eureka Server 配置如下参数,开启或者关闭保护机制,生产环境建议打开:

    eureka.server.enable-self-preservation=true
    

    Eureka 集群原理

    再来看看 Eureka 集群的工作原理。我们假设有三台 Eureka Server 组成的集群,第一台 Eureka Server 在北京机房,另外两台 Eureka Server 在深圳和西安机房。这样三台 Eureka Server 就组建成了一个跨区域的高可用集群,只要三个地方的任意一个机房不出现问题,都不会影响整个架构的稳定性。

    在这里插入图片描述

    从图中可以看出 Eureka Server 集群相互之间通过 Replicate 来同步数据,相互之间不区分主节点和从节点,所有的节点都是平等的。在这种架构中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。

    如果某台 Eureka Server 宕机,Eureka Client 的请求会自动切换到新的 Eureka Server 节点。当宕机的服务器重新恢复后,Eureka 会再次将其纳入到服务器集群管理之中。当节点开始接受客户端请求时,所有的操作都会进行节点间复制,将请求复制到其它 Eureka Server 当前所知的所有节点中。

    另外 Eureka Server 的同步遵循着一个非常简单的原则:只要有一条边将节点连接,就可以进行信息传播与同步。所以,如果存在多个节点,只需要将节点之间两两连接起来形成通路,那么其它注册中心都可以共享信息。每个 Eureka Server 同时也是 Eureka Client,多个 Eureka Server 之间通过 P2P 的方式完成服务注册表的同步。

    Eureka Server 集群之间的状态是采用异步方式同步的,所以不保证节点间的状态一定是一致的,不过基本能保证最终状态是一致的。

    Eureka 分区
    Eureka 提供了 Region 和 Zone 两个概念来进行分区,这两个概念均来自于亚马逊的 AWS:
    region:可以理解为地理上的不同区域,比如亚洲地区,中国区或者深圳等等。没有具体大小的限制。根据项目具体的情况,可以自行合理划分 region。
    zone:可以简单理解为 region 内的具体机房,比如说 region 划分为深圳,然后深圳有两个机房,就可以在此 region 之下划分出 zone1、zone2 两个 zone。

    上图中的 us-east-1c、us-east-1d、us-east-1e 就代表了不同的 Zone。Zone 内的 Eureka Client 优先和 Zone 内的 Eureka Server 进行心跳同步,同样调用端优先在 Zone 内的 Eureka Server 获取服务列表,当 Zone 内的 Eureka Server 挂掉之后,才会从别的 Zone 中获取信息。

    Eurka 保证 AP

    Eureka Server 各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而 Eureka Client 在向某个 Eureka 注册时,如果发现连接失败,则会自动切换至其它节点。只要有一台 Eureka Server 还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。

    Eurka 工作流程

    了解完 Eureka 核心概念,自我保护机制,以及集群内的工作原理后,我们来整体梳理一下 Eureka 的工作流程:

    1、Eureka Server 启动成功,等待服务端注册。在启动过程中如果配置了集群,集群之间定时通过 Replicate 同步注册表,每个 Eureka Server 都存在独立完整的服务注册表信息

    2、Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务

    3、Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常

    4、当 Eureka Server 90s 内没有收到 Eureka Client 的心跳,注册中心则认为该节点失效,会注销该实例

    5、单位时间内 Eureka Server 统计到有大量的 Eureka Client 没有上送心跳,则认为可能为网络异常,进入自我保护机制,不再剔除没有上送心跳的客户端

    6、当 Eureka Client 心跳请求恢复正常之后,Eureka Server 自动退出自我保护模式

    7、Eureka Client 定时全量或者增量从注册中心获取服务注册表,并且将获取到的信息缓存到本地

    8、服务调用时,Eureka Client 会先从本地缓存找寻调取的服务。如果获取不到,先从注册中心刷新注册表,再同步到本地缓存

    9、Eureka Client 获取到目标服务器信息,发起服务调用

    10、Eureka Client 程序关闭时向 Eureka Server 发送取消请求,Eureka Server 将实例从注册表中删除

    这就是Eurka基本工作流程

    总结

    讲了 Eureka 核心概念、Eureka 自我保护机制和 Eureka 集群原理。通过分析 Eureka 工作原理,我可以明显地感觉到 Eureka 的设计之巧妙,通过一些列的机制,完美地解决了注册中心的稳定性和高可用性。

    Eureka 为了保障注册中心的高可用性,容忍了数据的非强一致性,服务节点间的数据可能不一致, Client-Server 间的数据可能不一致。比较适合跨越多机房、对注册中心服务可用性要求较高的使用场景。

    展开全文
  • 编码器的工作原理

    万次阅读 多人点赞 2019-11-12 09:03:37
    首先简述一下编码器的工作原理 编码器可按以下方式来分类。 1、按码盘的刻孔方式不同分类 (1)增量型:就是每转过单位的角度就发出一个脉冲信号(也有发正余弦信号, 编码器(图1) 然后对其进行细分,斩波出...
  • 认识CPU的工作原理

    万次阅读 多人点赞 2018-08-01 11:40:18
    学习CPU的工作原理 在了解CPU的工作原理之前,先简单谈谈CPU是如何生产出来的。 CPU是在特别纯净的硅材料上制造的。一个CPU的芯片包含上百万个精巧的晶体管。人们在一块指甲盖大小的硅片上,用化学的方法蚀刻或...
  • ULN2003的基本介绍 ULN2003的概述 ...ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 ULN2003...
  • ds18b20工作原理和测温原理介绍

    万次阅读 多人点赞 2018-07-30 23:09:30
    DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可... 推荐阅读:利用DS18B20做一个温控器(DS18B20引脚图_工作原理及应用电路)
  • 三极管工作原理详解

    万次阅读 多人点赞 2019-05-09 19:06:35
    1、三极管工作原理详解 2、图说三极管的三个工作状态 3、图解三极管基本知识及电子电路图 半导体三极管,又称为双极结型晶体管(bipolar junction transistor, BJT)。 广义上,三极管有多种,常见如下图所示 。 ...
  • MyBatis工作原理

    千次阅读 多人点赞 2019-09-24 16:49:16
    在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图 1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等...
  • 电子管工作原理,图文并茂,言简意赅

    千次阅读 多人点赞 2021-03-11 23:06:40
    那么作为,作为技术人才,咱们还是需要了解一些基本的知识,比如简单的历史,工作原理,优劣势在哪里。 考虑只有很少的人会接触到电子管,本文也不会很深入的写(其实是因为我就知道皮毛)。仅供与人聊天使用,不...
  • 五、IBGT的工作原理 简单来说,IGBT相当于一个由MOSFET驱动的厚基区PNP型晶体管,它的简化等效电路如图2-42(b)所示,图中的RN为PNP晶体管基区内的调制电阻。从该等效电路可以清楚地看出,IGBT是用晶体管和MOSFET...
  • 浏览器工作原理和实践

    千次阅读 2019-08-31 18:18:51
    参透了浏览器的工作原理,可解决80%的前端难题. 帮助开发web前端项目. 3.学习 课程目录 开篇词 (1讲) 开篇词 | 参透了浏览器的工作原理,你就能解决80%的前端难题 宏观视角...
  • ARP工作原理

    千次阅读 2019-06-25 11:04:21
    二、ARP协议的工作原理 我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址...
  • dubbo的工作原理

    万次阅读 多人点赞 2019-03-08 10:34:01
    dubbo的工作原理 1、面试题 说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?说说一次rpc请求的流程? 2、面试官心里分析 MQ、ES、Redis、Dubbo,上来先问你一些思考的问题,原理(kafka高可用架构原理、es...
  • 整流器的工作原理

    千次阅读 2019-09-18 20:43:30
    整流器的工作原理 整流器就是将交流(AC)转化为直流(DC)的装置。根据定义就不难发现它的主要作用就是:将交流电(AC)变成直流电(DC),经滤波后供给负载,或者供给逆变器。那么整流器究竟有多重要呢?这样说吧,由于...
  • 交换机的工作原理

    万次阅读 多人点赞 2019-04-28 14:40:03
    一、交换机的工作原理 当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去。交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所有MAC...
  • Mybatis工作原理

    万次阅读 多人点赞 2018-06-24 00:16:53
    本片博客针对Mybatis内部工作原理进行阐述。 一、Mybatis工作原理图 mybatis 原理图如下所示: 二、工作原理解析 mybatis应用程序通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件(也...
  • mybatis工作原理

    万次阅读 2018-09-07 12:36:30
    便于统 一管理和优化,并可重用 运行效率高 二、mybatis原理 下面是mybatis的一个原理图,看懂这个图对理解mybatis工作原理很重要: 上面的原理图看的不是很清晰,下面再详细介绍一下mybatis的主要成员: 1、...
  • SRAM工作原理

    万次阅读 多人点赞 2019-08-26 21:54:30
    一、SRAM概述        SRAM主要用于二级快速缓存(Level2 C ache)。它利用晶体管来存储数据。与DRAM相比,SRAM的速度快,但在同样面积中SRAM的容量要比其它...查找表的原理类似于ROM,其物理结...
  • traceroute 工作原理

    千次阅读 2020-12-07 16:52:32
    文章目录PINGTracerouteTraceroute 的工作原理举个“栗子” PING ICMP 的一个重要应用就是分组网间探测 PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING 使用了 ICMP 回送请求与回送回答报文。...
  • RFID系统的基本工作原理

    千次阅读 2020-12-21 09:26:01
    RFID系统的基本工作原理4.1 RFID系统的组成 1. RFID的定义 RFID(Radio Frequency Identification)是利用无线射频信号空间耦合的方式,实现无接触的标签信息自动传输与识别的技术。 RFID标签又称为“射频标签”或...
  • 一个动画看懂网络原理之CSMA/CD的工作原理

    万次阅读 多人点赞 2018-10-09 01:48:28
    一个动画看懂网络原理之CSMA/CD的工作原理 CSMA/CD协议是以太网传输中的一个重要协议,由于线路中同一时间只能允许一台电脑发送信息,否则各计算机之间就会产生干扰,为了解决这个问题,采用了CSMA/CD协议来协调。 ...
  • SpringBoot工作原理

    千次阅读 2019-11-25 10:39:31
    1.首先我们要从我们的启动类开始,我们发现启动类里有两个需要注意的地方 ...以上就是springboot大致的工作原理                                
  • 蓝牙耳机工作原理

    万次阅读 多人点赞 2019-03-26 11:03:50
    蓝牙耳机的工作原理大致可分为如图的四个步骤: 1、手机中的解码芯片对MP3等音乐文件进行解码,产生数字信号并通过蓝牙发送给蓝牙耳机; 2、蓝牙耳机接收数字信号,并通过蓝牙耳机内部的数模转换芯片,把它转换成人...
  • ZStack基本工作原理

    千次阅读 2019-05-13 10:38:20
    ZStack基本工作原理 1 摘要 1 前言 2 1、ZStack协议栈介绍 2 1.1、ZStack 2 1.2、ZStack协议栈的架构 2 2、 ZStack协议栈工作 4 2.1、ZStack的实现 4 2.2、ZStack OSAL API 介绍 5 2.3、ZStack的工作函数 6 参考 8 ...
  • 二、三层交换机工作原理

    千次阅读 2020-05-19 22:51:21
    交换机工作在二层,可以用来隔离冲突域,在OSI参考模型中,二层(数据链路层)的作用是寻址,这边寻址指的是MAC地址,而交换机就是对MAC地址进行转发,在每个交换机中,都有一张MAC地址表,这个表是交换机自动学习的,...
  • SpringMvc工作原理学习总结

    万次阅读 多人点赞 2020-11-07 10:42:47
    SpringMvc工作原理 了解SpringMvc之前先看看Mvc的工作原理 1、MVC工作原理 M:Model(完成业务逻辑 Service/dao/entity/) V:View(完成界面渲染 jsp/html) C:Controller(控制器->类似于CPU 接受请求->调用M...
  • Spring Cloud OpenFeign 工作原理解析

    万次阅读 多人点赞 2020-05-07 18:05:45
    使用方式 在介绍 OpenFeign 的工作原理之前, 首先值得说明的是使用了 Open Feign 后, 开发人员的效率是如何得到提升的。 下面展示在使用了 OpenFeign 之后, 一个接口的提供方和消费方是如何快速高效地完成代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,380,103
精华内容 552,041
关键字:

工作原理