摘要: 随着互联网的数据量越来越大,很多单表的数据量已经上亿了,甚至更多,这样单表的数据已经达到了查询的瓶颈,那么就需要将数据库进行拆分。 如何有效的进行数据库拆分呢,而且在互联网公司停机进行数据库处理不是很现实,因为影响了业务量。那么就需要更好的方法去进行解决。 首先咱们先准备一下数据库,然后将数据库建立 阅读全文
posted @ 2019-07-28 18:00 黄青石 阅读(1656) 评论(0) 推荐(0) 编辑
摘要: 很多大的互联网公司数据量很大,都采用分库分表,那么分库后就需要统一的唯一ID进行存储。这个ID可以是数字递增的,也可以是UUID类型的。 如果是递增的话,那么拆分了数据库后,可以按照id的hash,均匀的分配到数据库中,并且mysql数据库如果将递增的字段作为主键存储的话会大大提高存储速度。但是如果 阅读全文
posted @ 2019-07-27 20:34 黄青石 阅读(2552) 评论(6) 推荐(1) 编辑
摘要: 我们在使用netty的时候会使用一个参数,ChannelOption.SO_KEEPALIVE为true, 设置好了之后再Linux系统才会对keepalive生效,但是linux里边需要配置几个参数,tcp_keepalive_time, tcp_keepalive_invl, tcp_keepa 阅读全文
posted @ 2019-05-19 11:48 黄青石 阅读(2407) 评论(0) 推荐(2) 编辑
摘要: 在现在的微服务使用的过程中,经常会遇到依赖的服务不可用,那么如果依赖的服务不可用的话,会导致把自己的服务也会拖死,那么就产生了熔断,熔断顾名思义就是当服务处于不可用的时候采取半开关的状态,达到一定数量后就熔断器就打开。这就相当于家里边的保险丝,如果电压过高的话,保险丝就会断掉,起到保护电器的作用。 阅读全文
posted @ 2019-03-19 23:34 黄青石 阅读(2310) 评论(0) 推荐(1) 编辑
摘要: 大家都用过ReentrantLock,但是大家对内部实现是否足够了解呢,下面我就简单说一下其中的实现原理。 ReentrantLock是可重入锁,也就是同一个线程可以多次获取锁,每获取一次就会进行一次计数,解锁的时候就会递减这个计数,直到计数变为0。 它有两种实现,一种是公平锁,一种是非公平锁,那么 阅读全文
posted @ 2019-03-10 22:11 黄青石 阅读(1421) 评论(0) 推荐(0) 编辑
摘要: 随着现在数据量的不断增加,很多大数量的问题随之而来,就得需要我们想办法解决,我找了一些问题并首先思考,然后找到方法,在这里记录一下,未来有需要的同学可以拿走去用。 1. 在海量日志数据里,提取某天访问量最多的IP。 一般处理海量的思路都是分治处理,就是现将数据进行拆分,然后进行处理,排序等。这个例子 阅读全文
posted @ 2019-02-17 11:41 黄青石 阅读(1722) 评论(0) 推荐(1) 编辑
摘要: 策略模式和工厂模式相信大家都比较熟悉,但是大家有没有在springboot中实现策略和工厂模式? 具体策略模式和工厂模式的UML我就不给出来了,使用这个这两个模式主要是防止程序中出现大量的IF ELSE IF ELSE....。接下来咱们直接实现,项目结构图: 工厂类FactoryStrategy负 阅读全文
posted @ 2019-01-31 22:02 黄青石 阅读(36116) 评论(16) 推荐(9) 编辑
摘要: 之前我写了如何实现分布式锁和分布式限流,这次我们继续在这块功能上推进,实现一个秒杀系统,采用spring boot 2.x + mybatis+ redis + swagger2 + lombok实现。 先说说基本流程,就是提供一个秒杀接口,然后针对秒杀接口进行限流,限流的方式目前我实现了两种,上次 阅读全文
posted @ 2019-01-27 09:42 黄青石 阅读(9916) 评论(4) 推荐(9) 编辑
摘要: 随着现在分布式越来越普遍,分布式锁也十分常用,我的上一篇文章解释了使用zookeeper实现分布式锁(传送门),本次咱们说一下如何用Redis实现分布式锁和分布限流。 Redis有个事务锁,就是如下的命令,这个命令的含义是将一个value设置到一个key中,如果不存在将会赋值并且设置超时时间为30秒 阅读全文
posted @ 2019-01-19 10:14 黄青石 阅读(11781) 评论(4) 推荐(3) 编辑
摘要: 现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线。 ZK有一个功能,就是创建临时节点,当机器启动应用的时候就会连接到一个ZK节点,然后创建一个临时节点,那么通过获取监听该路径,并且获取该路径 阅读全文
posted @ 2019-01-12 15:34 黄青石 阅读(1867) 评论(0) 推荐(1) 编辑