摘要: Sharding-JDBC集分库分表、读写分离、分布式主键、柔性事务和数据治理与一身,提供一站式的解决分布式关系型数据库的解决方案。 从2.x版本开始,Sharding-JDBC正式将包名、Maven坐标、码云仓库、Github仓库和官方网站统一为io.shardingjdbc。 Sharding- 阅读全文
posted @ 2018-03-19 23:35 国见比吕 阅读(10710) 评论(0) 推荐(0) 编辑
摘要: Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服 务。由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集 群构成了整个完整的数据库存储。 如下图: 如上图所表示,数据被分到多个分片数据库后,应用如果需要读取数据,就要需要处理 阅读全文
posted @ 2018-03-18 16:32 国见比吕 阅读(3315) 评论(5) 推荐(0) 编辑
摘要: 一.使用中间件的好处 使用中间件对于主读写分离新增一个从数据库节点来说,可以不用修改代码,达到新增节点数据库而不影响到代码的修改。因为如果不用中间件,那么在代码中自己是先读写分离,如果新增节点, 你进行写操作时,你的轮询求模的数据量就要修改。但是中间件的维护也很麻烦的。 二.各种中间件 1.MYSQ 阅读全文
posted @ 2018-03-17 17:31 国见比吕 阅读(5919) 评论(0) 推荐(1) 编辑
摘要: 一.为什么要进行读写分离呢? 因为数据库的“写操作”操作是比较耗时的(写上万条条数据到Mysql可能要1分钟分钟)。但是数据库的“读操作”却比“写操作”耗时要少的多(从Mysql读几万条数据条数据可能只要十秒钟)。 所以读写分离解决的是,数据库的“写操作”影响了查询的效率问题。 如下图所示: 读写分 阅读全文
posted @ 2018-03-16 17:04 国见比吕 阅读(5153) 评论(3) 推荐(1) 编辑
摘要: 1.为什么要做主从复制? 1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。 2、做数据的热备。 3、架构的扩展。业务量越来 阅读全文
posted @ 2018-03-15 20:55 国见比吕 阅读(1036) 评论(0) 推荐(1) 编辑
摘要: 安全性和活跃度通常相互牵制。我们使用锁来保证线程安全,但是滥用锁可能引起锁顺序死锁。类似地,我们使用线程池和信号量来约束资源的使用, 但是缺不能知晓哪些管辖范围内的活动可能形成的资源死锁。Java应用程序不能从死锁中恢复,所以确保你的设计能够避免死锁出现的先决条件是非常有价值。 一.死锁 经典的“哲 阅读全文
posted @ 2018-03-10 21:04 国见比吕 阅读(11036) 评论(2) 推荐(1) 编辑
摘要: 我们使用线程的时候就去创建一个线程,但是就会有一个问题: 如果并发的线程数量非常多,而且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会导致大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其 阅读全文
posted @ 2018-03-08 22:31 国见比吕 阅读(1041) 评论(0) 推荐(0) 编辑
摘要: 一.同步容器: 1.Vector容器实现了List接口,Vector实际上就是一个数组,和ArrayList类似,但是Vector中的方法都是synchronized方法,即进行了同步措施。保证了线程安全。源码如下图: 可以看到这些方法都加了synchronized。即加了同步操作。 2.Hasht 阅读全文
posted @ 2018-03-06 20:40 国见比吕 阅读(798) 评论(1) 推荐(0) 编辑
摘要: 一.指令重排序 例子如下: 多次运行结果分别如下: 可以看到多次运行所得到三种结果,分别为0,42,没有输出结果。 程序一开始执行,默认将ready赋值为false,ready默认赋值为0,一开始执行时,在ReaderThread中符合循环条件,进入循环,遇到 CPU一般采用流水线来执行指令。一个指 阅读全文
posted @ 2018-03-05 17:38 国见比吕 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 我们知道,在多线程访问一个共享变量的时候会发生安全问题。 首先看下面例子: 运行结果如下: 如果没发生线程对数据的赃操作,3个线程执行,结果会累加到600的,看上面结果明显没有,并且出现一下重复的数据。这是因为存在3个线程同时操作同一个数字,导致输出重复数字。 解决办法: 1.在方法上加上synch 阅读全文
posted @ 2018-03-04 16:50 国见比吕 阅读(544) 评论(0) 推荐(0) 编辑