- 博客(14)
- 收藏
- 关注
转载 亿级流量架构演进实战 | 架构演进构建TCP长连接网关
这不是一个讲概念的专栏,而且我也不擅长讲概念,每一篇文章都是一个故事,我希望你可以通过这些故事了解我当时在实际工作中遇到问题和背后的思考,架构设计是种经验,我有幸参与到多个亿级系统的架构设计中,有所收获的同时也希望把这些收获分享与大家。承接上篇,网关是负责接口调用获取请求数据的,HTTP 属于单向操作,建客户端与服务平台的 TCP 双向通道,保持客户端与服务平台的会话状态,则可以提供更多、更灵活的技术实现和业务实现。在业务服务调用上通过 HTTP 网关,在平台服务调用上则通过 TCP 网关,实现平台
2021-11-11 15:08:49 400
转载 图解Redis:一套方案轻松学会数据库与缓存数据不一致问题
一天,老板说「最近公司的用户越来越多了,但是服务器的访问速度越来越差的,阿旺帮我优化下,做好了给你画个饼!」。程序员阿旺听到老板口中的「画饼」后就非常期待,没有任何犹豫就接下了老板给的这个任务。阿旺登陆到了服务器,经过一番排查后,确认服务器的性能瓶颈是在数据库。这好办,给服务器加上 Redis,让其作为数据库的缓存。这样,在客户端请求数据时,如果能在缓存中命中数据,那就查询缓存,不用在去查询数据库,从而减轻数据库的压力,提高服务器的性能。1阿旺有了这个想法后,就准备开始着手优
2021-11-10 15:46:19 159
转载 2万字|30张图带你领略glibc内存管理精髓(因为OOM导致上千万损失)
前言5年前,在上家公司的时候,因为进程OOM造成了上千万的损失,当时用了一个月的时间来分析glibc源码,最终将问题彻底解决。最近在逛知乎的时候,发现不少人有对malloc/free有类似的疑惑,恰好自己有阅读过这方面的源码,所以将之前的源码阅读笔记整理了下,用了大概3周的时间写了这篇文章,分析glibc的内存管理精髓,相信对c/c++从业者都会有用。提纲1 写在前面源码分析本身就很枯燥乏味,尤其是要将其写成通俗易懂的文章,更是难上加难。本文尽可能的从读者角度去进行分析,重点
2021-11-09 14:31:46 313
原创 腾讯三面:哨兵挂了,Redis还能正常工作吗?
redis哨兵都干了什么redis哨兵是一个运行的特殊的redis进程,他主要有三个使命:监控 选主 通知监控的是什么哨兵主要是监听主库和从库是否存活,怎么进行监控? 哨兵会定期的给从库发送PING命令,如果从库没有在设定的时间内回复哨兵,那么就会认为从库下线了。哨兵也会定期的给主库发送PING命令进行通信,如果主库也没有在设定的时间内回复哨兵,那么就会认为主库也“下线了”。【注意我这里只是为了说明下监控的方式,真正判断的主库下线不是这样的】。看图说话:可以看到图中redi
2021-11-08 19:21:55 192
转载 0.07 秒启动一个 SpringBoot 项目
写一段简单的 Java 程序。public class Hello { public static void main(String[] args) { System.out.println("hello world"); }}通常我们想运行它要这样。但运行起来需要 jre。我们换一种方式来编译这个程序,首先下载一个 GraalVM 的 native-image 工具,然后。执行完这个命令后,发现当前目录多了个 hello 文件。
2021-11-05 20:29:36 297
转载 腾讯二面: Linux操作系统里一个进程最多可以创建多少个线程?
昨天有位读者被坑了,问了我这么个问题:大致意思就是,他看了一个面经,说虚拟内存是 2G 大小,然后他看了我的图解系统 PDF 里说虚拟内存是 4G,然后他就懵逼了。其实他看这个面经很有问题,没有说明是什么操作系统,以及是多少位操作系统。因为不同的操作系统和不同位数的操作系统,虚拟内存可能是不一样多。Windows 系统我不了解,我就说说 Linux 系统。在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址 空间的范围也不同
2021-11-04 14:42:20 174
转载 阿里一面:TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?
之前有读者问了我这么个问题:大致问题是,TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?这是个好问题,应该有不少人都会搞混,因为这两个东西看上去太像了,很容易误以为是同一个东西。事实上,这两个完全是两样不同东西,实现的层面也不同:HTTP 的 Keep-Alive,是由应用层(用户态)实现的,称为 HTTP 长连接; TCP 的 Keepalive,是由TCP 层(内核态)实现的,称为 TCP 保活机制;接下来,分别说说它们。HTT...
2021-11-03 16:20:08 149
转载 DDD领域驱动设计落地实践(十分钟看完,半小时落地)
一、引子不知今年吹了什么风,忽然DDD领域驱动设计进入大家视野。该思想源于2003年 Eric Evans编写的“Domain-Driven Design领域驱动设计”简称DDD,Evans DDD是一套综合软件系统分析和设计的面向对象建模方法。刚好公司领导强力推荐这个,抱着学习的心态,耗时5个月,体验了一把:“DDD从入门到弃坑”。二、思想学习网站:https://www.jdon.com/ddd.html2.1 服务器后端发展三个阶段服务器后端发展三个阶段:面向过程脚本:
2021-11-02 20:51:55 986 1
转载 SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了
在我们平时工作中经常会遇到要操作Excel的功能,比如导出个用户信息或者订单信息的Excel报表。你肯定听说过POI这个东西,可以实现。但是POI实现的API确实很麻烦,它需要写那种逐行解析的代码(类似Xml解析)。今天给大家推荐一款非常好用的Excel导入导出工具EasyPoi,希望对大家有所帮助!EasyPoi简介用惯了SpringBoot的朋友估计会想到,有没有什么办法可以直接定义好需要导出的数据对象,然后添加几个注解,直接自动实现Excel导入导出功能?EasyPoi正是这么一款工具.
2021-10-31 17:04:41 367
转载 这一篇 K8S(Kubernetes)我觉得可以了解一下
什么是Kubernetes?Kubernetes是Google开源的分布式容器管理平台,是为了更方便的在服务器中管理我们的容器化应用。Kubernetes简称 K8S,为什么会有这个称号?因为K和S是Kubernetes首字母和尾字母,而K和S中间有八个字母,所以简称 K8S,加上Kubernetes比较绕口,所以一般使用简称 K8S。Kubernetes即是一款容器编排工具,也是一个全新的基于容器技术的分布式架构方案,在基于Docker的基础上,可以提供从创建应用>应用部署...
2021-10-30 13:24:31 135
转载 给面试官上一课:HTTPS是先进行TCP三次握手,再进行TLS四次握手
上周有位读者在面试的时候,碰到这么个问题:面试官跟他说HTTPS 中的 TLS 握手过程可以同时进行三次握手,然后读者之前看我的文章是说「先进行 TCP 三次握手,再进行 TLS 四次握手」,他跟面试官说了这个,面试官说他不对,他就感到很困惑。我们先不管面试官说的那句「HTTPS 中的 TLS 握手过程可以同时进行三次握手」对不对。但是面试官说「HTTPS 建立连接的过程,先进行 TCP 三次握手,再进行 TLS 四次握手」是错的,这很明显面试官的水平有问题,这种公司不去也罢!如果.
2021-10-29 15:57:47 1100
转载 面试官:hold住了八股和算法,扫码登录应该怎么实现你总不会了吧
真实面试小场景:经过八股和算法的交锋,老三松了口气,都hold住了。只见面试官微微一笑,“其实,我真正想问的是……你觉得扫码登录应该怎么实现。”老三:“啊……这个,哦……那个,这个就这么,然后……额……嗯……”面试官:“了解了,回去等通知吧。”完……好了,铺垫结束,进入我们今天的主题,扫码登录功能该如何实现?扫码登录场景扫码登录场景想必我们都不陌生——很多PC端的网站都提供了扫码登录的功能,无需在网页上输入任何账号和密码,只需要通过手机上的APP,如微信、淘宝、QQ等等,使用扫描
2021-10-28 14:04:23 65
转载 MySQL沉浸式面试:隔离级别、锁、索引原理连环炮你扛得住吗?
今天我们来聊聊MySQL原理基础篇主要是侧重基础知识,原理篇是有一定基础后的递进,通过学习本篇,不仅可以进一步了解MySQL的各项特性,还能为接下来的容灾调优打下坚实的基础。现在,就让我们继续跟随阿柴进行这场沉浸式面试吧。ACID与隔离级别那你先来说说MySQL的四种隔离级别吧。SQL标准定义了4类隔离级别,包括一些具体规则,用来限定事务之间的隔离性。这四种级别分别是读未提交、读已提交、可重复读、串型化。读未提交,顾名思义,就是可以读到还没有提交的数据;读已提交会读到其它
2021-10-27 14:25:16 75
转载 JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么
编者按:笔者在 HBase 业务场景中尝试将 JDK 从 8 升级到 11,使用 G1 GC 作为垃圾回收器,但是性能下降 20%。到底是什么导致了性能衰退?又该如何定位解决?本文介绍如果通过使用 JFR、火焰图等工具确定问题,最后通过版本逐一验证找到了引起性能问题的代码。在毕昇 JDK 众人率先修复问题最后将修复推送到上游社区中。希望通过本文的介绍让读者了解到如何解决大版本升级中遇到的性能问题;同时也提醒 Java 开发者要正确地使用参数(使用前要理解参数的含义)。HBase 从 2.3.x 开始正式默
2021-10-26 21:00:07 446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人