JAVA缓存与数据库
NullPointerExcept
这个作者很懒,什么都没留下…
展开
-
MySQL 主从复制搭建,基于日志(binlog)
什么是MySQL主从复制简单来说,就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,就是主从复制。MySQL主从能解决什么问题一、高可用因为数据都是相同的,所以当Mast转载 2017-04-20 09:21:08 · 1515 阅读 · 0 评论 -
数据库表设计,没有最好只有最适合
我们在设计数据库的时候,是否会突破常规,找到最适合自己需求的设计方案,下面来举个例子:常用的邻接表设计,都会添加 一个 parent_id 字段,比如区域表(国、省、市、区):CREATE TABLE Area ([id] [int] NOT NULL,[name] [nvarchar] (50) NULL,[parent_id] [int] NULL转载 2017-06-09 10:12:11 · 2102 阅读 · 0 评论 -
Redis 源码学习之事件驱动
Redis基于多路复用技术实现了一套简单的事件驱动库,代码在ae.h、ae.c以及ae_epoll.c、ae_evport.c和ae_kqueue.c、ae_select.c这几个文件中。其中ae表示的是antirez eventloop的意思。Redis里面包含两种事件类型:FileEvent和TimeEvent。Redis采用IO多路复用技术,所有的事件都是在一个线程中转载 2017-06-12 09:11:34 · 411 阅读 · 0 评论 -
大型web系统数据缓存设计
在高访问量的web系统中,缓存几乎是离不开的;但是一个适当、高效的缓存方案设计却并不容易;所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型、常见缓存系统的特点和数据指标、缓存对象结构设计和失效策略以及缓存对象的压缩等等,以期让有需求的同学尤其是初学者能够快速、系统的了解相关知识。 数据库的瓶颈 1 数据量 关系型数据库的数据量是比较小的,以我们常转载 2017-07-05 10:56:24 · 370 阅读 · 0 评论 -
B+树|MySQL索引使用原则
MySQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了。为什么要改成这样,之前都没有听过存储引擎,于是网上查了一下。事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下。一、存储引擎的比较注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B转载 2017-08-01 09:15:05 · 301 阅读 · 0 评论 -
MySQL 线程池内幕
摘要在MySQL中,线程池指的是用来管理处理MySQL客户端连接任务的线程的一种机制,我厂用的percona版本已经是集成了线程池,只需要通过如下参数开启即可。thread_handling=pool-of-threads本文在介绍MySQL线程池核心参数的基础之上对线程池内部实现机制进行进一步介绍。线程池导读转载 2017-08-08 09:18:35 · 311 阅读 · 0 评论 -
数据库Sharding的基本思想和切分策略
一、基本思想Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。水平切分于垂直切分相比,相对来说稍微复杂一些。因为要将同一个表中的不同数据拆分到不同的转载 2017-08-08 09:19:20 · 278 阅读 · 0 评论 -
JAVA:自定义套件...
各位亲爱的小伙伴们大家好,最近很多伙伴都问我该怎么做自定义套件封装,我在这里做了一个教程分享给大家。java开发人员现在对数据库的操作一般会用到诸如像Hibernate,Mybatis,SpringJdbcTemplate等ORM组件,但是这些组件是怎样从原始的编码方式一步步封装过来的呢 ?一、最原始的编码方式如下图所示: 我在05年刚毕业的时候,曾经是这样写J转载 2017-08-16 09:32:52 · 647 阅读 · 0 评论 -
关于缓存你需要知道的
About Cache作后端开发的同学,缓存是必备技能。这是你不需要花费太多的精力就能显著提升服务性能的灵丹妙药。前提是你得知道如何使用它,这样才能够最大限度发挥它的功效,并抑制其副作用。本文将介绍最如何正确的添加和更新缓存。开始之前这部分将介绍在开始加缓存之前我们必须要做的事情。这步非常重要,如果没弄好,很有可能加了缓存反而不如不加。为什么要用缓存?对于一个服务其性能瓶颈往往都在转载 2017-08-02 09:19:13 · 305 阅读 · 0 评论 -
基于 Redis 的分布式锁到底安全吗(下)?
自从我写完这个话题的上半部分之后,就感觉头脑中出现了许多细小的声音,久久挥之不去。它们就像是在为了一些鸡毛蒜皮的小事而相互争吵个不停。的确,有关分布式的话题就是这样,琐碎异常,而且每个人说的话听起来似乎都有道理。今天,我们就继续探讨这个话题的后半部分。本文中,我们将从antirez反驳Martin Kleppmann的观点开始讲起,然后会涉及到Hacker News上出现的一些讨论内容,接转载 2017-06-09 10:11:06 · 5147 阅读 · 5 评论 -
基于 Redis 的分布式锁到底安全吗(上)?
《Redis 内部数据结构详解(1):dict》《Redis 内部数据结构详解(2):sds》《Redis 内部数据结构详解(3):robj》《Redis 内部数据结构详解(4):ziplist》《Redis 内部数据结构详解(5):quicklist》《Redis 内部数据结构详解(6):skiplist》网上有关R转载 2017-06-09 10:10:29 · 1265 阅读 · 0 评论 -
Redis 源码学习之 Redis 事务
Redis作为一个内存型数据库,同样支持传统数据库的事务特性。这篇文章会从源代码角度来分析Redis中事务的实现原理。WhatRedis事务提供了一种将多个命令请求打包,然后一次性、按照顺序地执行多个命令的机制,并且在事务执行的期间,服务器不会中断事务而去执行其他不在事务中的命令请求,它会把事务中所有的命令都执行完毕才会去执行其他的命令。HowRedis中提供了mu转载 2017-06-09 10:09:07 · 325 阅读 · 0 评论 -
应用级缓存示例
应用级缓存示例 多级缓存API封装 我们的业务数据如商品类目、店铺、商品基本信息都可以进行适当的本地缓存,以提升性能。对于多实例的情况时不仅会使用本地缓存,还会使用分布式缓存,因此需要进行适当的API封装以简化缓存操作。 1.本地缓存初始化 public class LocalCacheInitService extends BaseService { @Overri转载 2017-04-21 09:17:23 · 3521 阅读 · 0 评论 -
深入理解JDBC的超时设置
真实案例:应用服务器在遭到DDos攻击后无法响应在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变得无法连接,从而导致业务系统也无法正常运转。安全组很快屏蔽了所有的DDos攻击,并恢复了网络,但业务系统却还是无法工作。 通过分析系统的thread dump发现,业务系统停在了JDBC API的调用上。20分钟后,系统仍处于WAITING状态,无法响应。30分钟后,系统转载 2017-05-12 17:41:30 · 802 阅读 · 0 评论 -
回滚机制——《亿级流量》
回滚是指当程序或数据出错时,将程序或数据恢复到最近一个正确版本的行为。最常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。通过回滚机制保证系统某些场景下的高可用。 事务回滚 在执行数据库SQL时,如果我们检测到事务提交冲突,那么事务中的所有已执行的SQL要进行回滚,目的是防止数据库出现数据不一致。对于单库事务回滚直接使用相关SQL即可。如果涉及到分布式数据库转载 2017-05-12 17:51:14 · 1863 阅读 · 0 评论 -
Redis 内部数据结构详解(1):dict
本系列基于 Redis 3.2 分支如果你使用过Redis,一定会像我一样对它的内部实现产生兴趣。《Redis内部数据结构详解》是我准备写的一个系列,也是我个人对于之前研究Redis的一个阶段性总结,着重讲解Redis在内存中的数据结构实现(暂不涉及持久化的话题)。Redis本质上是一个数据结构服务器(data structures server),以高效的方式实现了多种现成的转载 2017-04-22 09:12:32 · 962 阅读 · 0 评论 -
分布式系统常见的事务处理机制
为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副本就能继续运行下去。另外一个例子,当访问单一服务器管理的数据的进程数不断增加时,系统就需要对服务器的数量进行扩充,此时,对服务器进行复制,随后让它们分担工作负荷,就可以提高性能。但同时,如何保障多个数据节点之间数据的一致以及如何处理分布式事转载 2017-05-18 09:21:33 · 295 阅读 · 0 评论 -
玩转Redis集群(上)
这是redis集群介绍的上篇,主要是关于Redis集群的搭建。后续将为大家介绍Redis集群的常用命令、Java操作Redis集群、以及与Spring/Spring MVC的整合等知识。Redis集群搭建要想搭建一个最简单的Redis集群,那么至少需要6个节点:3个Master和3个Slave。为什么需要3个Master呢?如果你了解过Hadoop/Storm/Zookeepe转载 2017-05-19 09:37:03 · 418 阅读 · 0 评论 -
玩转Redis集群(下)
接上一篇《玩转Redis集群(上)》,我们来继续玩~Redis集群操作实践数据的分布性数据分布性从上面的操作,你可以看到,当存储某一个数据的时候,会分配一个slot,而这个slot从属于某一个Master,也就是说你需要明白,数据是分布的存储在Redis集群当中的。在线水平扩容Redis Cluster有一个非常重要的特点就是转载 2017-05-19 09:37:43 · 295 阅读 · 0 评论 -
MySQL事务隔离级别详解
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。ReadUncommitted(读取未提交内容)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read转载 2017-06-05 09:36:02 · 261 阅读 · 0 评论 -
数据库连接池底层原理以及手写实现
数据库连接池的基本思想是:为数据库连接建立一个“缓冲池”,预先在池中放入一定数量的数据库连接管道,需要时,从池子中取出管道进行使用,操作完毕后,在将管道放入池子中,从而避免了频繁的向数据库申请资源,释放资源带来的性能损耗。在如今的分布式系统当中,系统的QPS瓶颈往往就在数据库,所以理解数据库连接池底层构造原理与设计思想是很有益处的。我们常用的数据库连接池有C3P0,DBCP,Dru转载 2017-08-02 09:19:58 · 3306 阅读 · 0 评论 -
Redis架构之防雪崩设计:网站不宕机背后的兵法
一、缓存穿透预防及优化缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步:缓存层不命中存储层不命中,所以不将空结果写回缓存返回空结果缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。缓存穿透模型缓存穿透问题转载 2017-08-09 09:36:03 · 334 阅读 · 0 评论 -
分布式文件系统:原理、问题与方法
转载:http://blog.csdn.net/it_yuan/article/details/8980849本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源、提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用。但随着互联网企业的高速发展,这些企业对数据存储的要求越来越高,而且模式各异,如淘宝主站的大量商品图片,其特点是文件较转载 2017-08-09 09:37:00 · 313 阅读 · 0 评论 -
十分钟看懂时序数据库(IV)- 分级存储
物联网领域近期如火如荼,互联网和传统公司争相布局物联网。作为物联网领域数据存储的首选,时序数据库也越来越多进入人们的视野,而早在 2016 年 7 月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。前文提到低成本的存储是时序数据库需要解决的一个主要问题,而上一...转载 2018-03-15 11:25:15 · 3612 阅读 · 0 评论 -
十分钟看懂时序数据库(V)- 分布式计算
物联网领域近期如火如荼,互联网和传统公司争相布局物联网。作为物联网领域数据存储的首选,时序数据库也越来越多进入人们的视野,而早在 2016 年 7 月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。前文提到数据查询特别是大数据量的聚合分析查询是时序数据库需要解...转载 2018-03-15 11:25:40 · 3555 阅读 · 0 评论 -
Prometheus入门
一、什么是TSDB?TSDB(Time Series Database)时序列数据库,我们可以简单的理解为一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的。1、时间序列数据库的特点大部分时间都是写入操作。写入操作几乎是顺序添加,大多数时候数据到达后都以时间排序。写操作很少写入很久之前的数据,也很少更新数据。大多数情况在数据被采集到数秒或者数分钟后就会被写入数据库。删除操作一...转载 2018-03-15 11:37:17 · 4155 阅读 · 0 评论 -
prometheus监控方案
简介prometheus 是一个开源的系统监控和告警的工具包,其采用pull方式采集时间序列,通过http协议传输。架构每个应用都通过javaagent向外提供一个http服务暴露出自己的JMX信息。当应用启动的时候就会向consul注册服务,注册成功后,prometheus就能把这个应用加入监控对象列表,进行数据收集并跟踪服务的状态。部署prometheus官网下载prometheus-1.2....转载 2018-03-15 11:55:46 · 2358 阅读 · 0 评论 -
Java实现redis事务
1. 正常执行的事务[html] view plain copy@Test public void test() { Jedis jedis = new Jedis("localhost"); Transaction transaction = jedis.multi(); transaction.lpush("key", "11"); transact...转载 2018-04-01 14:58:47 · 7170 阅读 · 3 评论 -
谈谈mysql的事物隔离级别
一、事务先来看下百度百科对数据库事务的定义:作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。事务有四个属性,称为ACID属性:1、原子性(Atomicity):事务是一个原子单位,要么全部执行,要么全部不执行。2、一致性(Consistent):事务的开始和结束,数据都必须保持一致状态。3、隔离性(...转载 2018-05-23 09:18:15 · 1263 阅读 · 0 评论 -
Redis 的持久化机制RDB和AOF有什么区别?
前言Redis作为内存级缓存,当redis实例发生问题时,内存数据容易丢失,所以需要用到持久化技术。在Redis里,提供了两种持久化方式:RDB和AOF,两种持久化方式各有优势,本篇文章为你解密redis持久化的两种方式redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。RDB,简而言之,就是将存储...原创 2019-05-31 17:35:52 · 1118 阅读 · 0 评论 -
阿里是如何处理分布式事务的
分布式事务中的TCC模式,貌似是阿里提出来的,所以阿里自研的分布式事务框架总是少不了TCC的影子。服务拆分很多系统早期都是单系统服务架构,所有业务聚合在少数几个系统中对外提供服务。随着业务发展,服务之间耦合比较严重,一般会对服务进行重构,重构的主要思想也就是围绕“拆分”展开。比如按照功能进行解耦的垂直拆分,拆分之后原有系统中的业务调用,就变成了分布式的调用了,但是由于网络的不可靠性,数...转载 2019-06-13 10:15:43 · 802 阅读 · 0 评论 -
十分钟看懂时序数据库(III)- 压缩
物联网邻域近期如火如荼,互联网和传统公司争相布局物联网。作为物联网邻域数据存储的首选时序数据库也越来越多进入人们的视野,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。压缩对于时序数据库是至关重要的。因为时序数据库面对的物联网场景每天都会产...转载 2018-03-15 11:24:42 · 2517 阅读 · 0 评论 -
十分钟看懂时序数据库(II)- 预处理
物联网领域近期如火如荼,互联网和传统公司争相布局物联网。作为物联网领域数据存储的首选时序数据库也越来越多进入人们的视野,早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB。前文提到时序数据是一个写多读少的场景,对时序数据库以及数据存储方面做了论述,数据查询和聚合运算同样是时序数据库必不可少的功能之一。如何支持在秒级对上亿数据的查询分组聚合运算成为了时序...转载 2018-03-15 11:24:15 · 3593 阅读 · 0 评论 -
十分钟看懂时序数据库(I)-存储
2017年时序数据库忽然火了起来。开年2月Facebook开源了beringei时序数据库;到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。时序数据库作为物联网...转载 2018-03-15 11:23:38 · 42254 阅读 · 0 评论 -
微博高并发场景下的分布式缓存架构
1.Memcached内存分配原理介绍掌握Memcached的安装、使用命令,其实对大部分的同学来说已经足以开展相关开发工作了。但当碰到一些线上问题的时候,单纯的会用Memcached是无法快速、合理的分析问题所在的。所以接下来我们将介绍Memcached的内存分配管理原理。Memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存。Slab Alloc转载 2017-08-03 09:28:23 · 341 阅读 · 0 评论 -
微信红包订单存储架构变迁的最佳实践
微信红包的由来南方企业一直有过年找老板“逗利是”的习俗,每年春节后开工的第一天,腾讯大厦都会排上长长的队伍,集体上楼找老板们领红包。按照广东习俗,已经结婚的同事也要给未婚同事发红包,这一天腾讯员工就在春茗和寻找红包中度过。由此孵化了一个内部项目,通过微信来收发红包,把这个公司全员娱乐活动与最活跃的IM平台微信结合起来。最初这个项目并没有预期对外,但是入口不小心开放后,成为了现象级产转载 2017-08-11 09:43:57 · 535 阅读 · 0 评论 -
漫谈千亿级数据优化实践:一次数据优化实录
即使没有数据倾斜,千亿级的数据查询对于系统也是一种巨大负担,对于数据开发来说,如何来优化它,既是挑战,也是机遇! 本文将分享千亿级数据优化的一点:如何使用数据。 注意:本文会限定一些业务场景和技术架构,因此解决方法会局限于此。很多问题可以通过换架构或者引入新的组件来解决,但是成本可能会很高,因此暂不考虑。本文不是一篇Hive使用和优化文档,更侧重于梳理笔者的思路,让转载 2017-07-27 09:17:22 · 329 阅读 · 0 评论 -
聊一聊分布式锁的设计
起因前段时间,看到redis作者发布的一篇文章《Is Redlock safe?》,Redlock是redis作者基于redis设计的分布式锁的算法。文章起因是有一位分布式的专家写了一篇文章《How to do distributed locking》,质疑Redlock的正确性。redis作者则在《Is Redlock safe?》文章中给予回应,一来一回甚是精彩。文本就为读者一转载 2017-08-14 09:21:14 · 324 阅读 · 0 评论 -
基于mybatis读写分离插件
因此 DataSourceProxy 返回的 Connection是一个代理类, 依赖一个 DataSourceRout 接口,在未执行sql语句之前都是由 Connection代理类完成操作。再执行 sql 语句时,由 DataSourceRout 接口返回具体 Connection执行 sql 语句,DataSourceRout 接口只有一个 getTargetDataSource 方法,由具转载 2017-08-23 09:22:22 · 578 阅读 · 0 评论 -
MyBatis Generator 详解
MyBatis Generator中文文档MyBatis Generator中文文档地址:http://mbg.cndocs.tk/该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。本文中所有节点的链接都是对应的中文文档地址,可以点击查看详细信息。转载 2017-10-20 10:27:06 · 411 阅读 · 0 评论