11 2018 档案

摘要:什么是高可用 全年时间里,99%的时间里都能对外提供服务,就是高可用 主备切换 在master故障时,自动检测,将某个slave切换为master的过程,叫做主备切换。这个过程,实现了Redis主从架构下的高可用性。 哨兵是redis集群架构中非常重要的一个组件,主要功能如下 集群监控,负责监控re 阅读全文
posted @ 2018-11-30 16:15 __Meng 阅读(4754) 评论(0) 推荐(1) 编辑
摘要:单机的redis几乎不太可能说QPS超过10万+,一般在几万。 除非一些特殊情况,比如你的机器性能特别好,配置特别高,物理机,维护做的特别好,而且你的整体的操作不是太复杂。 Redis通过主从架构,实现读写分离,主节点负责写,并将数据同步给其他从节点,从节点负责读,从而实现高并发。 Redis高并发 阅读全文
posted @ 2018-11-30 15:46 __Meng 阅读(28068) 评论(1) 推荐(0) 编辑
摘要:过期策略 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时,我们自己可以指定缓存到期就失效。 如果假设你设置一个一批key只能存活1个小时,那么接下来1小时后,redis是怎么对这批key进行删除的? 答案是:定期删除+惰性删除 所谓定 阅读全文
posted @ 2018-11-29 16:55 __Meng 阅读(23223) 评论(0) 推荐(12) 编辑
摘要:string 这是最基本的类型了,就是普通的set和get,做简单的kv缓存 hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以操作hash里的某个字段。 key=150 value= 阅读全文
posted @ 2018-11-29 16:20 __Meng 阅读(3129) 评论(0) 推荐(0) 编辑
摘要:高性能 一个请求过来,数据库查询耗时600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。 这时把结果放缓存里,一个key对应一个value,下次再有人查,不走数据库,直接从缓存里,通过一个key查出来一个value,2ms搞定。这就是所谓的高性能。 就是把你一些复 阅读全文
posted @ 2018-11-27 16:25 __Meng 阅读(667) 评论(0) 推荐(0) 编辑
摘要:大量消息在mq里积压了几个小时了还没解决 几千万条数据在MQ里积压了七八个小时,最简单的方法可以让他恢复消费速度,然后等待几个小时消费完毕。 一个消费者一秒是1000条,一秒3个消费者是3000条,一分钟是18万条,1000多万条 ,所以如果你积压了几百万到上千万的数据,即使消费者恢复了,也需要大概 阅读全文
posted @ 2018-11-27 10:57 __Meng 阅读(2740) 评论(1) 推荐(0) 编辑
摘要:RabbitMQ RabbitMQ消息顺序错乱的场景:数据1、2、3按顺序发到一个queue,多个消费者消费同一个queue 拆分为多个queue,每个queue由一个consumer消费; 或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底 阅读全文
posted @ 2018-11-26 16:17 __Meng 阅读(5900) 评论(1) 推荐(0) 编辑
摘要:RabbitMQ 生产者弄丢了数据 生产者将数据发送到RabbitMQ的时候,可能数据就在半路给搞丢了,因为网络啥的问题,都有可能。 此时可以选择用RabbitMQ提供的事务功能,就是生产者发送数据之前开启RabbitMQ事务(channel.txSelect),然后发送消息,如果消息没有成功被Ra 阅读全文
posted @ 2018-11-26 15:19 __Meng 阅读(2886) 评论(0) 推荐(0) 编辑
摘要:重复消费可能会在什么场景下出现(以kafka为例) kafka实际上有个offset的概念,就是每个消息写进去,都有一个offset,代表他的序号, 然后consumer消费了数据之后,每隔一段时间,会把自己消费过的消息的offset提交一下,代表我已经消费过了,下次我要是重启啥的,你就让我继续从上 阅读全文
posted @ 2018-11-23 14:44 __Meng 阅读(5800) 评论(0) 推荐(0) 编辑
摘要:RabbitMQ的高可用性 RabbitMQ是基于主从做高可用性的,有三种模式:单机模式,普通集群模式,镜像集群模式 单机模式: demo级别 普通集群模式: 在多台机器上启动rabbitmq实例,每个机器启动一个。 但是你创建的queue,只会放在一个rabbtimq实例上,每个实例都同步queu 阅读全文
posted @ 2018-11-22 16:35 __Meng 阅读(2197) 评论(0) 推荐(1) 编辑
摘要:ActiveMQ 单机吞吐量:万级 topic数量都吞吐量的影响: 时效性:ms级 可用性:高,基于主从架构实现高可用性 消息可靠性:有较低的概率丢失数据 功能支持:MQ领域的功能极其完备 总结: 非常成熟,功能强大,在早些年业内大量的公司以及项目中都有应用 偶尔会有较低概率丢失消息 现在社区以及国 阅读全文
posted @ 2018-11-22 11:03 __Meng 阅读(31515) 评论(0) 推荐(2) 编辑
摘要:优点: 解耦、异步、削峰 缺点: 系统可用性降低:系统引入的外部依赖越多,越容易挂掉,如果MQ出问题,整个系统可能挂掉。 系统复杂性提高:可能出现消息重复消费,消息丢失的问题,要考虑如何保证消息传递的顺序性 一致性问题:A处理完直接返回成功,但是BCD中,C失败了,导致数据不一致。 转自:中华石杉J 阅读全文
posted @ 2018-11-21 17:29 __Meng 阅读(1540) 评论(0) 推荐(0) 编辑
摘要:回答这个问题的思路: 有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处。 解耦 使用MQ之前,A系统发送一个数据到BCD三个系统,通过接口调用发送,如果E也要这个数据,或者B又突然不要了,A还得去改代码 而且A还得考虑其他系统挂了怎么 阅读全文
posted @ 2018-11-21 17:17 __Meng 阅读(484) 评论(0) 推荐(0) 编辑
摘要:HTTP请求报文 请求行: 由3部分组成,分别为:请求方法、URL、协议版本,之间由空格分隔。例如,GET /index.html HTTP/1.1。 请求头部: Host:接受请求的服务器地址,可以是IP:端口号,也可以是域名 Connection:指定与连接相关的属性,如Connection:K 阅读全文
posted @ 2018-11-20 10:48 __Meng 阅读(553) 评论(0) 推荐(0) 编辑
摘要:转发是服务器行为,重定向是客户端行为。 转发(Forword) :通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法实现的。 RequestDispatcher 可以通过Ht 阅读全文
posted @ 2018-11-19 16:01 __Meng 阅读(953) 评论(0) 推荐(0) 编辑
摘要:这个讲得还阔以: https://blog.csdn.net/v_july_v/article/details/6279498 阅读全文
posted @ 2018-11-07 14:50 __Meng 阅读(138) 评论(0) 推荐(0) 编辑
摘要:长连接(PersistentConnection) HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。 HTTP 1.1则支持长连接(Persistent Connec 阅读全文
posted @ 2018-11-06 10:57 __Meng 阅读(970) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal入门 ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全独立的实例副本。 ThreadLocal 变量通常被private static修饰。当一个线程结束时,它所使用的所有 ThreadLocal 相对的实例副本都可被 阅读全文
posted @ 2018-11-05 11:31 __Meng 阅读(346) 评论(0) 推荐(0) 编辑
摘要:CyclicBarrier也叫回环栅栏,在JDK1.5被引入,可以让一组线程达到一个栅栏时被阻塞,直到最后一个线程达到栅栏时,所以被阻塞的线程才能继续执行。 CyclicBarrier好比一扇门,默认情况下关闭状态,堵住了线程执行的道路,直到所有线程都就位,门才打开,让所有线程一起通过。 叫做回环是 阅读全文
posted @ 2018-11-02 10:49 __Meng 阅读(207) 评论(0) 推荐(0) 编辑
摘要:CountDownLatch也叫闭锁,在JDK1.5被引入,允许一个或多个线程等待其他线程完成操作后再执行。 CountDownLatch内部会维护一个初始值为线程数量的计数器,主线程执行await方法,如果计数器大于0,则阻塞等待。 当一个线程完成任务后,计数器值减1。当计数器为0时,表示所有的线 阅读全文
posted @ 2018-11-01 17:19 __Meng 阅读(205) 评论(0) 推荐(0) 编辑
摘要:Semaphore也叫信号量,在JDK1.5被引入,用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。还可以用来实现某种资源池,或者对容器施加边界。 Semaphore内部维护了一组虚拟的许可,许可的数量可以通过构造函数的参数指定。 访问特定资源前,必须使用acquire方法获 阅读全文
posted @ 2018-11-01 16:37 __Meng 阅读(1856) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示