自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

转载 7.Zookeeper系列-- Zookeeper的典型应用场景

首先,我们要知道,Zookeeper是一个具有高可用、高性能和具有分布式数据一致性的分布式数据管理及协调框架,是基于对ZAB算法的实现,基于这样的特性,使ZK成为解决分布式一致性问题的利器,同时Zookeeper提供了丰富的节点类型和Watcher监听机制,通过这两个特点,可以非常方便的构建一系列分布式系统中都会涉及的核心功能: 如:数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master选举,分布式锁,分布式队列等。这一篇,将针对这些分布式应用场景来做介绍,并介绍Zookeeper在现

2021-09-16 10:47:22 385

转载 6.Zookeeper系列--ZAB协议,消息广播,崩溃恢复,数据同步

在前一篇中,写了Zookeeper的相关概念,以及节点、acl,watcher等机制,这一篇就写一下保证ZK集群高可用及数据一致性的底层实现算法:ZAB协议。ZAB协议概述在前面的文章中,介绍了经典的分布式数据一致性算法Paxos算法,但事实上zookeeper并没有采用完全的Paxos算法,而是采用了一种称为Zookeeper Atomic Broadcast(ZAB,zookeeper原子消息广播协议)。 ZAB 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议

2021-09-16 10:46:28 290 1

转载 5.Zookeeper系列--ZK概述,数据模型,节点特性,Watcher机制、ACL及数据存储

在zookeeper系列的前三篇,介绍分布式数据一致性的相关原理及经典的分布式一致性算法,比如:2PC,3PC,Paxos算法。在本篇,我们正式开始介绍Zookeeper,Zookeeper是分布式一致性问题的工业解决方案,是常用的分布式协调框架。本篇,会介绍Zookeeper的基本概念,数据模型,节点特性,Watcher机制及ACL等机制,在后边我们会介绍Zookeeper为了保证一致性使用的算法ZAB,以及Zookeeper的应用场景。Zookeeper基本概述Zookeeper为分布式应用提供了

2021-09-16 10:45:42 527

转载 4.Zookeeper系列--Paxos算法的原理及过程透彻理解

从上一篇我们了解了2PC和3PC之后,我们可以发现,无论是二阶段提交还是三阶段提交都无法彻底解决分布式的一致性问题以及无法解决太过保守及容错性不好。Google Chubby的作者Mike Burrows说过,世上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版。Paxos算法是公认的晦涩,很难可能能将清楚,但是工程上也很难实现,所以有很多Paxos算法的工程实现,如Raft,ZAB,微信的PhxPaxos等。这一篇会介绍这个公认为难于理解但是行之有效的Paxos算法。P

2021-09-16 10:44:48 154

转载 3.Zookeeper系列--2PC、3PC及其应用

在上一篇中,我们介绍了为什么使用分布式,为什么会出现分布式数据一致性问题,以及相关分布式理论:CAP/BASE理论,这些是我们进行后边介绍的分布式一致性算法的基础,正是由于在系统的可用性和数据一致性之间反复的权衡,于是出现了一系列的一致性协议,如2PC,3PC,paxos算法等。本篇就介绍两个最常见的分布式一致性算法:两阶段提交(2PC),三阶段提交(3PC)以及它们的相关应用。其实我觉得这些分布式一致性算法其实应该叫分布式共识(distributed consensus)算法,不同的一致性上下文含义不

2021-09-16 10:34:40 234

转载 2.Zookeeper系列--分布式一致性理论,CAP,BASE理论

Zookeeper系列,会从分布式一致性理论开始介绍,设计诸如:CAP,BASE理论,分布式一致性算法:2PC,3PC,Paxos,ZAB以及Zookeeper的节点特性,Zookeeper如何保证一致性及高可用,最后会介绍zk的各种应用。关于数据的一致性,我们在数据库中有了解过,因为数据库事务的ACID特性的C就代表一致性,这ACIC可以简单的把一致性理解为正确性或者完整性,那么数据一致性通常指关联数据之间的逻辑关系是否正确和完整。我们知道,在数据库系统中通常用事务(访问并可能更新数据库中各种数据项的一

2021-09-16 10:33:31 318

转载 1.Zookeeper——一致性协议:Zab协议

什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 崩溃恢复 如何保证数据一致性 Zab 协议如何数据同步 如何处理需要丢弃的 Proposal Zab 协议实现原理 选主过程 什么是Zab协议?Zab协议 的全称是 Zookeeper Atomic Broadcast (Zookeeper原子广播)。Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。 Zab协议是为分布式协调服务Zookeeper专.

2021-09-16 10:31:55 296 1

转载 12.Redis最佳实践

这篇文章我想和你聊一聊 Redis 的最佳实践。你的项目或许已经使用 Redis 很长时间了,但在使用过程中,你可能还会或多或少地遇到以下问题: 我的 Redis 内存为什么增长这么快? 为什么我的 Redis 操作延迟变大了? 如何降低 Redis 故障发生的频率? 日常运维 Redis 需要注意什么? 部署 Redis 时,如何做好资源规划? Redis 监控重点要关注哪些指标? 尤其是当你的项目越来越依赖 Redis 时,这些问题就变得尤

2021-09-09 16:42:02 283

原创 11.Redis图解

2021-09-09 16:38:24 87

转载 10.Redis Cluster

Redis Cluster是Redis官方提供的Redis集群功能1.为什么要实现Redis Cluster1.主从复制不能实现高可用2.随着公司发展,用户数量增多,并发越来越多,业务需要更高的QPS,而主从复制中单机的QPS可能无法满足业务需求3.数据量的考虑,现有服务器内存不能满足业务数据的需要时,单纯向服务器添加内存不能达到要求,此时需要考虑分布式需求,把数据分布到不同服务器上4.网络流量需求:业务的流量已经超过服务器的网卡的上限值,可以考虑使用分布式来进行分流5.离线计算,需要中间

2021-09-08 19:29:11 189

转载 9.Redis Sentinel

er 0sentinel leader-epoch mymaster 0logfile "/var/log/redis/sentinel_26379.log"daemonize yessentinel known-slave mymaster 192.168.81.101 6379 # sentinel探测到的slavesentinel known-slave mymaster 192.168.81.100 6380 # sentinel探测到的slave.

2021-09-08 19:27:45 190

转载 8.Redis主从复制

1.1 Redis单机的问题1.1.1 机器故障在一台服务器上部署一个Redis节点,如果机器发生主板损坏,硬盘损坏等问题,不能在短时间修复完成,就不能处理Redis操作了,这就是单机可能存在的问题同样的,服务器正常运行,但是Redis主进程发生宕机事件,此时只需要重启Redis就可以了。如果不考虑在Redis重启期间的性能损失,可以考虑Redis的单机部署Redis单机部署出现故障时,把Redis迁移到另一台服务器上,此时需要把发生故障的Redis中的数据同步到新部署的Redis节点,这也

2021-09-08 19:26:20 290

转载 6.布隆过滤器

什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你“某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。实现原理HashMap 的问题讲述布隆过滤器的原理之前,我们先思考一下,通常你判断某个元素是否存在用的是什么?应该蛮多人回答 HashMap 吧,确实可以将值.

2021-09-08 17:13:36 59

转载 7.Bitmap简介

1. BitMapBit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。(PS:划重点节省存储空间)假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存在Java中,int占4字节,1字节=8位(1 byte = 8 bit)如果每个数字用int存储,那就是20亿个int,因而占用的空间约为 (2000000000*4/1024/102...

2021-09-08 17:13:02 269

转载 5.Redis分布式锁

这篇文章我想和你聊一聊,关于 Redis 分布式锁的「安全性」问题。Redis 分布式锁的话题,很多文章已经写烂了,我为什么还要写这篇文章呢?因为我发现网上 99% 的文章,并没有把这个问题真正讲清楚。导致很多读者看了很多文章,依旧云里雾里。例如下面这些问题,你能清晰地回答上来吗? 基于 Redis 如何实现一个分布式锁? Redis 分布式锁真的安全吗? Redis 的 Redlock 有什么问题?一定安全吗? 业界争论 Redlock,到底在争论什么?哪种观点

2021-09-08 10:36:34 155

转载 4.Redis过期策略及内存淘汰机制

一、Redis的过期策略Redis在设置缓存数据时指定了过期时间,到了过期时间数据就失效了,那Redis是怎么处理这些失效的数据的呢?这就用到了Redis的过期策略——"定期删除+惰性删除" 。1、定期删除定期删除是指Redis默认每隔 100ms 就 随机抽取 一些设置了过期时间的key,检测这些key是否过期,如果过期了就将其删除。※ 100ms怎么来的?在Redis的配置文件redis.conf中有一个属性"hz",默认为10,表示1s执行10次定期删除,即每隔100ms执行一次,可以

2021-09-07 20:22:20 98

转载 3.Redis持久化

一、持久化的作用1. 什么是持久化持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化Redis所有数据保持在内存中,对数据的更新将异步地保存到磁盘上。2. 持久化的实现方式快照方式持久化快照方式持久化就是在某时刻把所有数据进行完整备份。例:Mysql的Dump方式、Redis的RDB方式。写日志方式持久化写日志方式持久化就是把用户执行的所有写指令(增删改)备份到文件中,还原数据时只需要把备份的所有指令重新执行一遍即

2021-09-07 20:06:54 102

转载 2.数据库和缓存双写一致性问题

为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成1、讲解缓存更新策略2、对每种策略进行缺点分析3、针对缺点给出改进方案正文先做.

2021-09-07 19:00:19 107

转载 1.Redis缓存击穿、缓存雪崩、缓存穿透

缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了。这就是缓存雪崩。大约在 3 年前,国内比较知名的一个互联网公司,曾因为缓存事故,导致雪崩,后台系统全部崩溃,事故从当天下午持续到晚上凌晨 3~4

2021-09-07 10:52:22 59

转载 1.跳跃表实现

一、跳表的基本概念1、跳表的定义跳表(SkipList):增加了向前指针的链表叫做指针。跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。跳表在原有的有序链表上增加了多级索引,通过索引来实现快速查询。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树、AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LevelDB中都有用到。2、跳表的详解说明:本文中的

2021-09-06 17:11:33 272

转载 9.内存溢出

Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,当对象数量到达最大堆的容量限制后就会产生内存溢出异常。最常见的内存溢出就是存在大的容器,而没法回收,比如:Map,List等。 内存溢出:内存空间不足导致,新对象无法分配到足够的内存; 内存泄漏:应该释放的对象没有被释放,多见于自己使用容器保存元素的情况下。 出现下面信息就可以断定出现了堆内存溢出。java.lang.OutOfMemoryError: Java heap space保证GC Roots到对象之间有

2021-09-04 00:31:58 826

转载 3.垃圾收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的HotSpot虚拟机(在此版本中正式提供了商用的G1收集器,之前G1仍处于实验状态),该虚拟机包含的所有收集器如下图所示:上图展示了7种作用于不同分代的收集器,如果

2021-09-04 00:25:48 60

转载 6.jvm参数

内存管理参数本参数以JDK1.8为基础进行整理,目前默认参数大概有660个左右,使用java -XX:+PrintFlagsFinal -version可以输出所有参数的名称及默认值名词解释-XX:开头的参数代表虚拟机非稳定参数-XX:+ 开启option参数-XX:- 关闭option参数-XX:= 将option参数的值设置为valueJVM设置经验客户端应用-Xverify:none-XX:+UseG1GC-XX:MinHeapFreeRatio=10-XX:MaxHeap

2021-09-04 00:12:35 120

原创 7.JVM图解

1.jvm结构示意图2.JVM知识点总结

2021-09-04 00:05:47 66

转载 6.收集器G1和CMS的区别

CMS:以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现有人会好奇为什么标记清理算法会产生内存碎片!但是CMS仍采用这种算法呢?答案是:因为CMS作为第一款实现用户线程和收集线程并发执行的收集器!当时的设计理念是减少停顿时间,最好是能并发执行!但是问题来了,如要用户线程也在执行,那么就不能轻易的改变堆中对象的内存地址!不然会导致用户线程无法定位引用对象,从而无法正常运行!而标记整理算法和复制算法都会移动存活的对象,这就与上面的策略不符!因此CMS采用的是标记清理算法! ...

2021-09-03 23:59:08 74

转载 8.JVM 关于对象分配在堆、栈、TLAB的理解

引言  我们知道,一般在java程序中,new的对象是分配在堆空间中的,但是实际的情况是,大部分的new对象会进入堆空间中,而并非是全部的对象,还有另外两个地方可以存储new的对象,我们称之为栈上分配以及TLAB栈上分配为什么需要栈上分配?  在我们的应用程序中,其实有很多的对象的作用域都不会逃逸出方法外,也就是说该对象的生命周期会随着方法的调用开始而开始,方法的调用结束而结束,对于这种对象,是不是该考虑将对象不在分配在堆空间中呢?  因为一旦分配在堆空间中,当方法调用结束,没有了引用指

2021-09-03 23:47:48 749 1

原创 10.jvm面试题

1、详细jvm内存模型2、讲讲什么情况下回出现内存溢出,内存泄漏?3、说说Java线程栈4、JVM 年轻代到年老代的晋升过程的判断条件是什么呢?5、JVM 出现 fullGC 很频繁,怎么去线上排查问题?6、类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式?7、类的实例化顺序8、JVM垃圾回收机制,何时触发MinorGC等操作9、JVM 中一次完整的 GC 流程(从 ygc 到 fgc)是怎样的10、各种回收器,各自优缺点,重点CMS、G111、各种回收算法12、OOM错

2021-09-03 23:36:37 81

转载 4.类加载机制

1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.cla

2021-09-03 23:32:47 82

转载 3.垃圾收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。接下来讨论的收集器基于JDK1.7 Update 14 之后的HotSpot虚拟机(在此版本中正式提供了商用的G1收集器,之前G1仍处于实验状态),该虚拟机包含的所有收集器如下图所示:上图展示了7种作用于不同分代的收集器,如果

2021-09-03 23:25:42 53

转载 2.GC算法与内存分配策略

说起垃圾收集(Garbage Collection, GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Scala等)程序员在提升开发效率上获得了惊人的便利。理解GC,对于理解JVM和Java语言有着非常重要的作用。并且当我们需要排查各种内存溢出、内存泄漏问题时,当垃圾收集称为系统达到更高并发量的瓶颈时,只有深入理解GC和内存分配,才能对这些“自动化”的技术实施必要的监控和调节。在Java的运行时数据区中,程序计数

2021-09-03 23:13:24 202

转载 1.Java内存区域与Java对象

运行时数据区域JVM载执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。具体如下图所示:程序计数器(Program Counter Register)程序计数器(Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在虚拟机概念模型中,字节码解释器工作时就是通过改变计数器的值来选

2021-09-03 23:11:39 123

转载 5.JVM实战:JVM调优策略

转自:https://zhuanlan.zhihu.com/p/269597178本篇主要了解下面内容:1、JVM调优要关注哪些指标。2、JVM调优前必须要确定调优的方向。3、常用的JVM调优策略参数。4、了解几个JVM调优场景案例和调优思路。1、JVM调优的核心关注指标调优之前首先我们要知道怎样才算是“优”,不能笼统的说我的程序性能很好,所以就需要有一个具体的指标来衡量性能情况,而在JVM里面衡量性能两个指标分别“吞吐量”和“停顿时间”。吞吐量:程序运行过程中执行两种任务,

2021-09-03 11:41:32 406

原创 dubbox-swagger集成

一.简介 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API简单实现。 在dubbox中使用swagger,需要解决的主要问题是如何将swagger的接口通过

2016-04-25 16:48:47 6661 8

原创 ApiDoc学习使用

一.ApiDoc简介apidoc可以根据代码注释生成web api文档,支持大部分主流语言java javascript php coffeescript erlang perl python ruby go...,相对而言,web接口的注释维护起来更加方便,不需要额外再维护一份文档。apidoc从注释生成静态html网页文档,不仅支持项目版本号,还支持api版本号。二.Api

2016-04-18 13:54:44 908

原创 Cassandra学习总结

一.Cassandra简介Cassandra是一套高度可扩展、最终一致、分布式的结构化键值存储系统。Cassandra由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,只管在群集里面添加节点。二.架构1.介绍点对点分布

2016-04-13 17:43:01 582

原创 Apache Spark学习(二)

一.spark的基本原理首先有集群资源管理服务(Cluster Manager)和运行作业任务的结点(Worker Node),然后就是每个应用的任务控制结点Driver和每个机器节点上有具体任务的执行进程(Executor)。与MR计算框架相比,Executor有二个优点:一个是多线程来执行具体的任务,而不是像MR那样采用进程模型,减少了任务的启动开稍。二个是Executor上会

2016-04-11 15:35:57 646

原创 cassandra 记录

https://www.ibm.com/developerworks/cn/opensource/os-apache-cassandra/#fig1https://zh.wikipedia.org/wiki/CassandraApache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Googl

2016-04-07 14:10:07 421

原创 dubbo简单实例

1.dubbo 实例http://blog.csdn.net/yang_best/article/details/424251312.zookpeer安装http://blog.csdn.net/luojinbai/article/details/48186547http://blog.csdn.net/wangziqiangai/article/details/4

2016-04-07 13:24:13 416

原创 idea maven jetty 配置

1.新建maven web项目new->project->maven->create....->maven-archetype-webapp->next----2.new->java文件夹->Project Structure->modules->选择java文件夹->Sources3.pom.xml加入        org.mortbay.jetty

2016-04-05 16:56:27 936

原创 spring mvc 使用aop问题总结

1.spring 注解aop配置类:@Aspectpublic class ChangeTimeAspect { @Autowired private ChangeTimeBo changeTimeBo; @Pointcut("execution(* com.zhaohuan.back.game.menuInfo.bo.MenuInfoBo.*MenuInf...

2015-03-09 15:30:29 135

hibernate tools 3.3.1

hibernate tools 3.3.1

2012-12-03

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除