海量数据下,如何快速查找一条记录?
使用布隆过滤器,快速过滤不存在的记录。 使用Redis的bitmap结构来实现布隆过滤器。 在Redis中建立数据缓存 将我们对Redis使用场景的理解尽量表达出来。以普通字符串的形式来存储。以一个hash来存储一条记录 缓存击穿:对不存在的数据也建立key。这些key都是经过布隆过滤器过滤的,所以一般不会太多缓存过期:将热点数据设置成永不过期,定期重建缓存。使用分布式锁重建缓存 ...
使用布隆过滤器,快速过滤不存在的记录。 使用Redis的bitmap结构来实现布隆过滤器。 在Redis中建立数据缓存 将我们对Redis使用场景的理解尽量表达出来。以普通字符串的形式来存储。以一个hash来存储一条记录 缓存击穿:对不存在的数据也建立key。这些key都是经过布隆过滤器过滤的,所以一般不会太多缓存过期:将热点数据设置成永不过期,定期重建缓存。使用分布式锁重建缓存 ...
在 Spring Cloud 中,能够使用的注册中心,还是比较多的,如下: spring-cloud-netflix-eureka-server 和 spring-cloud-netflix-eureka-client ,基于 Eureka 实现。 spring-cloud-alibaba-nacos-discovery ,基于 Nacos 实现。 spring-cloud-...
在 Spring Cloud 中,能够使用的服务保证,如下: spring-cloud-netflix-hystrix ,基于 Hystrix 实现。 Resilience4j spring-cloud-alibaba-sentinel ,基于 Sentinel 实现。 为什么要使用服务保障? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(R...
推荐阅读 《Redis 的内存优化》 redisObject 对象 缩减键值对象 共享对象池 字符串优化 编码优化 控制 key 的数量 🦅 一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set 他们最多能存放多少元素? 一个 Redis 实例,最多能存放多少的 keys ,List、Set、Sorted Set 他们最多...
微服务面试题 什么是微服务架构 微服务架构风格是一种将单个应用程序开发为一组小服务的方法,每个服务都在自己的进程中进行,并通过轻量级机制进行服务之间交互。这些服务基于业务能力构建的,可以通过全自动部署机制独立部署。通常情况下我们很少去集中化去管理这些服务,而且这些服务可以用不同的编程语言编写,并使用不同的数据存储技术 微服务的优缺点 优点 每个微服务都很小,这样能聚焦一个指定...
Netflix组件Eureka:注册中心(服务注册与发现)(已停更)Feign:远程调用(封装了一些请求),参数组合(已停更)Ribbon:负载均衡(与Feign结合使用),找一个具体的机器Hytrix:熔断器。客户端调用远程服务时熔断,不影响客户端应用(已停更)zuul:服务端网关(路由)(已停更) Config:统一配置中心。保证配置统一,保证敏感信息安全(加密) Spring Cl...
简介 微服务是一种架构风格,通过将大型的单体应用划分为比较小的服务单元,从而降低整个系统的复杂度。 优点 服务部署更灵活:每个应用都可以是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性降低。 技术更新灵活:在大型单体应用中,技术要进行更新,往往是非常困难的。而微服务可以根据业务特点,灵活选择技术栈。 应用的性能得到提高:大型单体应用中,往往启动就会成为一个很大的难...
如果有大量的 key 需要设置同一时间过期,一般需要注意什么? 如果大量的 key 过期时间设置的过于集中,到过期的那个时间点,Redis可能会出现短暂的卡顿现象。 一般需要在时间上加一个随机值,使得过期时间分散一些。 上次基友也碰到这个问题,请教了下,他的方案是调大 hz 参数,每次过期的 key 更多,从而最终达到避免一次过期过多。 这个定期的频率,由配置文件中的 hz 参数决定...
如果使用 Redis Cluster 实现高可用? 详细,可以看看如下: 因为 Redis Sentinel 的内容很多,艿艿这里就不详细哔哔了。实际场景下,对于开发的面试,我们也不会特别问,毕竟更偏运维的内容。 《Redis 官方文档 —— Redis Cluster 集群》 《Redis 开发与运维》 的「10. 集群」章节,更加详细完整。 🦅 说说 Redis 哈希...
如何配置 Namesrv 地址到生产者和消费者? 将 Namesrv 地址列表提供给客户端( 生产者和消费者 ),有四种方法: 编程方式,就像 producer.setNamesrvAddr(“ip:port”) 。 Java 启动参数设置,使用 rocketmq.namesrv.addr 。 环境变量,使用 NAMESRV_ADDR 。 HTTP 端点,例如说:htt...