3 1024个秘密

尚未进行身份认证

好好工作,好好学习,好好生活。

等级
TA的排名 6w+

分库分表的中间件和迁移方案

分库分表一、为什么要分库分表单机mysql带来的问题:1、mysql单机,扛不住并发2、mysql单机磁盘容量快满3、mysql单表数据量太大,sql执行越跑越慢利用分库分表将单机拆分成多机,带来的好处。1、可承受的并发增加数倍;2、磁盘容量增加数倍,使用率降低;3、单表数据量缩小,sql语句执行速度加快。二、分库分表的中间件数据库中间件:用来做数据的分发。有两种:proxy类和client类cobar、TDDL、sharding-jdbc、atlas、mycat。cobar

2020-05-30 19:18:28

认识分布式系统

分布式系统1、分布式系统是什么?多个系统一起组成分布式系统,各个系统之间互相调用。2、为什么要做系统拆分?系统不做拆分,代码量会很大,很多人一起维护代码,难以维护,上线复杂。拆分之后,每个人只维护自己的系统和服务,大大减少了代码冲突,上线也只需要测试自己的部分即可,想用新技术也不怕影响其他代码。3、如何进行系统拆分?根据系统功能进行拆分,比如风控系统,拆成了交易系统,授信系统,审核系统,催收系统等等,然后每个工程再自行拆分。如催收系统再分成 核心系统,催收活动系统,催收后台管理系统等等。4、

2020-05-20 22:04:19

redis的并发竞争

redis的并发竞争redis的并发竞争问题是什么?某个时刻,多个系统实例都去更新key。如何解决redis的并发竞争问题?增加zookeeper分布式锁和时间戳,来保证后者不会被覆盖。

2020-05-20 21:15:16

redis-保证和数据库的一致性

如何保证redis和数据库的一致性?cache Aside pattern读取的时候,先从缓存读,读不到就读数据库,然后取出数据之后写入到缓存;更新的时候,先删除缓存,再更新数据库。为啥不是更新缓存?如果缓存的计算逻辑比较复杂(比如要关联表计算什么的),而且写的频率大于读的频率,那么更新缓存就不是很划算啦。为什么要先删除缓存,在更新数据库?如果先更新数据库,再删除缓存,那么如果删除失败了,就会导致缓存里是旧数据,数据库里是新数据。如果删了缓存,更新数据库失败了,那么也无非是多更新一次缓存。

2020-05-16 18:48:38

redis的雪崩和穿透,情况描述及解决方案

redis的雪崩和穿透1、redis的雪崩发生的现象?原本,缓存可以消化很多请求,使得这些请求不用到达数据库,降低db负载。但是,如果缓存宕机了,所有请求将全部到达数据,数据库扛不住的话,会直接崩溃。2、如何处理缓存雪崩?首先,redis必须是高可用的,主从模式,哨兵,redis cluster等,避免全盘崩溃。其次,不单单只有redis这一级缓存,可以多做一些,比如在系统内部增加ehcache。(1、业务发送请求;2、先查本地的ehcache缓存;3、如果没有,查redis;4、如果还没有

2020-05-16 17:20:17

redis cluster 的集群模式

redis的集群模式一、单机redis的存储瓶颈问题。master和slave存储的数据量是一模一样的,如果master只能存储32g,那么这个模式下,一共也只能存储32g数据。二、如何突破单机瓶颈问题,让redis支持海量数据。建立多个master,每个master上存放部分数据,那么总容量就等于master容量之和。三、redis的集群架构 - redis clustercluster - 支撑n个master node,每个master node都可以挂载多个slave node。读

2020-05-16 14:51:37

分布式缓存redis(持久化) - 大总结3

redis的持久化一、为什么redis需要持久化?redis持久化的意义,主要在于故障恢复。如果redis宕机了,被重启,如果不进行持久化,那么所有的数据将会丢失,造成大型故障。持久化,把数据存到磁盘上,然后从磁盘里备份一份到阿里云等云存储服务上,如遇机器宕机,可以保证不会丢掉所有数据。二、redis的持久化有哪几种方式?RDB:对redis里面的数据进行周期性的持久化。每隔一段时间,...

2020-05-07 21:29:04

分布式缓存redis(主从复制+哨兵) - 大总结2

redis灵魂拷问1:如何保证redis高并发/支撑10万+的并发,应该怎么做?单机redis,能够承载的QPS大概在上万到几万不等。如果是十几万,就不行啦。方案:用主从模式实现读写分离。一般来说,对于缓存,都是读的高并发,写是比较少的。架构是主从架构,一主多从,主负责写,并把数据同步复制到其他的slave节点,slave节点只负责读。如果读的请求量增加,继续增加redis slave...

2020-05-05 02:05:13

分布式缓存redis(基础+线程模型+过期策略) - 大总结1

分布式缓存 - 大总结灵魂拷问一:在项目中如何使用缓存的?第一种场景,需要缓存要查询用户的历史订单,请求接口剧多,如果实时去请求的话,接口超时。第二种场景,分布式缓存锁,用户参加了a活动就不能参加b活动,防止并发,所以要用到分布式缓存锁。灵魂拷问二:为啥要使用缓存呢?(1) 高性能多个用户请求同一份数据,每一份查询都耗时很久。可以把这份数据放在缓存里,这样第一次查询从数据库查,其余...

2020-05-04 23:17:37

分布式搜索引擎 - 大总结

分布式搜索引擎 elasticSearch了解lucenelucene:全文检索和搜索的开放源码程序倒排索引:根据单词快速获取包含这个单词的文档列表全文检索:以文本作为检索对象,指出含有指定词汇的文本...

2020-05-01 21:34:44

消息队列 - 大总结

消息队列 - 大总结灵魂拷问1 为什么要用消息队列呀?答:如下图所示,外呼系统需要将外呼结果发送给业务系统,如果采用rpc的调用方式;则带来的后果,首先,1、外呼系统与业务系统严重耦合,多个业务系统需要外呼系统传输数据,如果有接口调用的方式,那无论是接入新的业务还是撤掉业务,都需要改动代码;2、如果业务系统挂掉/访问超时,要保证不能影响其他业务系统;所以:需要利用消息队列解耦,这...

2020-04-25 21:04:08

并发编程 - Lock的通信方式Condition的使用和源码解析

Condition的使用和原理Lock的通信方式:conditionCondition的使用ConditionWaitpublic class ConditionWait implements Runnable{ private Lock lock; private Condition condition; public ConditionWait(Lock l...

2019-08-31 22:03:12

并发编程 - 重入锁以及AQS源码

一、J.U.C简介Java.util.concurrent 并发工具包,包括线程池、阻塞队列、计时器、同步器、并发集合等;二、Lock的基本应用J.U.C的核心组件。三、ReentrantLock重入锁四、AQS原理分析五、AQS源码分析...

2019-08-31 18:46:05

并发编程 - volatile关键字底层详解

一、volatile能干什么?如下所示的代码里,有t1线程和主线程,主线程改变了stop的值,但是t1线程并不知道,一直在执行。public class Test { public static boolean stop = false; public static void main(String[] args) throws InterruptedException { ...

2019-08-25 20:28:50

并发编程 - 对象的wait / notify方法实现线程的通信机制

例如常见的生产者 - 消费者 模式:一边生产,一边消费。需要线程之间的通信,就可以利用wait / notify方法来实现。object.wait() 和 object.notify()wait的作用:1、实现线程的阻塞;2、会释放当前的同步锁notify的作用:唤醒一个被阻塞的线程;notifyAll的作用:唤醒所有被阻塞的线程,再去重新竞争。代码demo:/** * @descr...

2019-07-28 21:02:20

并发编程 - 偏向锁、轻量级锁、重量级锁的升级

线程安全 & 线程不安全线程不安全: 多个线程同时去访问一块共享资源,会出现数据不一致的问题。demo:public class AtomicDemo { private static int count = 0; public static void incr(){ try { Thread.sleep(1); ...

2019-07-28 20:03:49

20190722 - Java垃圾回收详解

一、什么是垃圾回收垃圾回收(Garbage Collection,GC):释放垃圾占用的空间,防止内存泄漏。对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。GC并不是Java的专利,它的历史比Java更久远哦~二、什么样的就算垃圾呢2.1 引用计数算法参考链接:https://mp.weixin.qq.com/s?__biz=MjM5ODI5Njc2MA==&mid=2...

2019-07-23 21:34:37

20190719 - 服务调用大全

一、服务的三要素一个网络服务主要包括以下三个要素:地址: 调用方需要根据地质访问网络。IP地址、服务端口、服务协议;协议格式: 协议都有哪些字段协议名称: 或者叫协议类型,用协议类型(名称)区分不同的网络接口。服务调用的寻址过程如下:名词解释:服务实例: 服务对应的IP地址加端口的简称。服务注册: 某个服务实例宣称自己提供了哪些服务,即某个IP地址+端口都提供了哪些服务接口。服...

2019-07-22 22:02:48

20190718 - 微服务划分

微服务是一个很抽象的概念,它的划分更是抽象。划分的粒度太粗,服务太重;划分的粒度太细,在分布式系统中会让开发、测试、部署和运维都变得极其困难。所以,应该如何划分呢?一、要遵守两个原则1、单一职责把因相同原因变化的东西聚合在一起,需要调整的类也都放在一起;2、自治原则满足资源隔离,每个服务的数据私有。二、大佬们的拆分思想1、第一种拆分1.1 纵向拆分从业务维度拆分,关联紧密的...

2019-07-19 10:17:09

并发编程 - 线程基础篇

一、并发的发展历史1、真空管 / 穿孔打卡工作流:把程序写在纸上,打成卡片,把卡片的程序输入到计算机上,电脑运行出结果打印到打印机上。最大的问题,计算机在等程序输入的时候,会处于空闲状态。2、晶体管 / 批处理操作系统工作流:把程序写在卡片上,读入到磁盘机上,电脑通过读取磁盘机上的内容进行运行,将结果输入到打印机上。解决了计算机空闲问题,计算机会一直处于运行状态。带来的问题:IO问题...

2019-07-17 21:50:24

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。