简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文首发于京东零售平台公众号,https://mp.weixin.qq.com/s/uzuz7rqctQ-bjdRcf1tO9gredis作为目前最流行的nosql缓存数据库,凭借其优异的性能、丰富的数据结构已成为大部分场景下首选的缓存工具。由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观。那么在一些场景下,通过选用合适的数据结构来存储,可以大幅减少内存的占用,...
在拥有大量并发用户的系统中,热key一直以来都是一个不可避免的问题。或许是突然某些商品成了爆款,或许是海量用户突然涌入某个店铺,或许是秒杀时瞬间大量开启的爬虫用户, 这些突发的无法预先感知的热key都是系统潜在的巨大风险。风险是什么呢?主要是数据层,其次是服务层。热key对数据层的冲击显而易见,譬如数据存放在redis或者MySQL中,以redis为例,那个未知的热数据会按照hash规则被存在于某
在电商中经常会有防超卖的需求,本质上是对一条数据的多线程并发情况下的数据安全性进行控制。譬如一个商品goods,库存是100,在多线程都去读取修改的情况下,会产生数据错乱。不加锁的情况我们来看一个简单的例子,有个goods表,里面有个int型字段amount。我们用多线程来频繁修改amount的值,看看结果。@Transactional(rollbackFor = Except...
原文:https://blog.tookbra.com/2017/08/25/Spring-Cloud-Eureka-Client-Source/源码目录结构.├── pom.xml└── src├── main│├── java││└── org││└── springframework││
前面我们讲过了对单体应用的Sentinel限流,以及使用zookeeper对规则的持久化。通过前面的工作,我们可以完成单个实例的细粒度的限流、熔断操作。譬如有一个服务User,在分布式环境下,开启了多个实例,那么每个实例都可以获得如每秒限制10个登录的限流功能。但是有些场景下,我们想要另外一种限流方式,譬如在网关zuul层,想限制对User服务的限流,而不去关心具体它有多少个实例。这时,就需要..
我经常会碰到一些耗时较长的任务,譬如更新5千万条表数据中的某个字段,代码中可以通过分页依次读取db,然后更新即可。但是耗时极长,那么能否通过将代码部署多个实例,譬如启动多个docker来并行执行任务,横向扩展,这样就能大幅减少耗时。但是问题在于代码是相同的,假如采用的是分页读取,依次更新,那么不管启动多少个实例,执行的都是重复任务,达不到并行的目的。那么怎么完成动态扩展后,就能分担任务,而不是执行
开源地址:https://gitee.com/tianyalei/zuulauth在单体应用架构下,常见的用户-角色-菜单权限控制模式,譬如shiro,就是在每个接口方法上加RequireRole,RequirePermission,当调用到该方法时,可以从配置的数据库、缓存中来进行匹配,通过这种方式来进行的权限控制。而在微服务架构下,我们会使用网关来作为所有服务的入口,由网关来完成鉴权、...
在上一篇中,我们在springboot项目中简单使用了disconf的配置功能,这一篇我们主要来详解一下disconf的配置文件的动态配置。来看一下disconf.properties文件# 是否使用远程配置文件# true(默认)会从远程获取配置 false则直接获取本地配置enable.remote.conf=true## 配置服务器的 HOST,用逗号分隔127.0.0.1:80
zuul是spring cloud集成的网关(api gateway),主要是做统一的权限控制,路由分发,反向代理和负载均衡。原文链接:http://blog.csdn.net/haha7289/article/details/54312043zuul核心框架zuul是可以认为是一种API-Gateway。zuul的核心是一系列的filters, 其作用可以类比Se
上一篇简单介绍了sentinel限流的基本配置和使用,这一篇我们来稍微深入一点,看看如何将zookeeper继承进来,用以保存添加的流控规则。上一篇中我们启动了dashboard.jar,然后在客户端中指定了dashboard的地址。之后启动项目,随便访问个接口,之后就能在dashboard的界面上看到相应的请求了,并且能在控制台上添加一些规则,保存后客户端就能生效了。基于内存的推...