自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

end's coding life

赤子之心

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 Mysql事务隔离级别与锁

数据库的事务有几种特性,例如一致性和隔离性,一般通过加锁来实现。同时数据库又是一个高并发的应用,如果加锁过度或者不当将严重影响性能。数据库提供了几种隔离级别来供选择,本文通过解析InnoDB的加锁机制是如何实现几种隔离级别,来更深刻的理解mysql的锁。   两阶段锁    首先,事务的所操作分为两个阶段:加锁和解锁,两者不想交。因为事务开始时,并不知道会用到哪些数据,所以加锁阶段

2016-05-29 12:49:31 6096

原创 Innodb中的事务隔离级别和锁的关系

前言:我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。#一次封

2016-05-29 12:48:24 10436

原创 REPEATABLE-READ事务隔离级别 && 间隙锁

表结构create table t( name varchar(255) primary key, id int not null, key idx_id (id));insert into t(name,id) values ('a',15),('b',10),('c',6),('d',10),('f',11),('zz',2);Session Amysql> beg

2016-05-27 17:49:53 1907

原创 MySQL_REPEATABLE-READ事务隔离级别 && 幻读

表结构create table t1(    a int primary key,    b int not null    )REPEATABLE-READ可重复读(一)这里打开两个mysql的命令行窗口,窗口A,即session1,窗口B,即session2。session1mysql> begin ;Query OK, 0 rows a

2016-05-27 17:25:26 2071

原创 InnoDB存储引擎MVCC的工作原理

InnoDB存储引擎的行结构MySQL官方手册https://dev.mysql.com/doc/refman/5.7/en/innodb-multi-versioning.htmlInternally, InnoDB adds three fields to each row stored in the database. A 6-byte DB_TRX_ID fie

2016-05-27 17:20:25 2262

原创 google可用host5月27日

127.0.0.1 localhost255.255.255.255 broadcasthost::1 localhostfe80::1%lo0 localhost# Modified hosts start104.25.26.25 share.dmhy.org104.25.27.25 share.dmhy.org# Amazon AWS Start27.0.1.125 ap-n...

2016-05-27 11:36:43 4422

原创 MySQL 加锁处理分析

背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上...

2016-05-27 11:30:01 7306 1

原创 Mysql优化相关总结

优化顺序:选择适当的引擎和表结构和数据类型建立索引,优化sql。增加缓存,redis、memcache。主从、主主,读写分离。mysql自带分区表根据业务耦合垂直拆分,分布式数据库水平拆分,选择合理的sharding key。引擎区别与选择:Innodb采用聚簇索引,聚簇索引包含data。辅助索引(复合索引、前缀索引、唯一索引)存储的是主索引的值,所以查找时

2016-05-27 09:14:32 8398 1

原创 一次CMS GC问题排查过程(理解原理+读懂GC日志)

这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下。这篇文章分三部分:1、问题的场景和处理过程;2、GC的一些理论东西;3、看懂GC的日志先说一下问题吧问题场景:线上机器在半夜会推送一个700M左右的数据,这个时候有个数据置换的过程,也就是说有700M*2的数据在heap区域中,线上系统超时比较多,导致了很严重(严重程度就不说了)的问题。问

2016-05-16 12:04:36 3114

原创 阻塞、非阻塞和同步、异步的讨论

一、概念异步:某个事情需要10s完成。而我只需要调用某个函数告诉xxx来帮我做(然后我再干其他的事情)同步:某个事情需要10s完成,我需要一直等它完成(等10s),再能继续后面的工作。阻塞:做某件事情,直到完成,除非超时非阻塞:尝试做,如果不能做,就不做(直接返回),如果能做,就做。前两者和后两者不容易区分,不过前两者更多的有涉及到多线程交互(消息)的场景。二、举个例子

2016-05-16 11:35:40 544

原创 Dubbo架构设计

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。

2016-05-16 10:31:14 620

原创 为什么kafka使用磁盘而不是内存

Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。而且Linux对于磁盘的读写优化也比较多,包括read-ahead和write-behind,磁盘缓存等。如果在内存做这些操作的时候,一个是JAVA对象的内存开销很大,另一个是随着堆内存数据的增

2016-05-13 10:07:26 7579

原创 Memcached实现机制

Memcached一般被用于高并发场景下,数据库前的缓存层,用以缓解数据库的读取压力,提高应用速度和可扩展性。    特点:协议简单,基于简单的文本行协议基于libevent的事件处理,使其在linux上能发挥高性能内存机制,所有数据仅存储在内存中,一旦重启则全部失效,容量达到一定阈值,会根据LRU算法删除。同时提供key的expiretime。集群依赖客户端,分布式功能不

2016-05-12 16:48:51 1925

原创 Kafka的NIO通信机制

一、Kafka通信机制的整体结构74EACA88-8B9D-45F8-B7BF-202D658205A9.png这个图采用的就是我们之前提到的SEDA多线程模型,链接如下:http://www.jianshu.com/p/e184fdc0ade41、对于broker来说,客户端连接数量有限,不会频繁新建大量连接。因此一个Acceptor thread线程处理新建连接绰绰

2016-05-11 10:05:51 3503

原创 EDA事件驱动架构

事件代表过去发生的事件,事件既是技术架构概念,也是业务概念。以事件为驱动的编程模型称为事件驱动架构EDA。  EDA是一种以事件为媒介,实现组件或服务之间最大松耦合的方式。传统面向接口编程是以接口为媒介,实现调用接口者和接口实现者之间的解耦,但是这种解耦程度不是很高,如果接口发生变化,双方代码都需要变动,而事件驱动则是调用者和被调用者互相不知道对方,两者只和中间消息队列耦合。

2016-05-10 18:28:15 4566

原创 Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告

摘要  本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafka的性能,以及如何使用Kafka Manager监控Kafka的工作状态,最后给出了Kafka的性能测试报告。性能测试及集群监控工具  Kafka提供了非常多有用的工具,如Kafka设计解析(三)- Kafka High Availability (下)中提到的运维类工具—

2016-05-10 17:40:58 2706

原创 Kafka设计解析(四)- Kafka Consumer设计解析

摘要  本文主要介绍了Kafka High Level Consumer,Consumer Group,Consumer Rebalance,Low Level Consumer实现的语义,以及适用场景。以及未来版本中对High Level Consumer的重新设计–使用Consumer Coordinator解决Split Brain和Herd等问题。High Level

2016-05-10 17:40:33 1898

原创 Kafka设计解析(三)- Kafka High Availability (下)

摘要  本文在上篇文章基础上,更加深入讲解了Kafka的HA机制,主要阐述了HA相关各种场景,如Broker failover,Controller failover,Topic创建/删除,Broker启动,Follower从Leader fetch数据等详细处理过程。同时介绍了Kafka提供的与Replication相关的工具,如重新分配Partition等。Broker F

2016-05-10 17:39:58 1769

原创 Kafka设计解析(二)- Kafka High Availability (上)

摘要  Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供服务。若该Broker永远不能再恢复,亦或磁盘故障,则其上数据将丢失。而Kafka的设计目标之一即是提供数据持久化,同时对于分布式系统来说,尤其当集群规模上升到一定程度后,一台或者多台机器宕机的可能性大大提高,对于Failo

2016-05-10 17:39:23 1314

原创 Kafka设计解析(一)- Kafka背景及架构介绍

摘要  Kafka是由LinkedIn开发并开源的分布式消息系统,因其分布式及高吞吐率而被广泛使用,现已与Cloudera Hadoop,Apache Storm,Apache Spark集成。本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比。并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不同消息分发方式

2016-05-10 17:38:34 1388 1

原创 Bloom Filter

Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实例   为了说明Bloom Filter存在的重要意义,举一个实例:  假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。

2016-05-06 17:37:53 505

原创 一致性哈希算法

一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。     一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1

2016-05-06 17:20:43 794

指针论(强烈推荐!!!)

对指针的最详细 最底层的讲解、 很简短 但详细 全面

2011-08-08

空空如也

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

TA关注的人

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