5.Problem: 分布式问题
1.Config Server: 命名空间, 特别大的告诉访问, 都不适合用代理, 因为代理降低速度, 但是, Sina用了(单机多端口, Redis Cluster, sentinel)
Config Server放到Zookeeper上
最前面是命名服务,后面跟的是无状态的twmemproxy(twitter的改进的,用C写的) ,后面才是redis;
2.twmemproxy
应用不必关心连接失败, 由代理负责重连
把Hash算法放到代理商
代理后边的升级, 前端不关心, 解决了HA的问题
无状态, 多台代理无所谓
3.AS --> Proxy -->Redis
4.Sina的Redis都是单机版, 而Redis-Cluster交互过于复杂,没有使用
做HA的话,一定要配合监控来做,如果挂了之后,后续该如何做;
并不是追求单机性能,而是集群的吞吐量,从而可以支持无线扩展;
经验总结
- 提前做好数据量的规划, 减少sharding(互联网公司一般以年为单位)
- 只存精细化数据(内存很金贵!)
- 存储用户维度的数据
- 对象维度的数据要有生命周期
- 特别是数据量特别大的时候,就很有必要来进行划分了;
- 暴露服务的常见过程: IP-->负载均衡-->域名-->命名服务(一张表: 名字+资源(IP+端口))
- 对于硬件消耗,IO、网络和CPU相比,Redis最消耗的是CPU,复杂的数据类型必定带来CPU消耗;
- 新浪微博响应时间超时目前设置为5s;(返回很慢的记录key,需记录下来分析,慢日志);
- 备份的数据要定期要跑一下生产的数据;用来检查备份数据的有效性;
- slave挂多了肯定会对master造成比较的影响;新浪微博目前使用的M/S是一拖一,主要用来做容灾;
- 同步时,是fork出一个单独进程来和slave进行同步;不会占用查询的进程;
- 升级到2.6.30以后的linux内核;
- 在2.6.30以上对软中断的问题处理的很好,性能提升效果明显,差不多有15%到30%的差距;
- redis不用读写分离,每个请求都是单线程,为什么要进行读写分离 。
欢迎关注!持续推送有趣有料的技术文章~
【Redis 在新浪微博中的应用】
推荐阅读
- 梦见自己和一个老外睡在一起 梦到和外国人睡一起
- 天猫上怎么开店 天猫旗舰店开店流程
- 已灭绝的十大恐怖鲨鱼 世界最恐怖的鲨鱼
- java服务宕机原因查询
- 首个茶叶产品质量检验中心在宁波宁海试运行
- 微服务最强开源流量网关之Kong
- 为什么我的产品在淘宝特价版没有显示 特价版订单不在淘宝中显示
- 猫与黄油理论是什么 如果黄油和猫绑在一起
- 中国顶级黑客在国际上是什么样的水平?
- 杀破狼3 杀破狼何时播出在哪看
