![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式
文章平均质量分 86
技术类
郑兆辉
这个作者很懒,什么都没留下…
展开
-
玩转Redis:Redis高级数据结构及核心命令
本文更适合用于复习总结,阅读》实战》阅读 更有效果哟,主要包含以下内容:Sorted Set(有序集合); String(字符串); List(列表); Set(集合); Hash(散列);文章思路:数据结构应用场景及注意事项; 数据结构各命令对比分析;异常统一说明:error(out of range)导图简写@EOOR;负数偏移量表示倒数第几,导图简写@LBN(last but number);1、ZSet应用场景及注意事项1.1、ZSet应用场景ZSe原创 2021-08-23 10:56:49 · 105 阅读 · 0 评论 -
Redis实战 | Redis数据5种类型详解
Redis是目前非常主流的KV数据库,它因高性能的读写能力而著称,其实还有另外一个优势,就是Redis提供了更加丰富的数据类型,这使得Redis有着更加广泛的使用场景。那Redis提供给用户的有哪些数据类型呢?主要有:string(字符串)、List(列表)、Set(集合)、Hash(哈希)、Zset(有序集合)、HyperLogLogs(计算基数用的一种数据结构)、Streams(Redis 5.0提供一种建模日志用的全新数据结构)。需要注意的是这里说的数据类型是指Redis值的数据类型,而Redis转载 2021-08-17 17:34:14 · 441 阅读 · 0 评论 -
百亿级并发系统设计-实战教程
如何设计一个高并发系统?说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥有高并发经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器?缓存咋用的?MQ 咋转载 2021-08-17 17:33:09 · 307 阅读 · 0 评论 -
redis五种基本数据类型的应用场景是啥?
string缓存简单key-value存储分布式锁setnx key value,当key不存在时,将 key 的值设为 value ,返回1若给定的 key 已经存在,则setnx不做任何动作,返回0。当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示获取锁失败,整体思路大概就是这样计数器如知乎每个问题的被浏览器次数set key 0incr key // incr readcount::{帖子id} 每阅读一转载 2021-08-17 15:44:29 · 87 阅读 · 0 评论 -
基础-中级-高级”Java程序员面试
Java基础(对象+线程+字符+接口+变量+异常+方法)面向对象和面向过程的区别? Java 语言有哪些特点? 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 Java 和 C++的区别? 什么是 Java 程序的主类?应用程序和小程序的主类有何不同? Java 应用程序与小程序之间有哪些差别? 字符型常量和字符串常量的区别 构造器 Constructor 是否可被 override? 重载和重写的区别? Java 面向对象编程三转载 2021-08-12 11:36:37 · 135 阅读 · 0 评论 -
zookeeper和eureka的区别在哪?
zookeeper和eureka的区别在哪?传统的关系型数据库是ACID(原子性,一致性,独立性,持久性),nosql数据库是CAP(强一致性,可用性,分区容错性),分布式系统只能3进2,三个选两个eureka遵守AP原则,zookeeper遵守CP原则CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大CP-满足一致性,分区容忍必的系统,通常性能不是特别高。AP-满足可用性,分区容忍性的系统,通常可能对一致性要求低一些分布式系统中,分区容错性是必须遵守的.Zoo转载 2021-08-11 11:15:38 · 64 阅读 · 0 评论 -
分布式事务的七种实现方案汇总
背景随着微服务的普及,分布式事务成为了系统设计中不得不面对的一个问题,而分布式事务的实现则十分复杂。阅读本文之前,需要你对数据库事务的ACID、CAP理论、Base理论以及两阶段提交有一定的认知,不熟悉者请自行百度或者阅读参考博客1、2、3和4。除此之外,在阅读本文过程中,如果对某种方案不理解,强烈建议先阅读对应方案中的参考博客后再阅读本文中对应的介绍。为了便于后文叙述,这里对ACID中的C(一致性)做一个强调:严格的事务一致性是使数据库从一个一致性状态变到另一个一致性状态,且事务中间状态不能被观察转载 2021-08-10 11:19:47 · 5094 阅读 · 0 评论 -
学习RabbitMQ的五种消息队列
前言RabbitMQ是目前企业中最常用的消息中间件之一,其中有五种消息队列模型是学习RabbitMQ的重点,本文通过几个案例,给大家展示如何使用这五种消息队列。五种消息模型RabbitMQ提供了多种消息模型,官网上第6种是RPC不属于常规的消息队列。属于消息模型的是前5种:Hello World 模型,简单的一对一 工作队列模型 ,一个生产者将消息分发给多个消费者 发布/订阅模型 ,生产者发布消息,多个消费者同时收取 路由模型 ,生产者通过关键字发送消息给特定消费者 主题模型转载 2021-08-10 11:18:55 · 1310 阅读 · 0 评论 -
SpringCloud Alibaba实战:基本开发框架搭建
在上一节,我们已经完成了项目的整体技术架构设计和具体的数据库设计,接下来,我们搭建整体的开发框架。开发工具选用Idea。开发工具只是为了提高效率,如果不习惯Idea的话,STS使用起来也是OK的。1、创建多Module工程1.1、创建父工程创建一个父项目,项目命名为eshop-project,用于管理子模块功能。新建Project选择Maven工程,next填写GroupId和ArtifactID填写项目名,选择项目位置删除src,添加转载 2021-08-06 11:04:41 · 297 阅读 · 0 评论 -
当数据库遇到分布式,你会怎么做?
数据库通常有着完善的事务支持,但是局限于单机的存储和性能,于是就出现了各种分布式解决方案。最近读了《Designing Data-Intensive Applications》这本书,所以做一个总结,供大家做个参考,有什么不对的请大家指正,一起讨论。数据模型数据模型可以说软件开发中最重要的部分,因为影响着我们的思考方式、解题思路以及代码的编写方式。多数应用使用层层叠加的数据模型进行构建,对于每层数据模型的关键问题是:它如何用低一层的数据模型来表示。多数应用程序开发都使用面向对象编程的编程语言来开转载 2021-08-04 09:22:31 · 282 阅读 · 0 评论 -
并发量很大?阿里上传在GitHub的亿级流量百万并发手册真的火了
亿级流量对于电商有什么作用?对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术。然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcached等缓存技术的基础使用,最多了解一些集群相关的知识,大部分人都可以对缓存技术掌握到这个程度。然而,仅仅对缓存相关的技术掌握到这种程度,无论是对于开发复杂的高并发系统,或者是在往Java高级工程师、Java资深工程师、Java架构师这些高阶的职位发展的过程中,都是完全不够用的。技转载 2021-08-03 15:33:32 · 237 阅读 · 0 评论 -
MQ的应用场景、使用时常见问题以及解决方案都在这啦
MQ基本介绍MQ(Message Queue): 是一种应用程序间的通信方法。有别于程序之间直接通过远程调用进行通信,应用程序使用MQ进行通信时,通信的发起方将消息(数据)写入队列,接收方通过检 索队列中的消息(数据)来进行的。通常会使用MQ中间件进行信息的中转,而无需在程序之间建立直接的联接。用于接收、存储、分发消息的独立应用程序。常见的MQ中间件有:RabbitMQ 、RocketMQ、Kafka、Redis、ActiveMQ等。MQ的组成Broker: 消息服务器,作为Server提供消息转载 2021-08-03 10:08:21 · 3840 阅读 · 0 评论 -
分布式定时任务框架选型
我们先思考下面几个业务场景的解决方案:支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算 电商整点抢购,商品价格8点整开始优惠 12306购票系统,超过30分钟没有成功支付订单的,进行回收处理 商品成功发货后,需要向客户发送短信提醒类似的业务场景非常多,我们怎么解决?为什么我们需要定时任务很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场景。如,上面发货成功发短转载 2021-08-02 10:53:16 · 116 阅读 · 0 评论 -
灵活运用分布式锁解决数据重复插入问题
一、业务背景许多面向用户的互联网业务都会在系统后端维护一份用户数据,快应用中心业务也同样做了这件事。快应用中心允许用户对快应用进行收藏,并在服务端记录了用户的收藏列表,通过用户账号标识OpenID来关联收藏的快应用包名。为了使用户在快应用中心的收藏列表能够与快应用Menubar的收藏状态打通,我们同时也记录了用户账号标识OpenID与客户端本地标识local_identifier的绑定关系。因为快应用Manubar由快应用引擎持有,独立于快应用中心外,无法通过账号体系获取到用户账号标识,只能获取到客转载 2021-07-30 14:09:30 · 395 阅读 · 0 评论 -
Spring Boot 整合 Redis 正确地实现分布式锁
理论分布式锁是控制分布式系统之间同步访问共享资源的一种方式。是为了解决分布式系统中,不同的系统或是同一个系统的不同主机共享同一个资源的问题,它通常会采用互斥来保证程序的一致性通常的实现方式有三种:基于 MySQL 的悲观锁来实现分布式锁,这种方式使用的最少,这种实现方式的性能不好,且容易造成死锁,并且MySQL本来业务压力就很大了,再做锁也不太合适基于 Redis 实现分布式锁,单机版可用setnx实现,多机版建议用Radission基于 ZooKeeper 实现分布式锁,利用 ZooK转载 2021-07-30 14:07:21 · 335 阅读 · 0 评论 -
淘宝大秒系统设计详解
一些数据大家还记得2013年的小米秒杀吗?三款小米手机各11万台开卖,走的都是大秒系统,3分钟后成为双十一第一家也是最快破亿的旗舰店。经过日志统计,前端系统双11峰值有效请求约60w以上的QPS ,而后端cache的集群峰值近2000w/s、单机也近30w/s,但到真正的写时流量要小很多了,当时最高下单减库存tps是红米创造,达到1500/s。热点隔离秒杀系统设计的第一个原则就是将这种热点数据隔离出来,不要让1%的请求影响到另外的99%,隔离出来后也更方便对这1%的请求做针对性优化。针对秒杀我们转载 2021-07-27 10:24:44 · 116 阅读 · 0 评论 -
瞬间几千次的重复提交,我用Spring Boot+Redis扛住了
在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等!我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:1、数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据2、token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,.转载 2021-07-26 14:41:52 · 102 阅读 · 0 评论 -
SpringBoot+Redis分布式锁:模拟抢单
本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:jedis的nx生成锁如何删除锁 模拟抢单动作(10w个人开抢) jedis的nx生成锁对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖:<dependency><groupId>redis.clients</grou...转载 2021-07-26 14:21:53 · 123 阅读 · 0 评论 -
Redis 入门指南
1. 概述1.1. Redis 简介Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持的五种类型数据类型为:字符串、列表、集合、有序集合、散列表。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。1.2. Redis 的优势性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s。 丰富的数据类型 - 支持字符串转载 2021-07-21 11:24:49 · 282 阅读 · 0 评论