![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
金大大jhz
这个作者很懒,什么都没留下…
展开
-
本地消息表的设计与实现
前言很久没有更新过了,准备开始写一些质量高一些的文章,也会同步到SegmentFault,个人主页:https://segmentfault.com/u/jinhaozhi/articles,近期主要记录下接近一年的核心工作。背景本地消息表是什么? 一种通过单机事务来保障分布式数据一致性的策略,作用就是在分布式系统中保证上下游的数据最终一致;Case(以订单为例) 在任何一个电商系统中,订单都是属于核心链路部分,要求高可用和稳定,但是作为核心链路,对下游的其余依赖也是难以...原创 2020-07-18 17:49:17 · 3021 阅读 · 6 评论 -
java客户端访问ApiServer(kubernetes-client使用)
前言使用kubernetes-client访问k8s apiserver,直接贴代码了配置类ApiClientConfig(自己根据需要改)package com.pdd.transports.config;import com.yiran.arch.leo.client.ConfigCache;import io.kubernetes.client.ApiClient;im...原创 2019-11-26 14:50:56 · 4828 阅读 · 2 评论 -
k8s集群ingress controller压测记录
前言这两天老大让做k8s测试集群内ingress controller的压测报告,记录下。ingress-controller中nginx结构为1master4worker,结构如下:短连接测试最开始使用jmeter,配置如下:四个线程组(其实和单线程组的效果一致),从1000开始增加,得到的CPU使用率结果如下:当请求次数超过9500次之后,CPU负载不再增加,在...原创 2019-10-22 16:29:06 · 1122 阅读 · 1 评论 -
面试题:Zookeeper是如何解决脑裂问题
前言这是分布式系统中一个很实际的问题,书上说的不是很详细,整理总结一下。1、脑裂和假死1.1 脑裂官方定义:当一个集群的不同部分在同一时间都认为自己是活动的时候,我们就可以将这个现象称为脑裂症状。通俗的说,就是比如当你的 cluster 里面有两个结点,它们都知道在这个 cluster 里需要选举出一个 master。那么当它们两之间的通信完全没有问题的时候,就会达成共识,选出其中...原创 2019-06-20 23:29:52 · 18942 阅读 · 5 评论 -
Redis面试题记录--缓存双写情况下导致数据不一致问题
前言这个去年就看到过项目中的实现方案,结果今天问还是忘了,记录下。1、问题描述在高并发的情况下,如果当删除完缓存的时候,这时去更新数据库,但还没有更新完,另外一个请求来查询数据,发现缓存里没有,就去数据库里查,还是以上面商品库存为例,如果数据库中产品的库存是100,那么查询到的库存是100,然后插入缓存,插入完缓存后,原来那个更新数据库的线程把数据库更新为了99,导致数据库与缓存不一致...原创 2019-06-11 23:06:20 · 1094 阅读 · 0 评论 -
面试题:从图的遍历到深拷贝的实现
前言非常好的一道面试题,leetcode上是没有的,记录下。原题public class N{ public int val; public List<N> list;}val可以唯一标示一个对象,即不同对象的val值都不相同,给定如下类,要求实现深拷贝,方法定义如下:N dp(N source) { //待实现}分析相信...原创 2019-06-13 23:40:23 · 511 阅读 · 0 评论 -
从Paxos到Zookeeper(二)
前言这个月公司风波很多,比较忙,心态也有些变化,一个月没更了,终归还是要沉淀下来工作学习呀,继续学习Paxos。前面已经介绍了2PC和3PC,并了解了它们各自的特点以及解决的分布式问题,接着,我们来介绍Paxos:一种基于消息传递且具有高度容错性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法。1、背景在常见的分布式系统中,设计者必须要考虑的一个问题就是节点宕机或网络异常,这...原创 2019-05-20 23:34:43 · 448 阅读 · 0 评论 -
从Paxos到Zookeeper(一)
前言 随着计算器系统规模变得越来越大,计算机系统正在经历一场前所未有的从集中式到分布式架构的变革,相信有过分布式开发经验的都能明白其痛点--分布式一致性。Zookeeper的出现帮助很多系统在一定程度上解决了这个难点,使用也非常简单,作为分布式一致性问题的工业解决方案,paxos是理论算法,其中zab,raft和众多开源算法是对paxos的工业级实现。这本书是本人很早就想看的书了,...原创 2019-04-24 23:54:53 · 1758 阅读 · 0 评论 -
并发相关知识总结(四)
知识点(第八、九章)1、CountDownLatch基本的用法就是定义计数器N,并通过await方法阻塞线程,直到N变成0。和join最直观的使用区别就是不用手动的去挂起了,一两个线程可能并不会显得多方便,但是当线程数量较大时,区别还是很明显的。2、CyclicBarrier这个我也没用过,其字面意思就是可循环使用的屏障,让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到...原创 2019-04-16 23:41:37 · 210 阅读 · 0 评论 -
并发相关知识总结(二)
前言二和一之间拖了太久,相信看过这本书的都知道,后半章要真的学透要花很长的时间,看很多的源码,其实后半本我看完也只花了一个月不到,但是看完之后仔细回想一下,发现收货真的不大,于是狠狠的啃了很多源码,包括上班时在项目中使用时,都会特意的去瞧一瞧源码,现在虽不能说吃透,但是我觉得还是有收获把,就一边总结,一边再复习一次。知识点(第四章)1、线程线程定义和什么进程的区别啥的就不总结了,线...原创 2019-03-28 23:02:12 · 107 阅读 · 0 评论 -
一道Netty面试题:boss线程池和worker线程池能不能合在一起?
前言这篇帖子我估计要反复修改,我不确定面试官是不是随口问的(就是可能他自己也没仔细想过这个问题。。。),我当时回答的是不能,我确实不大明白为啥要合在一起,合在一起你也是要有线程去处理连接,一部分线程去处理请求。而且放在一起不是增加复杂度(耦合)了吗?面试的时候思路容易不清晰,其实这段还是看过的,而且之前的帖子里还写过,netty源码默认就是支持的,只不过平时使用的都是主从多线程reactor。...原创 2019-04-03 23:47:23 · 8945 阅读 · 1 评论 -
并发相关知识总结(三)
知识点(第五、六、七章)1、Lock接口关键点:(1)lock和synchronized的区别,后者是通过monitor+对象头的方式控制线程的同步,锁的获取和释放都是隐式完成的,而lock则是手把手的获取与释放锁;(2)lock可以尝试非阻塞的获取锁,以及超时获取锁,并且,与synchronized不同,获取到锁的线程能够响应中断,同时释放锁。2、AQS这个是重中之重!!这个部分...原创 2019-03-29 23:13:02 · 130 阅读 · 0 评论 -
面试题:ConcurrentHashMap 1.7和1.8的区别
前言面试官问到这个我觉得送分了,觉得自己答的挺好,面完看看其实发现还是有一些没答全,写个帖子记录下。ConcurrentHashMap 1.7和1.8的区别1、整体结构1.7:Segment + HashEntry + Unsafe1.8: 移除Segment,使锁的粒度更小,Synchronized + CAS + Node + Unsafe2、put()1.7:先定...原创 2019-03-20 22:06:17 · 34237 阅读 · 25 评论 -
记一次神秘空指针问题的定位
前言昨天在工作中遇到一个很奇怪的空指针问题,接下来看下问题的定位到解决。问题出现问题发生在一个平时都很稳定的微服务中,负责的责任田为整个产品的框架组,该服务也是框架服务中的核心之一,因此直接被测试提了严重单,该微服务已经接近三个月没有过新代码合入。报错日志如下:从日志中可以看到发生在Job.getJobId中,不用多想,肯定是该job对象为空了。接着贴一下问题发生处的代码:...原创 2019-01-20 21:51:22 · 611 阅读 · 0 评论 -
深入理解Java反射机制
反射机制定义 在Java程序的运行过程中,对于任意的类,都能知道类的所有属性与方法,也能调用其实例化对象的任何方法与属性,这种在程序运行过程中检查周围环境,并可以依次进行进一步改变环境的能力,就是反射。翻译一下:反射可以在程序运行时根据类名获得类的详细信息。RTTI原理Java在运行时识别对象和类的类型信息的主要方式有两种:一种是反射,另一种则是RTTI,我们首先了解一...原创 2018-08-15 22:30:20 · 696 阅读 · 0 评论