![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
中间件 分布式
csdn_9527666
这个作者很懒,什么都没留下…
展开
-
Image
原创 2021-07-05 02:13:20 · 156 阅读 · 0 评论 -
分表策略
5.2 免迁移扩容采用双倍扩容策略,避免数据迁移。扩容前每个节点的数据,有一半要迁移至一个新增节点中,对应关系比较简单。具体操作如下(假设已有 2 个节点 A/B,要双倍扩容至 A/A2/B/B2 这 4 个节点):无需停止应用服务器;新增两个数据库 A2/B2 作为从库,设置主从同步关系为:A=>A2、B=>B2,直至主从数据同步完毕(早期数据可手工同步);调整分...转载 2020-03-27 15:18:10 · 184 阅读 · 0 评论 -
InnoDB 存储引擎
设计上采用了类似于Oracle数据库的架构接下来 详细介绍 InnoDB 存储引擎的 体系架构 及其不同于其他存储引擎的特性一 概述InnoDB 存储引擎 是第一个完整支持ACID事物的 MySQL 存储引擎特点: 1 行锁设计 2 支持MVCC 3 提供一致性非锁定读 4 最有效地利用 以及 使用内存和CPU,内存 ...原创 2019-12-16 23:16:18 · 130 阅读 · 0 评论 -
MySQL 体系结构和存储引擎
数据库: 物理操作系统文件 或其他形式文件类型的集合实例: MySQL数据库 由 后台线程 以及 一个共享内存区 组成 一个MySQL节点 是一个MySQL数据库实例集群情况下 一个数据库被多个数据实例使用单进程 多线程MySQL数据库 按照 /etc/my.cnf -> /etc/mysql/my.cnf -> /usr/local/mysql/etc/my....原创 2019-12-11 23:15:43 · 73 阅读 · 0 评论 -
Redis 对象:列表对象
每种类型的变量至少使用了两种不同的编码1 五种对象的底层编码:字符串类型对象:REDIS_ENCODING_INT REDIS_ENCODING_EMBSTRREDIS_ENCODING_RAW列表类型的对象:REDIS_ENCODING_ZIPLIST REDIS_ENCODING_LINKEDLIST哈希对象:REDIS_ENCODING_ZIPLIST ...原创 2019-03-23 20:24:52 · 531 阅读 · 0 评论 -
Redis 对象:哈希对象
每种类型的变量至少使用了两种不同的编码1 五种对象的底层编码:字符串类型对象:REDIS_ENCODING_INT REDIS_ENCODING_EMBSTRREDIS_ENCODING_RAW列表类型的对象:REDIS_ENCODING_ZIPLIST REDIS_ENCODING_LINKEDLIST哈希对象:REDIS_ENCODING_ZIPLIST ...原创 2019-03-24 14:31:10 · 415 阅读 · 0 评论 -
Redis 对象:集合对象
每种类型的变量至少使用了两种不同的编码1 五种对象的底层编码:字符串类型对象:REDIS_ENCODING_INT REDIS_ENCODING_EMBSTRREDIS_ENCODING_RAW列表类型的对象:REDIS_ENCODING_ZIPLIST REDIS_ENCODING_LINKEDLIST哈希对象:REDIS_ENCODING_ZIPLIST ...原创 2019-03-24 14:58:13 · 500 阅读 · 0 评论 -
Redis 对象:有序集合对象
每种类型的变量至少使用了两种不同的编码1 五种对象的底层编码:字符串类型对象:REDIS_ENCODING_INT REDIS_ENCODING_EMBSTRREDIS_ENCODING_RAW列表类型的对象:REDIS_ENCODING_ZIPLIST REDIS_ENCODING_LINKEDLIST哈希对象:REDIS_ENCODING_ZIPLIST ...原创 2019-03-24 15:40:43 · 442 阅读 · 0 评论 -
Redis :数据库键空间
因为redis没有返回客户端目标数据库是哪个的命令,不建议使用多数据库redis中每个数据库用redisDb结构表示。其中redisDb结构的dict字典保存了数据库中所有键值对。也就是键空间。增删改查都是通过键空间字典进行操作实现的。1 添加新键将新的键值对添加到键空间字典里面2 删除键在键空间删除对应键值对对象3 更新键对键空间里面键所对应的值对象进行更新...原创 2019-04-12 23:06:16 · 370 阅读 · 0 评论 -
Redis: 事件
Redis中的事件分为1 文件事件 以及 2 时间事件服务器与客户端通信会产生文件事件,服务器通过监听并处理(多路复用)这些事件,完成网络通信操作。事件事件是对定时任务的抽象。Redis基于Reactor模式开发了自己的网络事件处理器:文件事件处理器文件事件处理器使用 IO多路复用同时监听多个套接字,并根据套接字执行的任务为套接字关联不同的事件处理器。执行...原创 2019-04-12 23:14:50 · 117 阅读 · 0 评论 -
高可用 架构
不要把鸡蛋都放在同一篮子里标准:1 正常情况下,用户无论访问哪一个地点的业务系统,都能够得到正确的业务服务。2 某个地方业务异常的时候,用户访问其他地方正常的业务系统,能够得到正确的业务服务。与“活”对应的是字是“备”,备是备份,正常情况下对外是不提供服务的,如果需要提供服务,则需要大量的人工干预和操作,花费大量的时间才能让“备”变成“活”。活能更好的进行容...原创 2019-04-16 23:24:11 · 728 阅读 · 0 评论 -
es
转载 2019-08-04 17:24:32 · 122 阅读 · 0 评论 -
Redis 对象:字符串对象
之前介绍了多种数据结构字符串 链表 字典 跳表 压缩列表 整数集合接下来 介绍 这些数据结构在 Redis对象中的使用以及变化Redis对象系统 包括: 字符串对象 列表对象 哈希对象 集合对象 有序集合对象对象使用了至少1种以上的数据结构,并且在条件发生变化时会进行数据结构的改变其对象实现了基于引用计数法的内存回收机制!!!!内存碎片问题...原创 2019-03-23 17:33:30 · 315 阅读 · 0 评论 -
Redis 压缩列表
压缩列表是 哈希以及列表 的底层实现,节约内存当元素数目较少,且key,value皆为整数或短字符串时使用压缩列表实现哈希以及列表对象首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是 ziplist,也即是 压缩列表。它将所有的元素紧挨着一起存储,分配的是一块连续的内存。当数据量比较多的 时候才会改成 quicklist。因为普通的链表需要的附加指针空间太大,会比较浪费空间...原创 2019-03-22 22:19:41 · 312 阅读 · 0 评论 -
Redis整数集合
当集合中只有整数,且数目不多时,redis会使用整数集合intset作为集合的实现。整数集合可保存16位 32位以及64位整数,且去重。typedef struct intset { //编码方式 uint32_t encoding; //元素数目 uint32_t length; //保存元素的数组 int8_t contents[];...原创 2019-03-22 22:13:51 · 610 阅读 · 0 评论 -
kafka顺序写实现原理 参考来源:学不死的程序员
每一个partition目录下的文件被平均切割成大小相等(默认一个文件是500兆,可以手动去设置)的数据文件,每一个数据文件都被称为一个段(segment file),但每个段消息数量不一定相等,这种特性能够使得老的segment可以被快速清除。默认保留7天的数据。 每个partition下都会有这些每500兆一个每500兆一个(当然在上面的测试中我们将它设置为了1G一个)的seg...转载 2018-09-14 22:04:12 · 7221 阅读 · 3 评论 -
Kafka性能key
Kafka是如何实现高吞吐率的原创 2016-02-27 杜亦舒 性能与架构Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失kafka主要使用了以下几个方式实现了超高的吞吐率 顺序读写 kafka的消息是不断追加到文件中的,这个特性使kafka可以充分...转载 2018-09-14 22:41:39 · 5607 阅读 · 0 评论 -
Redis 字符串
动态字符串用途:1 保存库中字符串键值2 用于缓冲区:AOF中的缓冲区3 客户端状态中的输入缓冲区在c语言中使用结构体实现动态字符串struct sdshdr{ int len; int free; char buf[];};相比于C原生字符串优点:1O(1)获得字符串长度2 自动扩容,避免缓冲区溢出C字符串需要人工申请空间,如果未申...原创 2019-03-09 19:39:52 · 141 阅读 · 0 评论 -
Redis 链表
每个链表结构使用list结构体来表示:typedef struct list { listNode *head; listNode *tail; unsigned long len; void *(*dup)(void *ptr); //节点值复制函数 void (*free)(void *ptr); //节点值释放函数 int (*match...原创 2019-03-09 20:04:07 · 155 阅读 · 0 评论 -
Redis 字典
key value 数据结构哈希键类型 在1 元素超过一定数目 或 2key或value中存储的串过长时 将会由压缩列表转为字典进行存储Redis 字典通过哈希表实现哈希表:typedef struct dictht { dictEntry **table; unsigned long size; unsigned long sizemark;...原创 2019-03-09 20:11:33 · 434 阅读 · 0 评论 -
RabbitMQ 第3章
连接服务端需要 指定1 IP地址 2 端口号 3 用户名 4 密码即可连接线程间channel不可共享 会出现线程安全问题使用channel时 如果其已经关闭 会抛出 异常客户端catch此异常即可并同时捕获 IO 以及 Socket异常 防止Connection意外关闭通过channel声明交换机以及队列声明交换机传入的 参数...原创 2019-03-14 23:36:23 · 103 阅读 · 0 评论 -
Redis 跳跃表
原理: 在每个节点中维持多个指向其他节点的指针。达到接近二分查找的目的大部分情况下,跳跃表的执行效率与平衡数相媲美当LinkedHashSet 中1 元素数目过多 或者 2 成员是过长的字符串使用跳跃表作为有序集合键的底层实现。跳表在Redis中的应用:1实现有序集合键2在集群节点中用作内部数据结构涉及到两个结构体:1 zskiplistNode...原创 2019-03-19 23:34:30 · 126 阅读 · 0 评论 -
RabbitMQ 第4章
mandatory 以及 immediate 是 channel,basicPublish方法中的两个参数他们具有 当消息不可达MQ时,将消息返回生产者的功能如未能被交换机路由的消息(无绑定队列 或 无匹配的绑定)存储在备份交换机绑定的队列中。1mandatory为false时,如生产者生产的消息无法路由到队列,直接丢弃为true时,将消息返回给生产者,而生产者通过调用ch...原创 2019-03-16 19:52:00 · 117 阅读 · 0 评论 -
RabbitMQ 第9章
存储机制:1 持久化消息也会在内存中保存一份,当内存紧张的时候,将其从内存中移除2 非持久化的消息,一般会保存在内存中。当内存紧张时,将其置换到硬盘中持久层包含两部分:1 队列索引2 消息存储队列索引维护落地消息的信息:1 存储地点 2 消息是否已经交给消费者 3 消息是否已经被ack每个队列都有一个与其对应的队列索引。消息存储以 键值对方式存储消息,被所有队列共享...原创 2019-03-16 20:33:02 · 92 阅读 · 0 评论 -
MySQL 性能剖析
慢查询日志精度微妙级别开销最低,精度最高的测量查询时间的工具。对IO密集型应用影响可忽略。仅对CPU密集型应用影响较大。最应该关注的是开启慢查询日志后,会造成磁盘空间的消耗。长期开启慢查询日志要做好日志轮转。通过慢查询日志可以定位到需要优化的单条SQL。拿到单条SQL,需要确认为什么耗时这么长,如何进行优化。使用SHOW STATUS、SHOW PROFILE 来测量查...原创 2019-03-17 16:21:19 · 444 阅读 · 0 评论 -
RabbitMQ 第二章
消息只能存储在队列中,多个消费者可订阅同一个队列,此时队列中消息会被平均分摊。 n consumer->1 queue生产者将消息投递到交换机上,再由交换机将消息路由到一个或多个队列中RoutingKey 与 BindingKey 与 交换机类型 联合使用生效Binding: 将交换机与队列相关联起来 绑定时需要指定BindingKey MQServer即可知道应该将...原创 2019-03-12 22:46:12 · 100 阅读 · 0 评论 -
MySQL数据类型选择
1 使用可以正确存储数据(不会超过范围)的最小的数据类型2 整形优于字符串,使用MySQL内建的类型存储日期时间,而不是字符串。使用整形存ip。3 避免NULL,NULL列建立索引,需要消耗更多的空间。但是Innodb存储引擎的稀疏索引NULL较多反而更高效,InnoDB 使用bit存储NULL,空间效率高整数类型:tinyint smallint mediumint int bi...原创 2019-03-17 22:42:49 · 130 阅读 · 0 评论 -
Time 2018/9/14 从今天起 开始 中间件 学习并积累好的博客 到我的博文中
还是不能养成写自己博客的习惯 坏习惯要改 但是总要有个过程 主要还是自己沉淀的不够原创 2018-09-14 21:40:35 · 102 阅读 · 0 评论