自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(202)
  • 资源 (2)
  • 收藏
  • 关注

原创 mongodb主从同步、数据一致性和高可用分析

mongodb主从同步、数据一致性和高可用分析

2022-04-08 20:19:02 2987

原创 对强一致性的理解

        对于分布式存储系统来说,数据的强一致性:需要从客户端的角色来看存储系统的一致性,客户端调用存储系统时,只要存储系统返回写数据成功,存储系统就需保证任何情况数据都不会丢失;如果返回写失败,存储系统就需保证数据不会写进去;如果是time out状态,属于待定状态,存储系统保证数据一致就好,数据可能写成功也可能写失败。 ...

2018-12-13 16:38:56 608

转载 JSONP跨域的原理解析

转自 http://www.nowamagic.net/librarys/veda/detail/224JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含

2016-10-20 17:27:25 795

转载 数字证书原理(ssl,https)

文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出! 1、基础知识      这部分内容主要解释一些概念和术语,最好是先理解这部分内容

2016-10-19 18:18:00 1030

转载 LVS:三种负载均衡方式比较

1、什么是LVS?  首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客

2016-03-11 10:03:29 1677

转载 Socket/Epoll主要流程对socket错误码正确处理

注:转载一个同事的工作笔记。以下是对相关流程和socket错误码正确处理的小结。一. Socket/Epoll主要遇到的问题:(1) 非阻塞socket下,接收流程(recv/recvfrom)对错误(EINTR/EAGAIN/EWOULDBLOCK)当成Fatal错误处理,产生频繁断连.(2)EPOLLERR/EPOLLHUP事件时,直接调用socket异常处理,产生

2015-09-02 16:04:16 8484

原创 分布式事务-二阶段提交与三阶段提交

在分布式系统中,事务往往包含有多个参与者的活动,单个参与者上的活动是能够保证原子性的,而多个参与者之间原子性的保证则需要通过两阶段提交来实现,两阶段提交是分布式事务实现的关键。

2015-08-16 14:19:02 22277 5

转载 UNIX下的LD_PRELOAD环境变量

前言        也许这个话题并不新鲜,因为LD_PRELOAD所产生的问题由来已久。不过,在这里,我还是想讨论一下这个环境变量。因为这个环境变量所带来的安全问题非常严重,值得所有的Unix下的程序员的注意。 在开始讲述为什么要当心LD_PRELOAD环 境变量之前,请让我先说明一下程序的链接。所谓链接,也就是说编译器找到程序中所引用的函数或全局变量所存在的位置。一般来说,程序的

2015-06-11 16:09:49 590

转载 敏捷开发之Scrum

转至:http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html该博文把scrum介绍得挺好,与本人之前实践的srcum基本吻合,故转载过来,下面是具体内容。 什么是敏捷开发?敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。怎么理解呢?首先,我们要理解

2015-04-11 15:29:27 846 1

转载 各种软件开发模式简介

转自:http://www.cnblogs.com/liang--liang/p/3613815.html1. 边做边改模型(Build-and-Fix Model)  好吧,其实现在许多产品实际都是使用的“边做边改”模型来开发的,特别是很多小公司产品周期压缩的太短。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。  在这个模型中,开

2015-03-29 21:35:41 1775

原创 redis cluster源码研究--create cluster

create cluster是指创建或搭建redis集群。     这里以搭建六个节点的redis集群(redis cluster最少节点为六个节点)为例进行分析。一、创建步骤:(1)节点配置需打开cluster配置项,最小关注配置为如下: port 7000 cluster-enabled yes cluster-config-file nodes.conf

2015-01-31 17:11:49 1942

原创 redis cluster源码研究--reshard

reshard

2015-01-29 22:14:56 3211

原创 redis cluster源码研究--增删节点

增删节点

2015-01-28 20:38:52 1127

原创 redis cluster源码研究--配置一致性保证

配置一致性

2015-01-14 11:29:30 1539

原创 redis cluster源码研究--failover

failover

2015-01-13 22:29:51 3408

原创 redis cluster--简介

redis3.0是redis cluster版本。

2015-01-10 20:53:18 2845

转载 Zookeeper概述(译)

译自http://zookeeper.apache.org/doc/trunk/zookeeperOver.htmlZooKeeper是一个用于分布式应用的开源分布式协调服务。它提供了简单的原语集合,分布式应用可在这些原语之上构建用于同步、配置维护、分组和命名的高层服务。ZooKeeper的设计使得编程容易,并且使用类似于广泛熟知的文件系统目录树结构的数据模型。它运行在Java环境中,但是有J

2014-12-01 16:07:42 3911

转载 Raft一致性协议

分布式存储系统通常通过维护多个副本来进行fault-tolerance,提高系统的availability,带来的代价就是分布式存储系统的核心问题之一:维护多个副本的一致性。一致性协议就是用来干这事的,即使在部分副本宕机的情况下。Raft是一种较容易理解的一致性协议。一致性协议通常基于replicated state machines,即所有结点都从同一个state出发,都经过同样的一些操作序列,

2014-09-09 16:29:36 13414 1

转载 Apache kafka原理与特性(0.8V)

前言: kafka是一个轻量级的/分布式的/具备replication能力的日志采集组件,通常被集成到应用系统中,收集"用户行为日志"等,并可以使用各种消费终端(consumer)将消息转存到HDFS等其他结构化数据存储系统中.因为日志消息通常为文本数据,尺寸较小,且对实时性以及数据可靠性要求不严格,但是需要日志存储端具备较高的数据吞吐能力,这种"宽松"的设计要求,非常适合使用kafka. 

2014-07-30 22:06:01 1403

转载 Zookeeper工作原理

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookee

2014-07-26 21:48:56 1287

转载 select,epoll,poll比较

转自:http://blog.sina.com.cn/s/blog_8fa7dd41010153zx.htmlselect,poll,epoll简介selectselect本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1 单个进程可监视的fd数量被限制2 需要维护一个用来存放大量fd的数据结构,

2014-07-14 22:19:15 825

转载 Linux 对SSD硬盘优化的方法

from:http://www.yangzhi.org/linux-%E5%AF%B9ssd%E7%A1%AC%E7%9B%98%E4%BC%98%E5%8C%96%E7%9A%84%E6%96%B9%E6%B3%95/ 运行”sudo gedit /etc/fstab”来修改 1、关闭日志功能方法一:fstab里加挂载参数data=writebac

2014-05-04 16:07:00 7606

转载 内存屏障(__asm__ __volatile__("": : :"memory"))

内存屏障(memory barrier) #define set_mb(var, value) do { var = value; mb(); } while (0) #define mb() __asm__ __volatile__ ("" : : : "memory") 1)set_mb(),mb(),barrier()函数追踪到底,就是__asm__ __volatile__

2014-04-26 18:34:40 6667

原创 linux下控制CPU不降频命令

$ echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null

2014-03-27 17:31:28 6443

转载 并发控制与事务隔离

并发控制(Concurrency control)并发控制描述了数据库处理隔离以保证数据正确性的机制。为了保证并行事务执行的准确执行数据库和存储引擎在设计的时候着重强调了这一点。典型的事务相关机制限制数据的访问顺序(执行调度)以满足可序列化 和可恢复性。限制数据访问意味着降低了执行的性能,并发控制机制就是要保证在满足这些限制的前提下提供尽可能高的性能。经常在不损害正确性的情况下,为了达到更好的

2014-03-23 17:21:46 1552

原创 Kyoto Cabinet 实现原理

由于最近在做分布式存储系统,需要一个小、性能好、靠谱的存储引擎,我们瞄准了Kyoto Cabinet,希望通过分析源码能对它进行改造成我们需要的引擎,这一工作落在我身目上,于是我花了一星期时间彻底地分析了Kyoto Cabinet源码,下面将分享下由Kyoto Cabinet源码分析出的实现原理。       由于最近比较忙,后面再补上后面的内容,先留个位,待续。。。

2014-03-23 13:41:42 2530 2

转载 [译]Kyoto Cabinet 基本规格书

如果你知道 Tokyo Cabinet ,那么就应该知道 Kyoto Cabinet,因为他们都是同一个作者(平林幹雄)开发出来的 Key-Value 数据库。Kyoto Cabinet:a straightforward implementation of DBM,主页:http://fallabs.com/kyotocabinet/ ,演示文稿:http://www.slideshar

2014-03-19 17:55:45 920

转载 SkipList 跳表

源地址:http://kenby.iteye.com/blog/1187303为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要

2014-03-19 14:48:45 717

原创 有关linux下redis overcommit_memory的问题

背景    公司的一台主redis经常出现crash,通过log发现下面的告警,很可能由它引起的:[13223] 17 Mar 13:18:02.207 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm

2014-03-17 15:36:59 52455 1

原创 mysql主主关系配置

mysql支持主主关系,是通过同步bin-log来实现数据同步,如mysqlA与mysqlB是主主关系,mysqlA的数据是通过同步mysqlA的bin-log来将数据同步到mysqlB,相反mysqlB的数据是通过同步mysqlB的bin-log来将数据同步到mysqlA。根据这一原理,如果双写mysqlA和mysqlB,可能产生数据冲突而造成数据不一致,因此在使用时需要避免双写造成的数据冲突问

2014-02-19 21:26:17 2960

转载 rabbitMQ在高可用方面的集群方案

转至:http://blog.csdn.net/yangbutao/article/details/10982391下面介绍rabbitMQ的两个高可用方面的集群方案1、普通的集群rabbitMQ中的exchange和queue都包含meta、contents、state等信息,exchange在集群中的每个节点都保存一份数据,但是queue不一样,queue在集群中对于conte

2014-02-18 15:53:19 9410

原创 MVCC

为了实现操作可串行化,同时避免锁机制存在的各种问题,我们可以采用基于多版本并发控制(Multiversion concurrency control,MVCC)思想的无锁并发机制。人们一般把基于锁的并发控制机称成为悲观机制,而把MVCC等机制称为乐观机制。这是因为锁机制是一种预防性的,读会阻塞写,写也会阻塞读,当锁定粒度较大,时间较长是并发性能就不会太好;而MVCC是一种后验性的,读不阻塞写,写也

2013-12-29 21:02:29 945

转载 两种主要MySQL表存储结构MyISAM和InnoDB比较

转至:http://www.codesky.net/article/201011/147080.html摘要:MyISAM 是MySQL关系数据库管理系统的默认储存引擎,而InnoDB是MySQL的另一个存储引擎,正成为目前MySQL AB所发行新版的标准,下文对这两者进行了比较,供您参考。MySQL表存储结构是MySQL数据库的重要组成部分,下面就为您介绍两种主要MySQL表

2013-12-29 20:36:35 2118

转载 Berkeley DB -- 主从复制(HA)下部

转至:http://blog.sina.com.cn/s/blog_466c6640010002hh.htmlNetwork partitionsbdb replication 的实现可能被网络隔离的问题影响。例如,考虑replication组有n个成员。网络隔离让master在一边,多于一半(n/2)的站点在另外一边。和master在一边的站点将继续前进,master继续接受数据

2013-12-29 20:24:26 1160

转载 Berkeley DB -- 主从复制(HA)中部

转至:http://blog.sina.com.cn/s/blog_466c6640010002h4.htmlSynchronizing with a master 当一个client探测到replication组内一个新的master后,在它能去处理新的数据库变化之前,这个client必须去同步这个新的master。同步是一个重量及操作,它能同时给这个client

2013-12-29 20:23:04 1495

转载 Berkeley DB -- 主从复制(HA)上部

转至:http://blog.sina.com.cn/s/blog_466c6640010002ea.htmlIntroductionbdb包括对构建基于复制(replication)的高可用性应用程序的支持。bdb replication组由一些独立配置的数据库环境组成。组里只有一个master数据库环境和一个或多个client环境。Master环境支持读和写,client环境支

2013-12-29 20:17:54 2742

转载 berkeley db--进阶特性分析

转至:http://blog.jqian.net/post/berkeley-db.html数据存储Berkeley DB的数据存储可以抽象为一张表,其中第一列是key,剩余的n-1列(fields)是value。BDB访问数据库的方式,或者套用MySQL数据库的说法是存储引擎,有四种:Btree 数据保存在平衡树里,key和value都可以是任意类型,并且可以有duplica

2013-12-29 20:05:13 4387

转载 berkeley db--入门介绍

转至:http://blog.sina.com.cn/s/blog_502c8cc40100yqkj.html1. Berkeley DB的简介Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对 (Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大25

2013-12-29 19:53:03 2726

转载 leveldb实现原理

转至:http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html LevelDb日知录之一:LevelDb 101  说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat。这两位是Google公司重

2013-12-23 20:08:43 965

转载 简单理解Memcached的Slab Allocation

Slab AllocationSlab Allocation的原理——将分配的内存分割成各种尺寸的块(chunk), 并把尺寸相同的块分成组(chunk的集合),每个chunk集合被称为slab。Memcached的内存分配以Page为单位,Page默认值为1M,可以在启动时通过-I参数来指定。Slab是由多个Page组成的,Page按照指定大小切割成多个chunk。其结构图如下:

2013-10-09 17:54:59 6762

从硬盘安装linux

Linux操作系统支持多种安装方式。本章将讨论从硬盘安装对红旗Linux、共创Linux等各种版本的Linux都适用的通用方法。

2010-01-29

一个实用的企业文化软件

一个介绍企业文化很好的软件!有各种各类的企业文化!只需简单安装就行了.非常实用.

2009-04-13

空空如也

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

TA关注的人

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