幸福的烦恼张大胖最近是又喜又忧,喜的是业务量发展猛增,忧的是由于业务量猛增,一些原来不是问题的问题变成了大问题,比如说新会员注册吧,原来注册成功只要发个短信就行了,但随着业务的发展,现在注册成功也需要发push,发优惠券,…等这样光注册用户这一步就需要调用很多服务,导致用户注册都需要花不少时间,假设每个服务调用需要50ms,那么光以上服务就需要调用200ms,而且后续产品还有可能再加一些发新人红包等活动,每...
2022-05-27 17:49:00 6501浏览 0点赞 0回复 0收藏
大家好,我是坤哥上周我在极客时间某个课程看到某个讲师在讨论ConcurrentHashMap(以下简称CHM)是强一致性还是弱一致性时,提到这么一段话这个解释网上也是流传甚广,那么到底对不对呢,在回答这个问题之前,我们得想清楚两个问题什么是强一致性,什么是弱一致性上文提到get没有加锁,所以没法即时获取put的数据,也就意味着如果加锁就可以立即获取到put的值了?那么除了加锁之外,还有其他办法可以立即获取到put的值吗强一致...
2022-05-27 17:48:48 5416浏览 0点赞 0回复 0收藏
大家好,我是坤哥好久没更了,最近几周身体不好,得了比较严重的胃炎+心动过速症状,跑了好几趟医院,严重的时候心脏感觉很不舒服,胸闷气短,有濒死感,有时几乎整夜睡不好觉,在此奉劝大家还是要保重身体,千万不要做熬夜等伤身体的傻事,千万保重身体!年前和年后我们完成了一次从0到1的上云之旅,其中踩了不少坑,也积累了不少宝贵的经验,所以在此总结成文,相信大家看了肯定有收获先说下此次上云的背景,创业后,我们的业...
2022-05-27 17:48:18 5483浏览 0点赞 0回复 0收藏
大家好,我是坤哥今天我们来聊一下互联网三高(高并发、高性能、高可用)中的高可用,看完本文相信能解开你关于高可用设计的大部分困惑前言高可用(Highavailability,即HA)的主要目的是为了保障「业务的连续性」,即在用户眼里,业务永远是正常(或者说基本正常)对外提供服务的。高可用主要是针对架构而言,那么要做好高可用,就要首先设计好架构,第一步我们一般会采用分层的思想将一个庞大的IT系统拆分成为应用层,中间件...
2022-05-27 17:48:07 6770浏览 0点赞 0回复 0收藏
Cluster分片集群主从模式看似完美,但存在以下几个问题主节点写的压力难以降低:因为只有一个主节点能接收写请求,如果在高并发的情况下,写请求如果很高的话可能会把主节点的网卡打满,造成主节点对外无法服务主节点的存储能力受到单机存储容量的限制:因为不管是主节点还是从节点,存储的都是全量缓存数据,那么随着业务量的增长,缓存数据很可能直线上升,直到达到存储瓶颈同步风暴:因为数据都是从master同步到slave的,如...
2022-05-27 17:48:00 5651浏览 0点赞 0回复 0收藏
你好,我是坤哥,这是Java进阶的第二篇,今天我们来学习一下类加载机制在工程中我们基本无时无刻都在和对象打交道,那么大家有想过这些这些对象是怎么来的吗,当new一个对象的时候到底发生了什么?相信你已经猜到了我们今天的主题,没错,就是类加载机制,了解这个机制很重要,这不仅能让我们理解JVM的运行机制,更重要的是它还能解释一些我们看起来觉得很奇怪的现象,比如如下懒汉式单例模式publicclassSingleton{privateSingl...
2022-05-27 17:45:47 6006浏览 0点赞 0回复 0收藏
你好,我是坤哥上一篇Java进阶之字节码剖析中我曾经提到这么一段话int[128][2],int[256]这两个数组看起来一样,但实际上前者比后者多了246%的额外开销针对这句话我收到了几位读者的私信,表示不明白为啥不过一个简单的二维数组会有这么大的开销,本来这个问题在我正在写的类加载机制中有详述,不过文章还没写完(估计本周发),所以我专门抽出这个问题探讨一下,五分钟就能看懂Java对象模型HotSpotJVM底层使用名为oops(Ordinar...
2022-05-27 17:45:38 6901浏览 0点赞 0回复 0收藏
前言你好,我是坤哥从今天起我打算整一个Java系列的进阶基础文章,万丈高楼平地起,打好基础我们才能走得更好,举个例子,之前我在武哥的Kafka文章中看到这样的一句话「除此之外,页缓存(pageCache)还有一个巨大的优势。用过Java的人都知道:如果不用页缓存,而是用JVM进程中的缓存,对象的内存开销非常大(通常是真实数据大小的几倍甚至更多)」,如果你不了解Java对象的表示,看到这样的话会一脸懵逼:对象的开销到底有多巨...
2022-05-27 17:44:49 6341浏览 0点赞 0回复 0收藏
Java帝国发生了一场危机,各个线程正在闹罢工。。。「发生了什么事,听说各个线程最近正在闹罢工」国王老虚说道「报告国王,最近各个线程反应创建对象太难了,要求王国进行变革」线程大臣启奏道「创建对象有什么难的,我们不是用了bumpthepointer机制吗,new一下对象不就创建了吗」老虚大惑不解,「我们知道对象一般来说都是先分配在堆上的Eden区的,那么在堆上怎样才能快速地给对象分配空间呢假设堆是内存是绝对规整的,用过的...
2022-05-27 17:44:38 5296浏览 0点赞 0回复 0收藏
前言一位读者在本地部署MySQL测试环境时碰到一个问题,我觉得挺有代表性的,所以写篇文章介绍一下,看完相信你会对MySQL的编码机制有最本质的了解,本文的目录结构如下读者问题简介MyQL编解码机制介绍问题解答读者问题简介为叙述方便,以下的「我」指代读者我们知道在Java中是通过JDBC来访问数据库的,以访问MySQL为例,需要配置以下url才能访问MySQLjdbc:mysql:10.65.110.9:3306testconnectTimeout5000&socketTimeout20000这样...
2022-05-27 17:42:53 6718浏览 0点赞 0回复 0收藏
你好,我是坤哥,今天是国庆最后一天,不知大家是否玩得尽兴,我基本在家带娃了,累得半死,顺带肝了一篇文,来自读者曾经在阿里的面试题,希望对大家有帮助,另外也欢迎大家加我微信「geekoftaste」,一起探讨技术问题,有疑问的我也许可以帮上忙^^MySQL可以说是每个Java程序员必会的技能之一,作为Java的高级进阶必备技能点,MySQL的调优和底层原理必然是需要知道的。但是大家似乎形成了一种思维定势,那就是提到MySQL好像就...
2022-05-27 17:42:09 9174浏览 0点赞 0回复 0收藏
MVCC机制MVCC(全称MultiVersionConcurrencyControl),即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;我们本文的重点是事务的隔离级别的底层原理,但是似乎说到现在也并没有发现关于事务原理的影子(想发水文?)。实际上要了解事务的底层原理,根本没法上来就开鲁,我相信那样的文章写出来不仅没人看,更是看不懂。所以为了让大家由浅入深的慢慢掌握。我必须要做很多铺垫,将...
2022-05-27 17:42:03 6707浏览 0点赞 0回复 0收藏
大家好,我是坤哥今天给大家分享一个这两天排查成功的案例,相信对大家会有些帮助。大多数人应该听过一道经典的面试题:请详细地说出从浏览器地址栏输入url到最终呈现出结果的过程,越详细越好,为什么面试官这么喜欢问这道题呢,因为这个题涉及的面非常广,知识点非常多,如果你能完全吃透,非常有助于排查一些疑难杂症,今天我要分享的这个case就是个典型,废话不多说,进入正题。问题描述前端同学发现新开发的项目接口有13概...
2022-05-26 18:42:27 4304浏览 0点赞 0回复 0收藏
你好,我是坤哥这周收到一个sentry报警,如下SQL查询超时了。selectfromorderinfowhereuid5837661orderbyidasclimit1执行showcreatetableorderinfo发现这个表其实是有加索引的CREATETABLEorderinfo(idbigint(20)unsignedNOTNULLAUTOINCREMENT,uidint(11)unsigned,orderstatustinyint(3)DEFAULTNULL,...省略其它字段和索引PRIMARYKEY(id),KEYidxuidstat(uid,orderstatus),)ENGINEInnoDBDEFAULTCHARSETutf8理论上执行上述SQL会命...
2022-05-26 18:42:20 4979浏览 0点赞 0回复 0收藏
应读者要求今天我们来探讨一个话题:一个工程上下线的正确姿势稍微正规一点的公司都会有自动化上下线流程,因为上下线看起来简单,只有两步,「停掉应用」,「重启应用」,但里面其实还是有挺多门道的,比如:1.如何优雅地上下线,涉及到dubbo的优雅停机,服务上线时的JVM参数配置等2.如何保证应用发布上线发现问题后快速回滚,或者上线后将新功能可能带来的影响降至最小所以这套流程必须自动化,以下我们就以SpringBoot工程部...
2022-05-26 18:42:15 6007浏览 0点赞 0回复 0收藏
问题初现「滴」,小章的钉钉突然响起了很多客服转发来的用户投诉信息,说是网络连接不上了,经过排查发现是其中一台机器(RS2)挂了但是LVS依然持续地把流量打到这台机器上,持续造成线上问题,小章首先把这台机器从LVS上摘除,先保证线上正常,然后为了避免之后出现类似问题,急忙找了CEO老梁来商讨方案。应用层健康检查:HTTP检测老梁一眼看出了问题所在:「我们需要开发一个健康检查服务,部署在LVS上,这个服务可以定时检查...
2022-05-26 18:42:08 5699浏览 0点赞 0回复 0收藏
前言今天我们来深度揭秘一下负载均衡器LVS的秘密,相信大家看了你管这破玩意儿叫负载均衡这篇文章后,还是有不少疑问,比如LVS看起来只有类似路由器的转发功能,为啥说它是四层(传输层)负载均衡器呢,今天我们就来逐渐揭开LVS的迷雾,本文将会用图解的方式浅入深地探讨LVS的工作机制最好大家对网络是如何连接的,数据包的收发机制有所了解,这样会很容易理解本文的知识点,如果对此没概念,强烈建议大家看看我之前写的这篇文...
2022-05-26 18:42:01 6058浏览 0点赞 0回复 0收藏
索引可以说是每个工程师的必备技能点,明白索引的原理对于写出高质量的SQL至关重要,今天我们就从0到1来理解下索引的原理,相信大家看完不光对索引还会对MySQL中InnoDB存储引擎的最小存储单位「页」会有更深刻的认识从实际需求出发假设有如下用户表:CREATETABLEuser(idint(11)unsignedNOTNULLAUTOINCREMENT,nameint(11)DEFAULTNULLCOMMENT'姓名',agetinyint(3)unsignedDEFAULTNULLCOMMENT'年龄',heightint(11)DEFAULTNULLCOMMEN...
2022-05-26 18:38:47 5775浏览 0点赞 0回复 0收藏
B+树的诞生现在问题来了,如果有很多页,该怎么定位元素呢,如果元素刚好在前几个页还好,大不了遍历前几个页也很快,但如果要查id100w这样的元素一页页遍历的话就要遍历1w页(假设每页100条记录),那显然是不可接受的,如何改进呢,其实之前建的页内目录已经给了我们启发,既然在页内我们可以通过为记录建页目录的形式来先定位元素在哪个槽然后再找,那针对多页,能否先定位元素在哪个页呢,也就是说我们可以为页也建立一个目...
2022-05-26 18:38:42 6605浏览 0点赞 0回复 1收藏
DR经过这样的设计,由于LVS负载均衡的作用,轻松解决了单机瓶颈,小章的公司顺利度过了C10K(并发连接1万),C20K,。。。。的问题,度过了瓶颈期,但随着并发数越来越高,小章发现了一个大问题,LVS逐渐扛不住了,因为所有数据包的进出都要经过它,这让它成为了很大的瓶颈,随着RS水平扩展数量越来越多,LVS迟早要挂掉。能否让LVS只负责转发请求包,但响应的数据包直接经由RS返回给客户端呢,类似下面这样画外音:红色虚线为数...
2022-05-26 18:38:36 7138浏览 0点赞 0回复 0收藏