前言

毫不夸张地说,JVM是现代软件工程最成功的案例之一。因为它自带GC,又有无数可以微调的参数,且运行极其稳定可靠,所以,许多厂商的核心业务系统,才敢放心地用Java编写,运行在JVM之上。

近几年深入学习JVM调优的人越来越多,因为互联网一线大厂的Java高级开发工程师JD中都明确要求了“JVM调优”的能力。JVM调优是跳槽大厂必备的技能,但是由于JVM知识体系过于庞大,非系统学习难以学透,并且即使掌握了全部理论,没有实操,依然无法应对面试!

今天,特将腾讯大佬疯狂加持的“千万级”JVM 笔记分享给你们,从思维图到优化再到架构,带你轻松上手,一键搞定。

百万级JVM笔记,完整PDF版,文末即可免费获取下载。

CAP原则

在分布式系统要满足CAP原则,一个提供数据服务的存储系统无法同时满足:数据一致性、数据可用性、分区耐受性。

C数据一致性:所有应用程序都能访问到相同的数据。 A数据可用性:任何时候,任何应用程序都可以读写访问。 P分区耐受性:系统可以跨网络分区线性伸缩。(通俗来说就是数据的规模可扩展) 在大型网站中通常都是牺牲C,选择AP。为了可能减小数据不一致带来的影响,都会采取各种手段保证数据最终一致。

  • 数据强一致:各个副本的数据在物理存储中总是一致的。

  • 数据用户一致:数据在物理存储的各个副本可能是不一致的,但是通过纠错和校验机制,会确定一个一致的且正确的数据返回给用户。

  • 数据最终一致:物理存储的数据可能不一致,终端用户访问也可能不一致,但是一段时间内数据会达成一致。

一致性算法

  • 使一组服务器在一个值上达成一致,所以活跃的特征在于最终每个服务器都可以决定一个值。

  • 通过值的一致能够实现对同一个数据的请求会让同一个服务器来处理。

  • Paxos和Raft都是通过选取master来实现多节点下值的一致性,从而借助一致性hash算法来分配请求。

一致性Hash算法 一致性Hash算法可以根据不同的属性参数(通常是IP和端口号),生成一串不相同的Hash值,并将Hash值转换成0-2^32-1的整数, 不同范围的值由不同服务器进行处理。(B-C之间的由B处理)。

Raft算法和Paxos算法

Raft算法是在Paxos算法的基础上的进行优化。 Raft在Paxos的基础上主要做了两个方向的优化: 1.将复杂的分布式共识问题拆分成领导选举、日志复制和安全性三个问题 2.压缩状态空间:相对于Paxos施加了更合理的限制,减少了系统状态过多而产生的不确定因素。

领导选举(具体以zookeeper举例) 其基本的特性有:

  • zookeeper在配置集群时节点数不可小于3

  • 节点只有获得半数以上的投票才能当选Leader

  • zookeeper在启动时会通过广播机制来把投票结果告诉其他的节点

  • zookeeper在启动时首先会给自己投票,然后与其他已启动的节点进行通信,通过比较id从而判断是否能获取其他节点的投票

zookeeper在选举过程中的角色:领导者、跟随者、观察者、竞选者

日志复制 在共识算法中,所有服务器节点都会包含一个有限状态自动机,名为复制状态机(replicated state machine)。每个节点都维护着一个复制日志(replicated logs)的队列,复制状态机会按序输入并执行该队列中的请求,执行状态转换并输出结果。可见,如果能保证各个节点中日志的一致性,那么所有节点状态机的状态转换和输出也就都一致。

可见,日志由一个个按序排列的entry组成。每个entry内包含有请求的数据,还有该entry产生时的领导任期值。每个节点上的日志队列用一个数组log[]表示。

领导节点选举出来后,集群就可以开始处理客户端请求了。当客户端发来请求时,领导节点首先将其加入自己的日志队列,再并行地发送AppendEntries RPC消息给所有跟随节点。最终实现节点数据的一致性。

安全性 Raft安全保障机制有5种:

  • 选举安全性:节点要3个以上,避免“脑裂”的方式

  • 领导者只追加:客户端发出的请求都是插入领导者日志队列的尾部,没有修改或删除的操作。

  • 日志匹配:每条AppendEntries都会包含最新entry之前那个entry的下标与任期值,如果跟随节点在对应下标找不到对应任期的日志,就会拒绝接受并告知领导节点。(避免追随者故障,导致数据不一致)

  • 领导者完全性:如果有一条日志在某个任期被提交了,那么它一定会出现在所有任期更大的领导者日志里。(master会优先获取日志的更新)

  • 状态机安全性:如果一个节点已经向其复制状态机应用了一条日志中的请求,那么对于其他节点的同一下标的日志,不能应用不同的请求。(避免master宕机时,重新选举,导致部分节点数据不一致)

Raft算法和Paxos算法在分布式中的使用

Consul vs Eureka vs Zookeeper

注: CAP: 数据一致性、数据可用性、分区耐受性 AP: 牺牲强一致性,部分节点宕机,不会影响正常工作的节点。 CP: 牺牲数据可用性,为了保证数据的一致性,当一台机器出现故障时,所有节点的数据都不能使用。

写在最后

以上就是我的面试过程,为了这次面试,也收集了很多的面试题,反正我已经面过了,那就免费分享出来吧!

需要的朋友:关注一下,然后点击这里即可免费领取

以下是部分面试题截图

吧!

需要的朋友:关注一下,然后点击这里即可免费领取

以下是部分面试题截图

快速从入门到精通!黑马java课程大纲相关推荐

  1. 2023年黑马Java入门到精通教程--Java基础入门

    推荐教程:java零基础入门到精通 如何使用Java Java语言的产品是 JDK(Java Development Kit :Java开发者工具包) ,必须安装JDK才能使用Java语言. JDK产 ...

  2. cucumber java从入门到精通_cucumber java从入门到精通(4)Scenario Outline及数据驱动...

    cucumber java从入门到精通(4)Scenario Outline及数据驱动 到目前为止,我们的TodoList类工作良好,不过离我们的预期--任务清单系统还是有不少差距,究其原因不过如下: ...

  3. 黑马java课程2222

    课程叫做27天学通java零基础java 安装: 必须装jdk-7u72-windows-i586.exe 注意必须安装32位的就是i586这个.因为x64的不向下兼容.会有意向不到的bug配置Pat ...

  4. 从入门到精通:Java编程基础入门教程

    文章目录 1. Java基础语法概述 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模 ...

  5. 快速从入门到精通!docker菜鸟教程linux

    NameServer的部署 关于NameServer,我们之前的文章已经详细讲解过了集群化的内容,这里直接把它部署到三台机器上,作为一个高可用集群 Broker的部署 Broker的部署我们之前也有讲 ...

  6. kafka从入门到精通:Java设置全局变量传值

    如何高效的学习MyBatis源码呢? 市面上真正适合学习的MyBatis资料太少,有的书或资料虽然讲得比较深入,但是语言晦涩难懂,大多数人看完这些书基本都是从入门到放弃.学透MyBatis源码难道就真 ...

  7. 快速从入门到精通!成都java培训机构比较

    梳理知识点,是快速提升技术的关键 前面讲过,快速提升自己的技术硬实力其实是有方法的.大致就是梳理知识点+夯实基础+进阶深入学习+实战,下面我会一点点跟大家剖析,本文干货满满,大家仔细阅读. ①梳理知识 ...

  8. 从入门到精通的Java进阶学习笔记整理,不愧是大佬

    前言 一位小伙伴准备了许久的阿里Java面试,原以为能够顺利拿下offer,但在第三面还是被摁在地上反复摩擦,丧气一段时间后,小伙伴调整了心态重新尝试了一下,最终拿下了offer,今天小编把这位小伙伴 ...

  9. Java从入门到精通!Java技术培训学校排名

    Java就是个多线程的世界 1. 类的线程安全 我们经常说类是线程安全的,类是线程不安全的.那么什么样的类才是线程安全的? 1.1 定义 多线程环境下,不管不同的线程如何使用和调度这个类,这个类总是表 ...

  10. 最新Java学习路线,java入门到精通,Java自学者的福利

    前言 如果你想自学 Java,认真看完本文,你以后的职场生涯至少少走1年弯路. 行业现状 程序员现状 由于程序员的薪水比较高,最近几年有很多其他专业的人涌进了程序员行业,加速了这个行业的内卷,但是据某 ...

最新文章

  1. 如何“愚弄”人工智能?
  2. centos6.5环境安装zookeeper-3.4.5
  3. 机房漏水后,漏水报警器是如何检测应急处理的?
  4. 【软件需求工程与建模 - 小组项目】阶段性汇报-软件设计规格说明书3.0
  5. 如何让.net程序自动运行在管理员权限下
  6. 信息学奥赛一本通 1939:【07NOIP普及组】纪念品分组 | P1094 [NOIP2007 普及组] 纪念品分组
  7. ​【月报】Java知音的三月汇总
  8. 排列组合在计算机科学的应用,数学在计算机科学的应用.doc
  9. chromebook开发php,玩转chromebook
  10. 使用async 和 await方法来
  11. WinRAR使用基础技巧
  12. 8086微型计算机第五章接口,微机原理与接口技术课程论文.doc
  13. vue 左侧菜单可拖动
  14. 网络蛋白质组学在计算机中应用,蛋白质组学分析灵芝酸D的细胞毒性机制和计算机预测其可能的作用网络...
  15. 【数字化转型的另类视角也许更务实】
  16. 极客日报:iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布
  17. html的常用标签,系列篇
  18. Android 10.0 进入recovery模式(等待用户选择recovery模式界面)实现自动恢复出厂设置
  19. 你应该知道的setTimeout秘密
  20. 今日雨水——草木萌動

热门文章

  1. 《设计心理学》读书笔记
  2. xming linux 图形界面,转:Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序...
  3. NETBEAN 启动报错 CANNOT LOCATE JAVA INSTALLATION IN SPECIFIED JDKHOME的解决办法
  4. Latex论文下载学习教程
  5. google退出中国声明 英文版原文
  6. 百旺如何看是否清卡_清卡失败增值税未申报或未对比怎么办
  7. 计算机硬件故障诊断的原则,计算机硬件常见故障诊断和维护.doc
  8. webpack+plugin插件机制+weboack dev server工具
  9. Linux系统录制gif动画
  10. Chrome插件使用IE tab