- 博客(39)
- 资源 (2)
- 收藏
- 关注
原创 海量数据存储读后感
今天玩微薄的时候有人问我有没有数据存储的相关资料,我想了想。。虽然在这个领域内也算有 点积累,以前讲课的 ppt 有 200 多页,但毕竟 ppt 的信息量有限。所以在这里将这个系列的部分内容在这里进行重新编排主要将涉及到:1. 数据库原理关系代数 事务k-v 存储的使用数据存储模型数据写入模式性能和安全性分析2. 倒排索引3. 分布式 kv 系统数据的切分数据的管理和扩容数据安全性读写可用性4. 硬件存储在淘宝的测试数据和分析5. 淘宝在线数据存储检索经验介绍
2017-12-11 16:45:46
439
转载 zookeeper技术内幕-数据与存储
zookeeper-数据与存储 1. Zookeeper技术内幕 1.1. 数据与存储1.1.1. 内存数据 数据结构: ZooKeeper的数据模型是一棵树,而从使用角度看, Zookeeper就像一个内存数据库一样。在这个内存数据库中,存储了整棵树的内容,包括所有的节点路径、节点数据及其ACL信息等,Zookeeper会定时将这个数据
2017-12-06 12:38:00
678
转载 数据库学习:高并发数据库设计
一、库分表在Redis,memcached等缓存系统盛行的互联网时代,构建一个支撑每秒十万只读的系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等。支付系统要处理每秒十万笔订单,需要的是每秒数十万的数据库更新操作(insert加update),这在任何一个独立数据库上都是不可能完成的任务,所以我们首先要做的是对订单表(简称order)进行分库与分表。在进行数据库操作时,一般都
2017-11-30 10:45:27
1797
1
原创 华山论剑之jvm01 jvm 简介
JVM 简介1: 什么是JVM JVM 是java 虚拟机的简写, Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程
2017-08-23 23:28:05
350
原创 工具类 - 思维导图
百度百科思维导入的定义 思维导图. 在我们的工作和生活中可以经常使用思维导图, 有时候会有一些意想不到的成果. 思维导图的分类:全文思维导图 : 只有文字全图思维导图 : 只有图片图文思维导图 : 图文并茂 思维导图的结构:中心主题主干枝干 思维导图的三要素: 文字图像线条 : 线条的颜色尽量
2017-08-04 18:02:22
5555
原创 001 java 线程基础
java 线程java 传统线程同步获取同步锁synchronized : 等待 唤醒synchronized(obj) { obj.wait() : 线程等待 obj.notify : obj.notifyAll : }线程范围内的变量共享ThreadLocalclass A { private static ThreadLocal<A> tl=new ThreadLo
2016-05-05 22:15:09
362
原创 zk007 zookeeper curator api
原生api的不足连接的创建是异步的, 需要开发人员自行编码实现连接没有自动的超时重试机制zk本身不提供序列化机制,需要开发人员自行指定,从而实现序列化反序列化机制watcher 注册一次只会生效一次, 需要不断注册Watcher的使用方式不符合java本身的术语,如果采用监听器方式更容易理解。不支持递归创建树形节点curator 有点解决session会话超时重连Watcher反复
2016-04-27 15:23:23
883
原创 zk005 zk watcher介绍
问题: 集群中有多个机器,当某个通用的配置发生变化后,怎么让所有服务器的配置都统一生效 ?当某个集群节点宕机,其它节点怎么知道 ?答案: Zk中引入了watcher机制来实现了发布/订阅功能,能够让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者;watcher的机制组成客户端, 客户端watchManager, Zk服务器客户端向zk服务器注册watche
2016-04-27 14:40:34
561
原创 zk006 zk client api介绍
创建会话 ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) ZooKeeper(String connectString, int sessionTimeout, Watcher watcher, boolean canBeReadOnly) ZooKeeper(String connectString, int
2016-04-09 22:51:56
561
原创 zk004 - zk的ACL介绍
传统的文件系统中,ACL分为两个维度,一个是属组,一个是权限,子目录/文件默认继承父目录的ACL。而在Zookeeper中,znode的ACL是没有继承关系的,是独立控制的。zookeeper支持的权限CREATE(c): 创建权限,可以在在当前node下创建child nodeDELETE(d): 删除权限,可以删除当前的nodeREAD(r): 读权限,可以获取当前node的数据,可以li
2016-03-29 11:05:00
2073
原创 zk003 -zk 客户端的常用命令
zookeeper常用的命令使用zk客户端连接到服务器, 打help 命令:connect host:portget path [watch]ls path [watch]set path data [version]rmr pathdelquota [-n|-b] pathquit printwatches on|offcreate [-s] [-e] path data acl
2016-03-29 11:01:54
551
原创 zk-002 zookeeper的基本概念
数据模型分层结构树形结构中的每个节点叫做znode每个znode包含三类数, 第一: znode自身的数据内容;第二: znode 节点的状态信息 stat info, 来存储数据的变化 ACL的变化和时间戳;第三: znode 的ACL 信息(权限信息). 节点路径 斜线分隔例如: /Zoo/Duck没有相对路径数据发生变化时,版本号会递增可以对Znode中的数据进行读写操
2016-03-25 23:19:08
924
原创 zk001- zk的安装配置
zk的安装配置ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪单机模式下载zookeeper的安装包之后, 解压到合适目录. 进入zookeeper目录下的conf子目录, 创建zoo.cfg:tickTime=2000 dataDir=/Users/apple/zookeeper/data dataLogDir=/Users/apple/zoo
2016-03-25 21:17:56
735
转载 001 高性能IO模型浅析
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexi
2016-03-14 21:51:59
409
翻译 4- java client api
java client api 手册预览RabbitMQ java 客户端使用 com.rabbitmq.client 作为最上层的包名. 关键的类和接口是:ChannelConnectionConnectionFactoryConsumerChannel 接口包含发送消息,消费消息等协议相关的操作. Connection 被用来创建 channels, 注册连接生命周期相关的handler
2016-03-12 18:24:26
1662
1
转载 3 AMQP 0-9-1 Model Explained
AMQP 0-9-1 简介关于本指南本指南介绍了RabbitMQ所使用的 AMQP 0-9-1版本。原始版本由Michael Klishin贡献,Chris Duncan编辑。AMQP 0-9-1 和 AMQP 模型高阶概述AMQP是什么AMQP(高级消息队列协议)是一个网络协议。它支持符合要求的客户端应用(application)和消息中间件代理(me
2016-03-03 23:07:48
747
转载 2-6 Tutorials with python -> RPC
远程过程调用(RPC)(Python客户端 —— 使用 pika 0.9.8)在第二篇教程中我们介绍了如何使用工作队列(work queue)在多个工作者(woker)中间分发耗时的任务。可是如果我们需要将一个函数运行在远程计算机上并且等待从那儿获取结果时,该怎么办呢?这就是另外的故事了。这种模式通常被称为远程过程调用(Remote Procedure Call)或者RPC
2016-03-03 23:04:44
453
转载 2-5 Tutorials with python -> Topics
为什么需要主题交换机?(使用Python 客户端 —— pika 0.9.8)上一篇教程里,我们改进了我们的日志系统。我们使用直连交换机替代了扇型交换机,从只能盲目的广播消息改进为有可能选择性的接收日志。尽管直连交换机能够改善我们的系统,但是它也有它的限制 —— 没办法基于多个标准执行路由操作。在我们的日志系统中,我们不只希望订阅基于严重程度的日志,同时还希望订阅基
2016-03-03 23:02:06
439
转载 2-4 Tutorials with python -> Routing
路由(Routing)(使用pika 0.9.5 Python客户端)在前面的教程中,我们实现了一个简单的日志系统。可以把日志消息广播给多个接收者。本篇教程中我们打算新增一个功能 —— 使得它能够只订阅消息的一个字集。例如,我们只需要把严重的错误日志信息写入日志文件(存储到磁盘),但同时仍然把所有的日志信息输出到控制台中绑定(Bindings)前面的例子,我们已经创建过绑定
2016-03-03 22:58:08
394
转载 2-3 Tutorials with python Publish Subscribe
发布/订阅(使用pika 0.9.5 Python客户端)在上篇教程中,我们搭建了一个工作队列,每个任务只分发给一个工作者(worker)。在本篇教程中,我们要做的跟之前完全不一样 —— 分发一个消息给多个消费者(consumers)。这种模式被称为“发布/订阅”。为了描述这种模式,我们将会构建一个简单的日志系统。它包括两个程序——第一个程序负责发送日志消息,第二个程序负责
2016-03-03 22:55:56
519
转载 2-2 Tutorials with python -> Work Queues
工作队列(使用pika 0.9.5 Python客户端)在第一篇教程中,我们已经写了一个从已知队列中发送和获取消息的程序。在这篇教程中,我们将创建一个工作队列(Work Queue),它会发送一些耗时的任务给多个工作者(Worker)。工作队列(又称:任务队列——Task Queues)是为了避免等待一些占用大量资源、时间的操作。当我们把任务(Task)当作消息发送
2016-03-03 22:53:34
367
转载 2-1 Tutorials with python -hello world
介绍RabbitMQ是一个消息代理。它的核心原理非常简单:接收和发送消息。你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处。在这个比喻中,RabbitMQ就扮演着邮箱、邮局以及邮递员的角色。RabbitMQ和邮局的主要区别是,它不是用来处理纸张的,它是用来接收、存储和发送消息(message)这种二进制数据的。一般提到RabbitMQ和消息,都会用到一
2016-03-03 22:50:03
255
转载 1- RabbitMQ能为你做些什么
消息系统允许软件应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和接收分离来实现应用程序的异步和解偶.或许你正在考虑进行数据投递,非阻塞操作或推送通知。或许你想要实现发布/订阅,异步处理,或者工作队列。所有这些都属于消息系统的模式。RabbitMQ是一个消息代理 - 一个消息系统的媒介。它可以为你的应用提供一个通用的消息
2016-03-03 22:46:48
3406
1
转载 Git详解之三 Git分支
Git 分支几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分
2015-08-21 16:17:44
303
转载 Git详解之二 Git基础
Git 基础读完本章你就能上手使用 Git 了。本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令。读完本章,你就能初始化一个新的代码仓库,做一些适当配置;开始或停止跟踪某些文件;暂存或提交某些更 新。我们还会展示如何让 Git 忽略某些文件,或是名称符合特定模式的文件;如何既快且容易地撤消犯下的小错误;如何浏览项目的更新历史,查看某两次更新之间的
2015-08-21 15:44:07
390
转载 Git详解之一 Git起步
起步本章介绍开始使用 Git 前的相关知识。我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作。读完本章,你就会明白为什么 Git 会如此流行,为什么你应该立即开始使用它。 1.1 关于版本控制什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本书
2015-08-21 15:12:15
310
原创 zookeeper basic 01 安装 验证
最近学习zookeeper, 顺便把zookeeper的一些知识整理一下. 先介绍zookeeper的安装验证.学习环境 CentOS Linux 64 , JDK 1.7 , zookeeper-3.4.6参考: http://zookeeper.apache.org/doc/r3.4.6/zookeeperStarted.html#sc_RunningReplicatedZooK
2015-02-15 16:00:10
358
翻译 002 java nio 01 - channel and buffer
通道(Channel)Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示: Channel的实现 这些是Jav
2014-12-29 16:52:16
552
转载 Redis的内存结构分析
1 Redis 内存存储结构本文是基于 Redis-v2.2.4 版本进行分析.1.1 Redis 内存存储总体结构Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有一个 redisDb *db; 成员变量, RedisServer 在初始化时,会根据配置文件的 db 数量来创
2014-12-07 14:31:53
417
转载 MySQL 加锁处理分析
1 背景 11.1 MVCC:Snapshot Read vs Current Read 21.2 Cluster Index:聚簇索引 31.3 2PL:Two-Phase Locking 31.4 Isolation Level 42 一条简单SQL的加
2014-11-16 13:45:37
429
原创 spring batch之三 配置和运行Job
本文基于spring batch In the domain section , the overall architecture design was discussed, using the following diagram as a guide:While the Job object may seem like a simple container for
2014-11-02 08:41:00
10885
原创 spring batch之一 域模型
原文请参考To any experienced batch architect, the overall concepts of batchprocessing used in Spring Batch should be familiar and comfortable. Thereare "Jobs" and "Steps" and developer supplied process
2014-11-01 22:34:50
834
原创 mysql 测试系列2 -TPCC 模型测试 -tpcc-mysql 安装测试
1: TPCC 模型介绍 请参考百度百科 : http://baike.baidu.com/view/2776305.htm2: Tpcc 的编译安装
2014-10-19 14:50:51
669
原创 mysql 测试系列1 -fio 磁盘性能测试
说明: 操作系统是CentOS Linux1: 安装fio #下载fi -> wget http://brick.kernel.dk/snaps/fio-2.1.10.tar.gz
2014-10-19 13:14:43
804
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人