摘要:
一、事务 一般来说,事务必须满足4个条件,也就是我们常说的ACID: 1)Atomicity 原子性:一个事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间的某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像是这个事务从来没有执行一样。 2)Consistency 一致性 阅读全文
摘要:
一、发布/订阅模式 在软件工程里面,发布/订阅是一种消息模式,这种模式旨在将消息发送者和消息接收者解耦。发送者不需要关心将消息发送给谁,接收者也不需要知道消息的发送者是谁。发送者将消息发布以后就结束动作,接收者可以订阅自己感兴趣的消息。 除了发布/订阅模式还有一种和它很类似的,消息队列,是一种典型的 阅读全文
摘要:
一、数据类型 redis的数据结构是key-value的键值对的形式,但是它和传统String-String的键值对形式不一样,它的value不仅仅是string类型,而是有着丰富的数据类型,如: 1)string 2)list 3)sets 4)sorted 5)hashes 6)bitmaps 阅读全文
摘要:
一、nosql简介 RDBMS(关系型数据库)提供的结构化编程,让数据建模以及应用程序编程变得非常简单,带来了非常高的经济效益,并且学习成本也比较低。但在当今数据大爆炸时代,每时每刻都会海量的数据产生,对于数据的读写要求也越来越高,RDBMS已经不能满足人们的需求了,nosql则应运而生。 nosq 阅读全文
摘要:
一、简介 mysql是一个开源的数据库管理系统,它相对于oracle更加地轻量、成本低,随着功能的日益完善,它变得备受企业喜爱,尤其是中小企业。 mysql的整体架构大体包括以下几个方面: 1)主体结构 2)物理文件组成 3)sql逻辑模块组成 4)sql逻辑模块协调工作 二、主体结构 mysql服 阅读全文
摘要:
一、nginx限流模块 接入层指的是请求流量的入口,我们可以在这里做很多控制,比如:负载均衡,缓存,限流等。 nginx中针对限流有两个模块可以处理: 1)ngx_http_limit_req_module;连接数限流模块 2)ngx_http_limit_conn_module;请求限流模块 连接 阅读全文
摘要:
一、简介 1)分布式限流 如果是单实例项目,我们使用Guava这样的轻便又高性能的堆缓存来处理限流。但是当项目发展为多实例了以后呢?这时候我们就需要采用分布式限流的方式,分布式限流可以以redis + lua 或者 nignx + lua这样的组合来实现。。 分布式限流一般应用场景都是在业务上进行限 阅读全文
摘要:
如果某个接口可能出现突发情况,比如“秒杀”活动,那么很有可能因为突然爆发的访问量造成系统奔溃,我们需要最这样的接口进行限流。 在上一篇“限流算法”中,我们简单提到了两种限流方式: 1)(令牌桶、漏桶算法)限速率,例如:每 5r/1s = 1r/200ms 即一个请求以200毫秒的速率来执行; 2)( 阅读全文
摘要:
在高并发系统中,我们常常提到的几个词汇“缓存”,“限流”,“降级”等。本文涉及到的是其中“限流”的部分,顾名思义,限流是一种限制流量的手段(我们可以粗粒度地理解为,限制请求的数量或者速度)。 在限流特技中,常见的限流算法有两种: 1)令牌桶算法; 2)漏桶算法; 当然,我们也可以粗暴地采用计数器的方 阅读全文
摘要:
一、实现方式 mycat作为一个数据库中间件,它能够实现读写分离。简单地说,它可以将“写数据”和“读数据”分开,分配到不同地数据库。但是,它并不能够做到对数据库进行数据同步,所以mycat地读写分离是依赖于数据库本身地“复制”功能。例如:mysql地“主从复制”或者“双主复制”等。 二、主从复制|| 阅读全文