腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
物流IT圈
专栏作者
举报
280
文章
502146
阅读量
97
订阅数
订阅专栏
申请加入专栏
全部文章
微服务
数据库
sql
编程算法
api
电商
企业
分布式
it
大数据
java
物联网
费用中心
网站
http
缓存
运维
云数据库 SQL Server
云数据库 Redis
打包
存储
开源
网络安全
数据分析
spring
https
系统架构
供应链
神经网络
容器
erp
rpc
数据挖掘
机器学习
nosql
github
深度学习
消息队列 CMQ 版
腾讯云测试服务
uml
安全
机器人
架构设计
产品
产品经理
管理
系统
其他
硬件开发
git
apache
nginx
文件存储
devops
压力测试
jvm
sql server
微信
数据可视化
信息流
云计算
kafka
app
excel
系统设计
需求分析
php
python
javascript
go
html
嵌入式
mvc
jar
搜索引擎
linux
unix
访问管理
短信
图像处理
金融
数据安全
工业物联
serverless
数据迁移
hadoop
mybatis
tcp/ip
socket编程
windows
5g
验证码
数据集成
gsp
产品设计
软件
负载均衡
人脸识别
比特币
数字货币
自动驾驶
tensorflow
ios
xcode
c 语言
bash
servlet
vue.js
react
node.js
xml
css
jquery
json
单片机
symfony
oracle
access
flask
sqlalchemy
ide
lucene/solr
负载均衡缓存
apt-get
tornado
laravel
批量计算
云直播
短视频
API 网关
SSL 证书
数据加密服务
物联网通信
mongodb
人工智能
微服务与微计算
日志数据
智慧物流
codeigniter
自动化
黑客
爬虫
spark
无人驾驶
hive
面向对象编程
spring boot
推荐系统
seo
自动化测试
cdn
aop
dubbo
spring cloud
数据处理
数据结构
hbase
腾讯云开发者社区
任务调度
虚拟化
mvcc
utf8
测试策略
es
数据库管理
应用安全开发
Elasticsearch Service
智能推荐平台
项目管理
adapter
axure
bug
dashboard
ddd
device
frequency
host
layer
ps
saas
sap
sh
usb
表单
产品运营
工作
基础
监控
解决方案
开发
连接
模型
配置
设计
数据
算法
同步
效率
异常
异常处理
原型
搜索文章
搜索
搜索
关闭
可扩展伸缩架构中的状态
kafka
数据库
sql
http
分布式
提到状态,我们总是伴随着可变的、并发、隔离和作用域等词语,精确定义如下:状态是有关存储信息的技术名词,任何一个时间程序能够立即访问到。简单地说,状态是一种可能被行为操作改变的数据,是一种可变的纯数据。
物流IT圈
2020-02-10
858
0
使用Redis实现高流量的限速器
云数据库 Redis
编程算法
http
Redis是生产环境中默默无闻的主力配置。它不常用作主要的数据存储,但它可存储和访问临时数据(度量,会话状态,缓存等损失可以容忍的数据)方面有一个甜蜜点,并且速度非常快,不仅提供了最佳性能,还通过一组有用的内置数据结构提供了高效的算法。它是现代技术栈中最常见的主要部件之一。 Stripe的限速器建立在Redis的基础之上,直到最近,他们都运行在Redis 的一个非常Hot的实例上。服务器上有用于故障转移的follower,但在任何时候,只有一个节点处理每个操作。 你不得不佩服这样的系统。各种消息称,Redis可以在一个节点上每秒处理一百万次操作 - 我们项目不需要那么多,但是也有很多操作。每个速率限制检查都需要运行多个Redis命令,并且每个API请求都要通过很多速率的限制器。一个节点每秒处理大约数十到数十万个操作。 我们最终通过迁移到10个节点的Redis群集来实现这个目标。对性能的影响可以忽略不计,我们现在有一个简单的配置开关可以实现水平可伸缩性。 操作的限制 在更换系统之前,应该理解导致原始故障的原因和结果。 Redis的一个值得理解的特性是:它是一个单线程程序。但是会有后台线程处理一些像删除对象这样的操作,实际上所有正在执行的操作都堵塞在访问单个流控制点上。理解这点相对容易--Redis需要保证操作的原子性(无论是单一命令MULTI,还是 EXEC),这是源于它一次只执行其中一个操作的事实。 这个单线程模型确实是我们的瓶颈。 面对失败 即使以最大容量运营,我们发现Redis也会非常优雅地降级。主要表现:从与Redis交谈通信的节点观察到的基线连接性错误率增加 - 为了容忍发生故障的Redis,它们受到连接和读取超时(约0.1秒)的限制,并且与过载主机无法无法建立连接。 Redis这种表现虽然不是最佳的,但大部分时间情况都是好的。只有当合法 用户能够成功进行身份验证并在底层数据库上运行昂贵的操作时,它才会成为一个真正的问题,因为我们的目标是拦截巨大的非法流量冲击(即数量级超过允许的限制)。 这些流量峰值会导致错误率的成比例增加,并且许多流量还应该被允许通过,因为限速器默认是允许在错误情况下通过请求。这会给后端数据库带来更大的压力,这种压力在过载时不会像Redis那样优雅地失败。很容易看到数据库分区几乎完全无法操作。 Redis Cluster的分片模型 Redis的核心设计价值在于速度,而Redis集群的构建方式不会对此产生影响。与许多其他分布式模型不同,在其输出响应成功信号时,Redis集群中的操作并未在多个节点上进行确认,而是更像是一组独立的Redis通过分散空间来分担工作负载。这牺牲了高可用性,有利于保持操作的快速性 - 与标准的Redis独立实例相比,针对Redis群集运行操作的额外开销可以忽略不计。 分片是根据key进行的,可能的key总数分为16,384个插槽。key的插槽是通过稳定的哈希散列函数计算的,所有客户端都知道该如何操作: HASH_SLOT = CRC16(key) mod 16384 例如,如果我们想执行GET foo,我们会得到foo的以下插槽号: HASH_SLOT = CRC16("foo") mod 16384 = 12182 集群中的每个节点将处理16,384个插槽中的一部分,确切数量取决于节点数量。节点彼此通信以协调插槽分配以及可用性和插槽的再平衡。 客户端使用该CLUSTER系列命令来查询群集的状态。一个常见的操作是CLUSTER NODES获得插槽到节点的映射,其结果通常在本地缓存,并保持数据新鲜。 127.0.0.1:30002 master - 0 1426238316232 2 connected 5461-10922 127.0.0.1:30003 master - 0 1426238318243 3 connected 10923-16383 127.0.0.1:30001 myself,master - 0 0 1 connected 0-5460 我简化了上面的输出,但重要的部分是第一列中的主机地址和最后一个中的数字。5461-10922意味着这个节点处理开始于5461和结束于10922的插槽范围。 `MOVED`重定向 如果Redis群集中的某个节点接收到一个插槽不处理的的key的命令,则不会尝试向其他插槽转发该命令。相反,客户端会被告知在其他地方再次尝试。这是以MOVED新目标的地址作为回应的形式 : GET foo -MOVED 3999 127.0.0.1:6381 在集群重新平衡期间,插槽会从一个节点迁移到另一个节点,MOVED是服务器用于告诉客户端其插槽
物流IT圈
2019-12-23
1.1K
0
老大说,网上这种获取真实IP地址的方法不对,我不信
nginx
http
tcp/ip
java
html
其中headers属性X-Forwarded-For,WL-Proxy-Client-IP不就是被更改了吗?
物流IT圈
2019-11-07
1.5K
0
【开源作品推介】国产开源一站式DevOps平台
http
https
网络安全
github
git
功能:ITSM、基于RBAC权限系统、Web Terminnal登陆日志审计、录像回放、作业调度系统、CMDB、监控报警系统、DNS管理、配置中心等
物流IT圈
2019-07-16
2.4K
0
HTTP/2.0 简单总结
http
https
网络安全
缓存
css
HTTP/1.1 对 HTTP/1.0 做了许多优化,也是当今使用得最多的 HTTP 协议:
物流IT圈
2019-07-16
3.7K
0
系统吞吐量、用户并发量、性能测试的概念和公式
http
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
物流IT圈
2019-07-16
1.9K
0
【原创】从地图到线路规划 (八)
编程算法
http
区位问题(Location Allocation Problem)是GIS 的经典问题之一, 主要应用于城市规划、空间配置、物流中心选址等领域。区位问题类型众多,可从静态或动态的需求、静态或动态的设施区位、离散或连续的地理空间和设施有无容量约束等等等等维度进行类型划分。 最常见的离散区位问题可一般化为p中值(p中位,p-median)、p中心(p-center)和覆盖集(set covering)问题。这些问题可形式化为整型线性规划(MIP)数学模型.
物流IT圈
2019-07-16
648
0
讲真,别再使用JWT了!
json
html
http
安全
javascript
根据维基百科中定义,JSON WEB Token(JWT)是一种基于JSON的、用于在网络上声明某种主张的令牌(token)。
物流IT圈
2019-07-16
2.3K
0
10个有关RESTful API良好设计的最佳实践
api
http
https
网络安全
网站
Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的。
物流IT圈
2019-07-16
614
0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档