- 博客(23)
- 资源 (3)
- 收藏
- 关注
原创 Curator的基本使用
一、简介Curator是Netflix公司开源的一套Zookeeper客户端框架。了解过Zookeeper原生API都会清楚其复杂度。Curator帮助我们在其基础上进行封装、实现一些开发细节,包括接连重连、反复注册Watcher和NodeExistsException等。目前已经作为Apache的顶级项目出现,是最流行的Zookeeper客户端之一。从编码风格上来讲,它提供了基于Fluent的编程风格支持。除此之外,Curator还提供了Zookeeper的各种应用场景:Recipe、共享锁服务、
2020-08-05 22:59:54
4936
1
原创 服务网关---基于Nginx+lua+Redis的服务降级设计(二)
一:服务限流功能点1:根据请求入参中的服务标识判断nginx后端服务是否处于流量限制中。如果是,则全部限制访问,否则,转发请求到后端服务。2:容错机制,如果Redis宕机等异常,限流模块失效,所有客户端请求放行。3:是否开启限流,及限流类型(AF:全部请求限制访问,PF:设置阈值,每秒限制请求多少次)可热加载。二:设计思路1:在Reids中设置服务键值标...
2019-11-08 10:30:39
326
原创 C/C++整理 --- 单向列表
1:概念:单向链表是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。链表是使用指 针进行构造的列表,并且是由一个个结点组装起来的,因此又称为结点列表。其中每个结点都有指针成员变量指向列表中的下一个结点,head指针指向第一个结点称为表头,而终止于最后一个指向nuLL的指针。2:图示3:代码示例#define _CRT_SECURE_NO_WA...
2019-03-19 15:41:52
878
原创 服务网关---基于Nginx+lua+Redis的服务降级设计(一)
一:服务限流功能点 1:根据请求入参中的服务标识判断nginx后端服务是否处于流量限制中。如果是,则全部限制访问,否则,转发请求到后端服务。 2:容错机制,如果Redis宕机等异常,限流模块失效,所有客户端请求放行。 3:是否开启限流,及限流类型(AF:全部请求限制访问,PF:设置阈值,每秒限制请求多少次)可热加载。二:设计思路 1:在Reids中设置服务键值标...
2019-02-26 10:35:53
1324
原创 服务网关---基于Nginx+lua+Redis的IP校验模块设计
一:IP校验功能点 1:只有被添加白名单的客户端才能调用,否则返回403 2:容错机制,如果Redis宕机等异常,IP校验失效,所有客户端请求放行。 3:动态添加白名单,增加nginx缓存,60s生效。二:设计思路 1:在Reids中把白名单IP添加到set中存储,Nginx把其加载到内存中,每隔60s刷新一次。 2:获取客户端请求IP,在Nginx内存中...
2019-01-15 10:07:15
475
原创 Python---分布式共享锁实现
# -*- coding: utf-8 -*-# @Author : lws# @Time : 2018/11/21 14:36# @describe : 分布式锁的API封装import logging, os, timefrom kazoo.client import KazooClientfrom kazoo.client import KazooState...
2018-11-21 14:55:24
674
原创 zookeeper学习笔记---zkCli.sh指令
1:创建节点 格式:create [-s] [-e] path data acl 其中"-s"表示创建一个"有序"节点,"-e"表示创建一个临时节点.默认为持久性节点 ->create -s /test null->create /test null 如下为包括ACL的例子: ->create -s /test null digest:test:...
2018-11-21 14:52:04
385
原创 zookeeper学习笔记---分布式锁
1:分布式锁分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据一致性。2:概念介绍持久节点(PERSISTENT)所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。持久顺序节点(PERSISTENT_SEQUENTIAL)这类节点的基本特性和上面的节点类型是一致的。...
2018-11-21 14:32:51
636
原创 Redis---持久化
一:Redis支持两种持久化方式: 1. Snapshotting(快照) --- 默认方式 a. 配置样例 save 900 1 # 900 秒内如果超过 1 个 key 被修改,则发起快照保存 save 300 10 # 300 秒内容如超过 10 个 key 被修改,则发起快照保存 save 60 10000 2...
2018-11-21 08:58:23
127
原创 Redis---事务
一:事务事务可以一次执行多个命令,并且带有以下两个重要保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序的执行。事务在执行过程中,不会被其它客户端发送来的命令请求打断。 事务是一个原子操作:事务中的命令要么全部执行,要么全部不执行。二:相关概念乐观锁总是认为不会产生并发问题,每次取数据的时候总认为不会有其它线程对数据进行修改,因此不会上锁。但在更新前总会去判断有没...
2018-11-20 10:52:35
113
原创 Redis---主从复制
一:redis主从同步特点master可以拥有多个slave 多个slave可以连接同一个master,还可以连接其它slave 主从复制不会阻塞master,在同步数据时,master可以继续处理client请求 提高系统伸缩性 Redis使用异步复制,slave和master异步的确认处理的数据量二:redis主从复制过程当配置好slave后,slave和mater建立连接,...
2018-11-20 10:51:55
117
原创 Redis---数据之zset
一:特点 1:zset是在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会从新安装新值调整顺序。 2:同set一样,zset也是string类型元素的集合,不同的是,每个元素都会关联一个double类型的score二:命令 1:zrange key start stop [WITHSCORES] 返回有...
2018-11-20 10:50:49
228
原创 Redis---数据之set
一:特点 1:set是集合,操作中key理解为集合的名字 2:Redis的set是string类型的无序集合,set的最大元素可以包含(2的32次方)个。 3:set 的是通过 hash table 实现的,所以添加、删除和查找的复杂度都是 O(1)。二:命令 1:sadd key member [member ...] 向名称为key的集合中添加元素 ...
2018-11-20 10:50:06
186
1
原创 Redis---数据之list
一:特点 1:list 是一个链表结构,主要功能是 push、pop、获取一个范围的所有值等等,操作中 key 理 解为链表的名字。 2:Redis 的 list 类型其实就是一个每个子元素都是 string 类型的双向链表。链表的最大长度是(2 的 32 次方)。我们可以通过 push,pop 操作从链表的头部或者尾部添加删除元素。这使得 list 既可以用作栈,也可以用作队列。二:命...
2018-11-20 10:49:16
246
原创 Redis---数据之hash
一:数据形式Hash数据类型使用很普遍,它同样是key-value的方式来组织的,只是其value又包含多个field-fieldValue对。想要获取某个fieldValue,可以通过key-field联合来定位。二:特性 1:Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。 2:hash特别...
2018-11-20 10:48:16
202
原创 Redis---数据之String
一:特点 1:string是redis最基本类型 2:string最大能存储512MB数据 3:string类型是二进制安全的,即可以为任何数据,比如数字、图片、序列化对象等二:命令 1:设置键值(覆盖原有的键值) set key value 2:设置键值及过期时间,以秒为单位 set key seconds value 3:设置多个键值 mset key value [...
2018-11-20 10:44:51
121
原创 Redis---常用键值及服务器命令
一:键值命令 1:keys pattern 取出给定pattern的所有key,可以使用*代表取出全部key,mykey*:取出所有以mykey开头的键 2:exists key [key ...] 确认给定的键key是否存在 3:del key [key ...] 删除给定的键ke...
2018-11-20 10:40:47
149
原创 Redis---非ROOT用户源码安装及配置
1:下载地址官网地址:https://redis.io/中文文档地址:http://redis.cn/commands.html2:安装方法1:解压:tar zxvf redis-3.2.5.tar.gz2:进入目录3:生成 sudo make4:测试 sudo make test5:安装redis的命令安装到/usr/bin/目录 sudo make ins...
2018-11-20 10:38:41
3686
原创 Python---操作zookeeper构建分布式系统之kazoo
# -*- coding: utf-8 -*-# @Author : lws# @Time : 2018/11/19 9:05# @describe : kazoo基础用法from kazoo.client import KazooClientfrom kazoo.client import KazooStateimport loggingimport time...
2018-11-20 10:26:07
676
1
原创 MySQL常用操作及优化总结
MySQL连接 1:主机IP 2:主机PORT 3:数据库用户及密码 4:使用MySQL不需要申请表空间,但需要schemalinux通过MySQL客户端连接数据库 mysql -h127.0.0.1 -P3316 -umysql -pmysqlschema 1:亦可以叫做database,库、数据库,是MySQL中组织和管理表的一个结构。...
2018-09-26 15:09:46
133
原创 zookeeper学习笔记--删除节点
1:删除节点API 同步方式 public void delete(final String path, int version) 异步方式 public void delete(final String path, int version, voidCallback cb, Object ctx) 必须先删除叶...
2018-07-29 20:04:40
4742
1
原创 zookeeper学习笔记--创建节点
1:客户端可以通过ZK的API来创建数据节点,有如下两个接口: 同步方式 String Create(final String path, byte data[], List<ACL> acl, CreateMode createmode) 异步方式 void Create(final String pat...
2018-07-29 18:31:49
2473
原创 zookeeper学习笔记--创建会话
一:创建会话客户端可以通过创建一个Zookeeper实例来连接Zookeeper服务器,Zookeeper的四种构造方法如下:Zookeeper(String connectString, int sessionTimeout, Watcher watcher); Zookeeper(String connect...
2018-07-28 18:35:25
275
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人