- 博客(74)
- 收藏
- 关注
Riak - 使用篇(1)
分布式高可用键值对数据库Riak - 使用篇(1)请先参考Riak - 安装运维篇(1)安装部署并启动Riak集群(3个Node)。 Riak默认有两种端口,一种是protobuf端口,还有一种是HTTP Restful端口。 以前的Riak client java API会支持两种端口。最新的Riak client Java API作了很多改造,比如说利用netty4作为网络通信框架,...
2016-04-21 15:04:00
542
Netty - ByteBuf (3)
1. Netty - ByteBuf (3)1.3 ByteBuf相关实现源码相关类继承关系 其中,我们从AbstractByteBuf和他的子类开始分析,其他的多为衍生工具类。1.3.1. AbstractByteBuf上一节主要的源代码都是AbstractByteBuf中的,这里不再赘述其中的方法,其中的域如下所示: 其中有一个ResourceLeakDetector,用...
2016-04-20 13:30:00
215
Riak - 安装运维篇(1)
分布式高可用键值对数据库Riak - 安装运维篇(1)快速安装部署启动我的操作系统是Red Hat Enterprise Linux Server release 6.6 (Santiago),这也是我们目前生产上用的。 我直接在root下安装,先切换到root用户。 首先,安装下需要的软件,Riak官网给的不全:#su - root#yum install pam-d...
2016-04-19 17:51:00
498
Riak - 背景篇(3)
分布式高可用键值对数据库Riak - 背景篇(3)Dynamo对于数据版本的处理数据版本问题不止存在于分布式系统,这里针对分布式数据库系统简单讨论下。先看一个简单的例子,用户x对key1做了一次写入操作,我们设值是数字3。然后用户y读取了key1,这个时候用户y知道的值是3。然后用户x对值做了一个+1操作,将新值写入,现在key1的值是4了。而用户y也做了一次+1操作,然后写入,因为用户...
2016-04-19 15:38:00
340
Riak - 背景篇(2)
Dynamo备份思想因为我们用的PC机器性能不一,质量参差不齐,可能每天都会有机器挂掉或者重启。我们需要保证在某个机器挂掉或者损坏时,保证工作的正常运行。 我们可能最先想到的就是,给每个节点机器加一台备用的节点。这样,在主节点宕机时,备节点就可以顶上去。但是仔细想一下,这个方案是让人不放心的。因为当一主一备中的某一台机器坏掉,另外一台就成了一个单点运行的节点。这个时候另外一个节点一旦发生错...
2016-04-19 11:34:00
231
Netty - ByteBuf (2)
1. Netty - ByteBuf (2)1.2. netty的ByteBuf1.2.1. ByteBuf结构Bytebuf是netty中的ByteBuffer,结构上通过两个位置指针协助缓冲区的读写操作。分别是writerIndex和readerIndex 初始状态: 当写入5个字节后: 这时,writerIndex为5,这时如果开始读取,那么这个writerIndex可以作为...
2016-04-19 10:05:00
181
MongoDB - 简介和快速搭建
先不废话,先把MongoDB装好再说安装运行MongoDB服务器下载解压:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.5.tgztar zxvf mongodb-linux-x86_64-rhel70-3.2.5.tgzmv mongodb-linux-x86_64-rhel7...
2016-04-18 22:38:00
92
Java 7新特性总结 - Java IO
绝大多数应用程序在运行过程中都会进行两种类型的计算:一种是占用CPU时间的计算,另外一种是与数据输入/输出(I/O)相关的计算。在这两种计算中,一般是与I/O相关的计算所花费的时间占较大的比重。这其中的主要原因是在进行I/O操作时,一般需要竞争操作系统中有限的资源,或是需要等待速度较慢的外部设备完成其操作,从而造成I/O相关的计算所等待的时间较长。从性能优化的角度出发,提升I/O相关操作的性能会...
2016-04-18 12:20:00
152
Java 7新特性总结 - Coin项目新语言特性
Coin项目OpenJDK中的Coin项目的目的是维护对Java语言所做的语法增强。 在Coin项目开始之初,曾经广泛地向社区征求提议。在短短的一个月时间内就收到了近70条提议。最后有9条提议被列入考虑之中。在这9条提议中,有6条成为Java 7的一部分,剩下的2条提议会在Java 8中重新考虑,还有1条提议被移到其他项目中实现。1. 在switch语句中使用字符串在Java 7之...
2016-04-18 11:19:00
131
Netty - Bytebuf(1)
Netty - ByteBuf1.1 原生的ByteBufferJava NIO的ByteBuffer被称为字节缓冲区。此类针对字节缓冲区定义了以下六类操作:读写单个字节的绝对和相对 get 和 put 方法;将此缓冲区的连续字节序列传输到数组中的相对批量 get 方法;将 byte 数组或其他字节缓冲区中的连续字节序列传输到此缓冲区的相对批量 put 方法;读写其他基本...
2016-04-18 09:35:00
148
MySQL通信协议栈Java实现-(2)协议包格式
2. 协议包格式MySQL client和MySQL server之间要想传输数据,必须: 1. 将数据切分成若干个大小不超过字节(16MB)的packet里面 2. 将每一个数据包封装一个包头2.1. 数据包结构Type Name Descriptionint<3> payload_length 负载数据长度,除了包头的前4字节剩余的...
2016-04-15 09:35:00
249
MySQL通信协议栈Java实现-(1)数据类型
最新官网MySQL通信协议栈说明地址:http://dev.mysql.com/doc/internals/en/client-server-protocol.html1. 数据类型1.1 整型1.1.1 定长整型定长整型最小位在最前,一共有如下几种定长整型:int<1>int<2>int<3>int<4>...
2016-04-14 17:01:00
253
正则表达式
正则表达式 -语法正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。构造正则表达式的方法和创建数学表达式的方法一样。也就是...
2016-03-31 15:01:00
76
Riak - 背景篇(1)
分布式高可用键值对数据库Riak - 背景篇(1)Riak简介典型的现代关系数据库在某些类型的应用程序中表现平平,难以满足如今的互联网应用程序的性能和可扩展性要求。因此,需要采用不同的方法。在过去几年中,一种新的数据存储类型变得非常流行,通常称为 NoSQL,因为它可以直接解决关系数据库的一些缺陷。Riak 就是这类数据存储类型中的一种。 Riak 并不是惟一的一种 NoSQL 数据存...
2016-03-26 11:54:00
311
Zookeeper - 开发篇(1)
本文用Java api开发一些基本的程序,从而搞清楚zk的一些基本用法。 zk客户端在连接 zk 服务器需要实例化一个org.apache.zookeeper.ZooKeeper对象,然后调用该类提供的接口与Zookeeper服务器进行交互。如果不指明,该类的所有方法均是线程安全的。一旦 zk客户端与服务器建立连接,客户端就会被分配一个会话ID(session ID),客户端会定期向服务器端发...
2016-03-21 10:18:00
95
Clojure系列 - 环境与IDE配置
看七周七并发这本书,对Clojure产生了浓厚的兴趣。写篇日志记录下成长以及“成长的烦恼”。 使用Clojure,必须先准备好工具。首先,我们需要搭建Clojure的构建工具 - lein。Clojure一大特性就是REPL(Read-Evaluate-Print Loop),代码输入,立即执行,不用编译。可以通过lein repl来启动REPL。准备lein首先去lein官网去下...
2016-03-16 21:47:00
453
Clojure系列 - 环境与IDE配置
看七周七并发这本书,对Clojure产生了浓厚的兴趣。写篇日志记录下成长以及“成长的烦恼”。 使用Clojure,必须先准备好工具。首先,我们需要搭建Clojure的构建工具 - lein。Clojure一大特性就是REPL(Read-Evaluate-Print Loop),代码输入,立即执行,不用编译。可以通过lein repl来启动REPL。准备lein首先去lein官网去下...
2016-03-16 21:47:00
99
[转载]十六款值得关注的NoSQL与NewSQL数据库
传统关系型数据库在诞生之时并未考虑到如今如火如荼的移动、社交以及大数据负载类型,同时也并不适合处理极端规模处理任务。不过大家不必担心,十六家专业企业已经为我们带来他们各自的次世代NoSQL与NewSQL选项。 为什么在处理全新数据类型以及极端业务规模实例时,企业正越来越多地选择备用方案来替代占据领导地位的关系型数据库管理系统(简称RDMS)? 带着这个问题,我们与The Weathe...
2016-03-15 10:06:00
211
Zookeeper - 介绍篇(1)
Paxos算法Paxos算法是Zookeeper实现的核心思路,但是Paxos算法理解比较抽象。这里先简述下我的理解: 首先,Paxos算法解决的问题是:每一个处于正常工作的服务端都执行一个相同的命令序列。 意思就是:在如下的分布式系统中,有多个Client和多个Server。 每个client都可以和每个server进行交互。假设每个Client此时各发一个请求,分别是O1,O2,O...
2016-03-14 20:11:00
107
Zookeeper - 介绍篇(3)
ZK会话ZK会话有四种状态:NOT_CONNECTED, CONNECTING, CONNECTED, CLOSED, 会话状态转换图为 Client初始化连接,状态转为CONNECTING(①)Client与Server成功建立连接,状态转为CONNECTED(②)Client丢失了与Server的连接或者没有接受到Server的响应,状态转为CONNECTING(③)Clie...
2016-03-11 10:06:00
92
Zookeeper - 介绍篇(3)
ZK会话ZK会话有四种状态:NOT_CONNECTED, CONNECTING, CONNECTED, CLOSED, 会话状态转换图为 Client初始化连接,状态转为CONNECTING(①)Client与Server成功建立连接,状态转为CONNECTED(②)Client丢失了与Server的连接或者没有接受到Server的响应,状态转为CONNECTING(③)Clie...
2016-03-11 10:06:00
84
Zookeeper - 介绍篇(2)
ZK数据结构zk整体保存数据的结构类似于文件系统的树形结构。但是每个节点可以拥有一个名字,并作为一个文件夹包括多个其他节点,同时还可以保存数据。 需要注意:空字符(\u0000)不能作为名字\u0001 - \u0019 和\u007F - \u009F最好不要作为名字的一部分,因为他们表示的字符不好显示或者因为他们可以被转换成多种表现形式\ud800 -uF8FFF, \uFF...
2016-03-10 15:23:00
89
Zookeeper - 介绍篇(2)
ZK数据结构zk整体保存数据的结构类似于文件系统的树形结构。但是每个节点可以拥有一个名字,并作为一个文件夹包括多个其他节点,同时还可以保存数据。 需要注意:空字符(\u0000)不能作为名字\u0001 - \u0019 和\u007F - \u009F最好不要作为名字的一部分,因为他们表示的字符不好显示或者因为他们可以被转换成多种表现形式\ud800 -uF8FFF, \uFF...
2016-03-10 15:23:00
69
Zookeeper - 部署篇
Zookeeper 安装与配置本文采用 Zookeeper-3.4.8 为基础介绍它的安装步骤以及配置信息,下载地址:Zookeeper-3.4.8。Zookeeper功能强大,但是安装却十分简单,下面重点以伪分布式模式来介绍 Zookeeper 的安装。伪分布式模式安装Zookeeper 安装模式包括:单机模式,伪分布式模式和完全的集群模式。单机模式最简单,本文将跳过单机模式安...
2016-03-10 13:50:00
118
Zookeeper - 部署篇
Zookeeper 安装与配置本文采用 Zookeeper-3.4.8 为基础介绍它的安装步骤以及配置信息,下载地址:Zookeeper-3.4.8。Zookeeper功能强大,但是安装却十分简单,下面重点以伪分布式模式来介绍 Zookeeper 的安装。伪分布式模式安装Zookeeper 安装模式包括:单机模式,伪分布式模式和完全的集群模式。单机模式最简单,本文将跳过单机模式安...
2016-03-10 13:50:00
67
Zookeeper - 背景篇
Zookeeper以它的稳定性,高并发并且简单易用,目前在很多分布式系统中作为协调服务的中间件。Zookeeper官方文档很全面,目前,最新稳定版本为3.4.8:Zk 3.4.8 API文档Zk 3.4.8 开发文档Zk 3.4.8 编程实例网上关于Zookeeper的文档也非常多而且繁杂,但是,在各方面深入到骨髓的文章不多,博主手机了网上很多关于zk的资料,在这里整理总结并输出。...
2016-03-10 08:55:00
151
Zookeeper - 背景篇
Zookeeper以它的稳定性,高并发并且简单易用,目前在很多分布式系统中作为协调服务的中间件。Zookeeper官方文档很全面,目前,最新稳定版本为3.4.8:Zk 3.4.8 API文档Zk 3.4.8 开发文档Zk 3.4.8 编程实例网上关于Zookeeper的文档也非常多而且繁杂,但是,在各方面深入到骨髓的文章不多,博主手机了网上很多关于zk的资料,在这里整理总结并输出。...
2016-03-10 08:55:00
68
[笔记]Executors框架
框架结构任务:Runnable和Callable任务的执行:Executor接口->ExecutorService接口 ThreadPoolExecutorScheduledThreadPoolExecutor异步计算的结果:Future接口->FutureTask类ThreadPoolExecutornew ThreadPoolExecutor(cor...
2016-03-08 20:08:00
81
[转载]微服务实战(六):选择微服务部署策略
动机部署一个单体式应用意味运行大型应用的多个副本,典型的提供若干个(N)服务器(物理或者虚拟),运行若干个(M)个应用实例。部署单体式应用不会很直接,但是肯定比部署微服务应用简单些。 一个微服务应用由上百个服务构成,服务可以采用不同语言和框架分别写就。每个服务都是一个单一应用,可以有自己的部署、资源、扩展和监控需求。例如,可以根据服务需求运行若干个服务实例,除此之外,每个实例必须有自己的C...
2016-03-08 19:01:00
264
[转载]微服务实践(五):微服务的事件驱动数据管理
【编者的话】本文是使用微服务创建应用系列的第五篇文章。第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点;第二和第三篇描述了微服务架构模块间通讯的不同方面;第四篇研究了服务发现中的问题。本篇中,我们从另外一个角度研究一下微服务架构带来的分布式数据管理问题。微服务和分布式数据管理问题单体式应用一般都会有一个关系型数据库,由此带来的好处是应用可以使用 ACID transact...
2016-03-08 17:53:00
64
Canal+Otter - Canal篇(1)
Canal是阿里开源产品之一,是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,Canal主要支持了MySQL的binlog解析。为何要解析binlog: binlog中含有许多我们需要的信息,基于这些信息,我们可以实现很多功能:异构数据库同步数据库事件触发实现分布式事务数据检效与监控等等基本原理:MySQL主从同步原理:mas...
2016-03-08 12:20:00
1159
Canal+Otter - Canal篇(1)
Canal是阿里开源产品之一,是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,Canal主要支持了MySQL的binlog解析。为何要解析binlog: binlog中含有许多我们需要的信息,基于这些信息,我们可以实现很多功能:异构数据库同步数据库事件触发实现分布式事务数据检效与监控等等基本原理:MySQL主从同步原理:mas...
2016-03-08 12:20:00
199
[转载]微服务实战(四):服务发现的可行方案以及实践案例
这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这篇文章中,我们将会探讨服务发现相关问题。为什么要使用服务发现? 设想一下,我们正在写代码使用了提供RESTAPI或者ThriftAPI的服务,为了完成一次服务请求,代码需要知道服务实例的网络位置(IP地址和端口)。传统应用都运行在...
2016-03-07 20:28:00
153
[转载]微服务实战(三):深入微服务架构的进程间通信
【编者的话】这是采用微服务架构创建自己应用系列第三篇文章。第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使用微服务架构的优缺点。第二篇描述了采用微服务架构应用客户端之间如何采用API Gateway方式进行通信。在这篇文章中,我们将讨论系统服务之间如何通信。简介在单体式应用中,各个模块之间的调用是通过编程语言级别的方法或者函数来实现的。但是一个基于微服务的分布式应用是...
2016-03-07 11:30:00
85
[转载]微服务实战(二):使用API Gateway
【编者的话】本系列的第一篇介绍了微服务架构模式。它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点。在微服务架构中,每一个微服务暴露一组细粒度的服务提供点。在本篇文章中,我们来看它如何影响客户端到服务端通信,同时提出一种API Ga...
2016-03-07 10:40:00
87
[转载]微服务实战(一):微服务架构的优势与不足
这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始人。现在他为企业提供如何开发和部署应用的咨询服务。他也经常在http://microservices.io上发表有关微服务的文章。 微服务正在博客、社交媒体讨论组和会议演讲中获得越来越多的关注,在Gartner的2014 Hype Cycl...
2016-03-07 09:55:00
63
Canal+Otter - 前日篇(2)
数据库同步中间件Canal+Otter - 前日篇(2)MySQL+InnoDB架构体系MySQL体系前端接受连接,并提供多种API,连接池化可重用。这里连接可以理解为线程,来处理来自客户端的请求。后台存储引擎负责控制IO策略,内存缓冲和线程调度,以及会话事务管理。 我们这里分析在MySQL5.6以后的默认引擎InnoDB。InnoDB引擎结构:1. 内存:i...
2016-03-07 09:26:00
232
Canal+Otter - 前日篇(2)
数据库同步中间件Canal+Otter - 前日篇(2)MySQL+InnoDB架构体系MySQL体系前端接受连接,并提供多种API,连接池化可重用。这里连接可以理解为线程,来处理来自客户端的请求。后台存储引擎负责控制IO策略,内存缓冲和线程调度,以及会话事务管理。 我们这里分析在MySQL5.6以后的默认引擎InnoDB。InnoDB引擎结构:1. 内存:i...
2016-03-07 09:26:00
78
MyCat - 测试篇
数据库路由中间件MyCat - 测试篇测试背景为了检测MyCat性能表现以及架构扩展性,设计测试。首先需要编写压力测试代码,程序基于Jmeter,并且封装了JDBC,模拟涅槃项目实际应用的连接方式。测试程序生成基于当前系统时间的随机数,并且保证这个随机数一秒内重复概率为百万分之一。 程序请求必须保证每个分片的请求量是一样的. 测试脚本举例:package com.sf.has...
2016-03-06 15:16:00
240
MyCat - 测试篇
数据库路由中间件MyCat - 测试篇测试背景为了检测MyCat性能表现以及架构扩展性,设计测试。首先需要编写压力测试代码,程序基于Jmeter,并且封装了JDBC,模拟涅槃项目实际应用的连接方式。测试程序生成基于当前系统时间的随机数,并且保证这个随机数一秒内重复概率为百万分之一。 程序请求必须保证每个分片的请求量是一样的. 测试脚本举例:package com.sf.has...
2016-03-06 15:16:00
87
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人