自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

架构精进之路

公号「架构精进之路」,专注软件架构研究,技术学习与职业成长

  • 博客(476)
  • 收藏
  • 关注

原创 揭秘登上2021春晚舞台的黑科技-XR技术

我是架构精进之路,点击上方“关注”,坚持每天为你分享技术干货,私信我回复“01”,送你一份程序员成长进阶大礼包。‍2021牛年春晚的舞台效果太美了,在视觉表现、科技创新上做了诸多尝试,...

2021-02-14 17:16:07 5580 8

原创 系统稳定性建设实践总结

2020年,注定是个不平凡的一年。疫情的蔓延打乱了大家既定的原有的计划,同时也催生了一些在线业务办理能力的应用诉求,作为技术同学,需要在短时间内快速支持建设系统能力并保障其运行系统稳定性...

2020-12-03 12:45:00 2623 1

转载 平时的工作如何体现一个人的技术很牛?

思考:做需求与做需求的差异业务需求该怎么做再说「技术深度」获取做有深度事情的授权技术深度不是唯一标准最后看到一个讨论帖,原文如下:平时的工作如何体现一个人的技术很牛?平时工作中很多时候需求细而碎的,如何在工作中积累技术深度?又如何体现一个人的技术深度?思考:做需求与做需求的差异在回答问题之前,我想先抛开「技术深度」这个词,讲讲做需求这件事,说说我对做需求的理解。每一个程序员都是从刚毕业做需求开始,...

2024-07-18 08:30:30 6

转载 一文帮你梳理,高可用架构流量治理核心策略

hello,大家好,我是张张,「架构精进之路」公号作者。对于人类的身体健康来说,“三高”是个大忌,但在计算机界,系统的“三高”却是健康的终极目标。本文将介绍一下流量治理是如何维持这种“三高”系统的健康,保障数据流动的均衡与效率,就如同营养顾问在维持人类健康饮食中所起的作用一般。分享概要一、可用性的定义二、流量治理的目的三、流量治理的手段四、总结一、可用性的定义在探讨高可用架构之前,让我们以 O2 ...

2024-07-09 08:30:14 18

原创 如何正确使用上线部署,泳道、预发布到底如何理解?

hello,大家好,我是张张,「架构精进之路」公号作者。一、背景如今互联网,随着业务需求迭代快速,同一个服务可能存在多个同时开发和测试的功能,容易发生资源抢占分支互相冲突影响的问题,降低开发测试效率。同时微服务架构下,一个功能可能需要依赖多个服务。在测试其中一个服务的改动时,如果依赖的服务发生了改动或者故障,也会影响这个功能的测试。......以上种种问题情况,都会导致服务从测试到线上正式环境的环...

2024-07-03 08:31:42 768

转载 揭秘打车软件,如何找到方圆 1km 以内的乘客

hello,大家好,我是张张,「架构精进之路」公号作者。背景不知道大家是否思考过一个问题,在一些场景下(如大家在使用高德地图打车的时候,邻近的司机是如何知道你在他的附近并将你的打车通知推送给他去接单的?)是如何实现的?一般来讲,大家也许会想到,首先肯定需要知道每位乘客的经纬度(lng,lat),也即是二维坐标(当然这是在绝对理想的情况,不考虑上下坡度)。而在知道了经纬度之后,一个暴力简单且容易想到...

2024-06-21 08:31:53 34

转载 最近势头有点猛,聊聊 HTTP3 核心的五大特性

hello,大家好,我是张张,「架构精进之路」公号作者。HTTP 历史1991 HTTP/1.12009 Google 设计了基于TCP的SPDY2013 QUIC2015 HTTP/22018 HTTP/3HTTP/3 的核心在于 QUIC 协议。HTTP3是在保持QUIC稳定性的同时使用UDP来实现高速度(选择QUIC就是选择UDP), 同时又不会牺牲TLS的安全性.QUIC 协议概览QU...

2024-06-13 08:33:25 40

转载 学习优秀开源框架,打造牛逼程序员

hello,大家好,我是张张,「架构精进之路」公号作者。在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。经过整理,大概有以下设计模式,如图1所示。类型:创建型模式▊工厂模式SqlSessionFactory 的结构如图2所示。工厂模式:简单工厂是一种创建型模式,在父类中提供一个创建对象的方法,允许子类决定实例对象...

2024-06-06 08:30:20 33

原创 全面透彻,MySQL 正确的慢查询处理姿势

hello,大家好,我是张张,「架构精进之路」公号作者。发现的一些问题问题1在过去的半年时间里,研发团队内部尝试抓了一波儿慢查询SQL跟进处理率。发现有些同学对于慢查询处理的思路就是看看有没有用到索引,没有用到就试图加一个,实在不行就甩锅给这种情况是历史设计问题或者自行判定为用户特殊操作下触发的小概率事件,随即便申请豁免掉... 其实问题没有根本上解决。问题2还有就是网络上经常可以看到一些类似...

2024-05-28 08:30:09 726

原创 全面透彻,深刻理解 MySQL 索引

hello,大家好,我是张张,「架构精进之路」公号作者。对于 MySQL 索引,相信每位后端同学日常工作中经常会用到,但是对其索引原理,却可能未曾真正深入了解。B- 树和 B+ 树是 MySQL 索引使用的数据结构,对于索引优化和原理理解都非常重要,下面就揭开 B- 树和 B+ 树的神秘面纱,让大家在面试的时候碰到这个知识点一往无前,不再成为你前进的羁绊!本文主要内容:MySQL 查询耗时分析,抓...

2024-05-21 08:30:51 936

转载 一张图看懂微服务架构路线

hello,大家好,我是张张,「架构精进之路」公号作者。我为什么选择微服务架构?众所周知,单体应用程序,由于其种种不足,几乎不支持敏捷方法。如果你想为一个大型或复杂的业务创建一个软件项目,最好从微服务架构开始。微服务架构是一种灵活的架构,可以显著性地提高应用程序灵活性、可扩展性等。微服务架构路线据我了解很多开发者,想知道他们应该如何开始微服务架构旅程,虽然有成千上万的资源可以使用,但是资源到处分散...

2024-05-07 08:30:39 34

原创 系统设计中 跨时区问题 解决方案

hello,大家好,我是张张,「架构精进之路」公号作者。一、背景假如开发一套统一的系统产品,供遍布全球的所有分公司使用。产品功能设计中,经常会遇到一场活动,分跨不同时区,系统需要显示不同时区的时间,同时希望跨时区的用户可以同一时间开始,同一时间结束。对于类似跨时区处理问题,那我们该如何设计实现呢?二、几个重要概念时区划分时区是为了便于人们进行跨地区的交流、协作和管理。时区的划分以地...

2024-04-29 08:30:48 583

原创 解析微服务架构中10个重要的设计模式

hello,大家好,我是张张,「架构精进之路」公号作者。从软件开发早期(1960 年代)开始,应对大型软件系统中的复杂性一直是一项令人生畏的任务。多年来为了应对软件系统的复杂性,软件工程师和架构师们做了许多尝试:David Parnas 的模块化和封装 (1972), Edsger W. Dijkstra (1974)的关注点分离以及 SOA(1988)。他们都是使用分而治之这项成熟的传统技术来应...

2024-04-16 08:30:27 1065

原创 解析业务系统设计中的复杂度

hello,大家好,我是张张,「架构精进之路」公号作者。引言作为研发同学,是不是会遇到这样的问题:1、如何识别业务系统的复杂度?2、如何在需求研发之前,对需求规模做相对准确的预估?3、业务快速迭代与架构优化(降低复杂度)之间,如何做好平衡?......所以,有时自己就在思考,如何更好的拉平大家的认知,让协作更顺畅。这个事情前后构思了有一个多月吧,整理落笔零零散散写了两周,希望以上问题在本文能够找到...

2024-04-02 08:30:54 603

原创 关于Java程序服务预热那些事

hello,大家好,我是张张,「架构精进之路」公号作者。一、背景1.1 什么是服务预热所谓服务预热,就是在服务启动完成到对外提供服务之前,针对特定场景提供一些初始化准备操作。比如线程池预热、缓存预热、数据库预热、web预热和JVM预热等。1.2 为什么要预热因为服务刚启动的时候需要一段磨合期,这段期间,服务运行状态没有达到最佳。因此,如果这时候一下子将服务流量提升到正常水平,就有可能导致大量请求超...

2024-03-17 08:31:37 991

原创 一文了解限流策略的原理与实现

hello,大家好,我是张张,「架构精进之路」公号作者。引言限流策略主要用来控制在高并发、大流量的场景中对服务接口请求的速率。比如双十一秒杀、抢购、抢票、抢单等场景。举个例子,假设某个接口能够扛住的QPS为1k,这时有1w个请求进来,经过限流模块,会先放1k个请求,其余的请求会阻塞一段时间。不简单粗暴地返回404,让客户端重试,同时又能起到流量削峰的作用。在业务迭代开发过程中,系统的稳定性和可靠性...

2024-03-13 08:31:36 390

原创 为女儿奴程序员打造的“小可爱”

hello,大家好,我是张张,「架构精进之路」公号作者。本文分享一个无代码平台「扣子」搭建陪伴式养成角色-交互工具的使用全流程。1 扣子简介不禁要问,扣子是个啥?扣子(英文名称 Coze,直达官网) 是新一代一站式 AI Bot 开发平台。扣子主要功能:集成了丰富的插件工具,可以极大地拓展 Bot 的能力边界。提供了简单易用的知识库功能来管理和存储数据,支持 Bot 与你自己的数据进行交互。提供了...

2024-02-29 08:31:32 487

原创 让 数据库 和 缓存 数据保持一致的三种策略

hello,大家好,我是张张,「架构精进之路」公号作者。一、背景目前随着缓存架构方案越来越成熟化,通常做法是引入「缓存」来提高读性能,架构模型就变成了这样:先来看一下什么时候创建缓存,前端请求的读操作先从缓存中查询数据,如果没有命中数据,则查询数据库,从数据库查询成功后,返回结果,同时更新缓存,方便下次操作。在数据不发生变更的情况下,这种方式没有问题,如果数据发生了更新操作,就必须要考虑如何操作缓...

2024-02-20 08:31:39 1003

转载 RabbitMQ vs Kafka,我到底该如何选?

hello,大家好,我是张张,「架构精进之路」公号作者。介绍作为一名有着大量微服务系统处理经验的软件架构师,我经常遇到一个不断重复的问题:“我应该使用 RabbitMQ 还是 Kafka?”出于某种原因,许多开发人员认为这些技术是可以互换的。虽然在某些情况下确实如此,但 RabbitMQ 还是 Kafka 之间存在根本上的差异。因此,不同的场景需要不同的解决方案,选择错误的方案会严重影响我们的软件...

2024-01-25 08:31:43 251

转载 Redis 实现多规则限流的思考与实践

hello,大家好,我是张张,「架构精进之路」公号作者。简介市面上很多介绍redis如何实现限流的,但是大部分都有一个缺点,就是只能实现单一的限流,比如1分钟访问1次或者60分钟访问10次这种,但是如果想一个接口两种规则都需要满足呢,我们的项目又是分布式项目,应该如何解决,下面就介绍一下redis实现分布式多规则限流的方式。思考如何一分钟只能发送一次验证码,一小时只能发送10次验证码等等多种规则的...

2024-01-03 08:30:22 63

转载 从一笔交易充值,考虑到分布式事务处理

hello,大家好,我是张张,「架构精进之路」公号作者。文章纲要此次分享的缘由目前分布式事务问题是怎么解决的行业中有什么解决方案这些解决方案分别有什么优缺点别人是怎么做的我们可以怎么来做此次分享的缘由支付重构考虑支付重构的时候,自然想到原本属于一个本地事务中的处理,现在要跨应用了要怎么处理。拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户服务...

2023-12-07 08:31:57 59

转载 MySQL查询,是 join性能好,还是in一下更快呢?

hello,大家好,我是张张,「架构精进之路」公号作者。一、表结构1、用户表2、订单表二、先来试少量数据的情况1、join2、分开查3、代码层面三、试下多一些数据的情况1、join2、分开3、代码层面三、试下多一些数据的情况1、join2、分开3、代码层面四、到底怎么才能更好参考资料先总结:数据量小的时候,用join更划算数据量大的时候,join的成本更高,但相对来说join的速度会更快数据量过大...

2023-12-01 08:02:09 340

转载 Redis如何实现分页+多条件模糊查询?答案来了

hello,大家好,我是张张,「架构精进之路」公号作者。导言Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有模糊条件查询,在面对一些需要分页、排序以及条件查询的场景时(如评论,时间线,检索等),只凭借Redis所提供的功能就不太好不处理了。本文不对Redis...

2023-11-17 07:33:08 392

转载 SQL性能优化详解,值得收藏

hello,大家好,我是张张,「架构精进之路」公号作者。很多朋友经常会遇到如下情况:在做数据统计分析时,分析两分钟,跑数两小时......Web开发时候,通常的性能瓶颈,主要出现在数据查询时候.......在使用SQL过程中不仅要关注数据结果,同样要注意SQL语句的执行效率。本文涉及三大部分:1、SQL介绍2、SQL优化方法3、SQL优化实例1、MySQL的基本架构1)MySQL的基础架构图左边...

2023-11-15 08:31:22 148

转载 批量写库操作,如何优化?

hello,大家好,我是张张,「架构精进之路」公号作者。引言数据库插入操作的语句如下:insert into table values (a1, b1)涉及到SQL层和存储层,其中SQL层需要解析SQL语句,生成抽象语法树(AST),计算表达式等,存储层需要判断主键冲突,包括增量数据和基线数据上的主键冲突,如果是非重复主键,则将数据插入到增量数据中。上条插入语句只插入一行数据,称之为单条插入,相应...

2023-11-03 08:31:55 68

原创 MySQL与MongoDB,该如何做技术选型?

hello,大家好,我是张张,「架构精进之路」公号作者。引言一般情况下,会考虑到MySQL与MongoDB如何做技术选型的时候,你一定是遇到了类似于非结构化数据JSON的存取难题,否则大家都直接MySQL开始搞起了。为什么要关注MongoDB呢?下图是DB-Engines 2023年10月数据库的排名统计,可以看到MongoDB总排名在第5,在Nosql数据库中排名第1。既然要做技术选型,那就先要...

2023-10-31 18:30:39 362

原创 应该如何正确理解BFF架构设计?

hello,大家好,我是张张,「架构精进之路」公号作者。一、什么是BFFBFF:Backends For Frontends(服务于前端的后端)。BFF是一种Web架构,微服务设计系列丛书的作者 Sam Newman曾在他的博客中写了一篇相关文章《Pattern: Backends For Frontends》。BFF 的概念最初就是来源于此服务端设计API时会考虑到不同设备的需求,即为不同设备提...

2023-10-27 08:31:09 548

转载 数据库分库分表方案,总结的非常好!

hello,大家好,我是张张,「架构精进之路」公号作者。一、数据切分介绍关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容就是数据切分(Sharding),以及切分...

2023-10-08 08:30:29 861

转载 聊聊企业级消息推送的架构设计

hello,大家好,我是张张,「架构精进之路」公号作者。架构目标构建企业级统一基础推送服务,支持通过多渠道推送,能够统一集成的电子邮件、短信、聊天、钉钉、企业微信和其他公共社交应用:聊天 - 微信Wechat/QQ站内推送通知(移动设备和Web浏览器)站外推送通知(移动设备,APP没有开启)短信(如登录密码、营销活动)电子邮件钉钉企业微信企业级统一基础推送服务,是一个通用特性,适用于所有现代分布式...

2023-09-20 18:59:58 94

转载 合适的网络流量管理组件,API 网关 vs 负载均衡 究竟该如何抉择?

hello,大家好,我是张张,「架构精进之路」公号作者。由于互联网技术的发展,网络数据的请求数节节攀升,这使得服务器承受的压力越来越大。在早期的系统架构中,通常使用负载均衡来将网络流量平摊到多个服务器中,以此减轻单台服务器的压力。但是现如今,后端服务的种类在不断地变多,每个种类的后端都以 API 的形式对外暴露,这使得 API 的数量也在不断变多。以传统的负载均衡为主的系统架构的局限性就变得明显...

2023-08-23 08:31:48 103

转载 架构师必知必会,聊聊后端架构设计的演进

hello,大家好,我是张张,「架构精进之路」公号作者。你想成为一名架构师,对吗?别对我撒谎,我知道你想成为架构师。即使你不想,你还是想成为一名更好的开发者。否则,你就不会花时间阅读这篇文章????相信每一位程序员都有一颗成为架构师的心。毕竟,我们都希望在自己所从事的领域变得更好,即使不能称为最好。程序员的成长绕不开架构设计,有时架构设计就像鸿沟一样挡在程序员晋升之路上,只要跨过去就可以海阔天空。那么,...

2023-08-16 08:31:53 214

转载 一个高流量高并发系统,设计关注点有哪些

hello,大家好,我是张张,「架构精进之路」公号作者。相信每一位开发同学多多少少都想参与或负责一个高用户、高访问、高并发的系统吧。一来可以增加自己实际的项目经验,有应对高并发场景的解决方案,二来是有个高并发的项目经验无疑是自己简历的一个大大的加分项。但是奈何很多人都没有机会可以参与这样的项目,本文从以下几点介绍一下设计一个高流量高并发的系统需要经历哪些步骤以及考虑哪些因素(文章中的不足之处还请大...

2023-07-26 08:30:37 144

原创 ChatGPT:向未来迈进的智能对话伴侣

hello,大家好,我是张张,「架构精进之路」公号作者。相信最近许多朋友的生活中,可能或多或少都被 ChatGPT 刷屏了。记得 2023 年初时候,正值 ChatGPT 火热的时候,我当时整理过一篇一文看懂:近期不断 “狂飙” 的 ChatGPT。你可能看了很多文章,依然没有搞明白,ChatGPT 究竟是什么,它跟我有什么关系?间隔半年之后,再次重温回顾下 ChatGPT,今天的文章较长,所以...

2023-07-16 08:30:09 3190

转载 私藏多年的系统性能优化十大绝招(万字干货)

hello,大家好,我是张张,「架构精进之路」公号作者。阅读提醒→:本文内容较干,且篇幅较长,感谢打开,剩下的只管交给收藏夹。上篇引言:取与舍软件设计开发某种意义上是“取”与“舍”的艺术。关于性能方面,就像建筑设计成抗震9度需要额外的成本一样,高性能软件系统也意味着更高的实现成本,有时候与其他质量属性甚至会冲突,比如安全性、可扩展性、可观测性等等。大部分时候我们需要的是:在业务遇到瓶颈之前,利用常...

2023-07-05 08:30:13 275

转载 面对复杂业务系统,通用架构设计法则

hello,大家好,我是张张,「架构精进之路」公号作者。一、什么是复杂系统我们经常提到复杂系统,那么到底什么是复杂系统。我们看下维基的定义:复杂系统(英语:complex system),又称复合系统,是指由许多可能相互作用的组成成分所组成的系统。强调了两点:由点组成点之间有各种关联两点的规模和复杂性直接决定了系统的复杂程度。比如就拿我们的电商系统举例,分成很多部分,商品、库存、采购、订单、物流、...

2023-06-20 08:30:21 639

转载 高可用高性能核心原理探究,Kafka 核心全面总结

hello,大家好,我是张张,「架构精进之路」公号作者。引言在探究 Kafka 核心知识之前,我们先思考一个问题:什么场景会促使我们使用 Kafka? 说到这里,我们头脑中或多或少会蹦出异步解耦和削峰填谷等字样,是的,这就是 Kafka 最重要的落地场景。异步解耦:同步调用转换成异步消息通知,实现生产者和消费者的解耦。想象一个场景,在商品交易时,在订单创建完成之后,需要触发一系列其他的操作,比如...

2023-06-16 08:30:36 592

原创 尝试用Go goroutine实现一个简单的聊天服务

hello,大家好,我是张张,「架构精进之路」公号作者。对于聊天服务,想必大家都不会陌生,因为在我们的生活中经常会用到。我们用 Go 并发来实现一个聊天服务器,这个程序可以让一些用户通过服务器向其它所有用户广播文本消息。这个程序中有四种 goroutine。main 和 broadcaster 各自是一个 goroutine 实例,每一个客户端的连接都会有一个handleConn 和 client...

2023-06-08 08:30:12 411

转载 记录一下,亿级别大表拆分的心路历程

hello,大家好,我是张张,「架构精进之路」公号作者。# 前言笔者是在两年前接手公司的财务系统的开发和维护工作。在系统移交的初期,笔者和团队就发现,系统内有一张5000W+的大表。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。进一步的观察发现,这张表还在以每月600W+的数据持续增长,也就是说,不超过半年,这张表会增长到1个亿!笔者内心:...

2023-05-30 08:30:56 103

转载 聊聊分布式服务下的八种异步实现方式

hello,大家好,我是张张,「架构精进之路」公号作者。前言:异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:「发送短信、邮件、异步更新等」,这些都是典型的可以通过异步实现的场景。一、异步的八种实现方式1、线程Thread2、Future3、异步框架CompletableFuture4、Spring注解@Async5...

2023-05-24 08:30:53 674

原创 致那些35岁-45岁的伪“中年人”

hello,大家好,我是张张,「架构精进之路」公号作者。中年人是几岁到几岁?今天特意百度了下:“中年人是几岁到几岁?”给出的答案是:“45周岁到59周岁”说实话,有点儿出乎我的意料,40岁还不算是中年人嘛,造成这种错觉的原因,也许是周围被充斥了太多“35岁职场危机”的消息。近几年,关于年轻人和青年这个话题的讨论就一直占据热门榜,许多带着“35岁”的话题标签接踵而至。在这些讨论中,往往有一个醒目的...

2023-05-19 20:30:49 129

二维码生成接口(含源码),简单易用

1、二维码生成接口(含源码),文档注释全面,简单易用 2、服务接口说明:功能全面,可以定制内容、尺寸、前景色、背景色及透明度 3、一看就会,调用简单,易于应用

2022-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除