![](https://img-blog.csdnimg.cn/20210317154408440.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
架构应用技术
文章平均质量分 92
系统架构应用技巧、案例总结与分享
架构精进之路
「架构精进之路」公号作者
坚持原创总结、沉淀和分享,希望能带给大家一些引导和启发,坚信做难事者,必有所得!
展开
-
一文帮你梳理,高可用架构流量治理核心策略
hello,大家好,我是张张,「架构精进之路」公号作者。对于人类的身体健康来说,“三高”是个大忌,但在计算机界,系统的“三高”却是健康的终极目标。本文将介绍一下流量治理是如何维持这种“三高”系统的健康,保障数据流动的均衡与效率,就如同营养顾问在维持人类健康饮食中所起的作用一般。分享概要一、可用性的定义二、流量治理的目的三、流量治理的手段四、总结一、可用性的定义在探讨高可用架构之前,让我们以 O2 ...转载 2024-07-09 08:30:14 · 78 阅读 · 0 评论 -
揭秘打车软件,如何找到方圆 1km 以内的乘客
hello,大家好,我是张张,「架构精进之路」公号作者。背景不知道大家是否思考过一个问题,在一些场景下(如大家在使用高德地图打车的时候,邻近的司机是如何知道你在他的附近并将你的打车通知推送给他去接单的?)是如何实现的?一般来讲,大家也许会想到,首先肯定需要知道每位乘客的经纬度(lng,lat),也即是二维坐标(当然这是在绝对理想的情况,不考虑上下坡度)。而在知道了经纬度之后,一个暴力简单且容易想到...转载 2024-06-21 08:31:53 · 55 阅读 · 0 评论 -
学习优秀开源框架,打造牛逼程序员
这里用到的就是装饰器模式,也叫俄罗斯套娃模式。就像MyBatis 中的MapperProxy 实现类, 代理工厂实现的功能就是完成DAO 接口的具体实现类的方法,配置的任何一个DAO 接口调用的CRUD 方法,都会被MapperProxy 接管,调用到方法执行器等,并返回最终的数据库执行结果。正是因为有太多的日志框架,包括Log4j、Log4j2 和Slf4J 等,而这些日志框架的使用接口又各有差异,为了统一这些日志框架的接口,MyBatis 定义了一套统一的接口,为所有的其他日志框架的接口做相应的适配。转载 2024-06-06 08:30:20 · 54 阅读 · 0 评论 -
如何正确使用上线部署,泳道、预发布到底如何理解?
hello,大家好,我是张张,「架构精进之路」公号作者。一、背景如今互联网,随着业务需求迭代快速,同一个服务可能存在多个同时开发和测试的功能,容易发生资源抢占分支互相冲突影响的问题,降低开发测试效率。同时微服务架构下,一个功能可能需要依赖多个服务。在测试其中一个服务的改动时,如果依赖的服务发生了改动或者故障,也会影响这个功能的测试。......以上种种问题情况,都会导致服务从测试到线上正式环境的环...原创 2024-07-03 08:31:42 · 877 阅读 · 0 评论 -
系统设计中 跨时区问题 解决方案
hello,大家好,我是张张,「架构精进之路」公号作者。一、背景假如开发一套统一的系统产品,供遍布全球的所有分公司使用。产品功能设计中,经常会遇到一场活动,分跨不同时区,系统需要显示不同时区的时间,同时希望跨时区的用户可以同一时间开始,同一时间结束。对于类似跨时区处理问题,那我们该如何设计实现呢?二、几个重要概念时区划分时区是为了便于人们进行跨地区的交流、协作和管理。时区的划分以地...原创 2024-04-29 08:30:48 · 660 阅读 · 0 评论 -
一张图看懂微服务架构路线
hello,大家好,我是张张,「架构精进之路」公号作者。我为什么选择微服务架构?众所周知,单体应用程序,由于其种种不足,几乎不支持敏捷方法。如果你想为一个大型或复杂的业务创建一个软件项目,最好从微服务架构开始。微服务架构是一种灵活的架构,可以显著性地提高应用程序灵活性、可扩展性等。微服务架构路线据我了解很多开发者,想知道他们应该如何开始微服务架构旅程,虽然有成千上万的资源可以使用,但是资源到处分散...转载 2024-05-07 08:30:39 · 56 阅读 · 0 评论 -
解析微服务架构中10个重要的设计模式
hello,大家好,我是张张,「架构精进之路」公号作者。从软件开发早期(1960 年代)开始,应对大型软件系统中的复杂性一直是一项令人生畏的任务。多年来为了应对软件系统的复杂性,软件工程师和架构师们做了许多尝试:David Parnas 的模块化和封装 (1972), Edsger W. Dijkstra (1974)的关注点分离以及 SOA(1988)。他们都是使用分而治之这项成熟的传统技术来应...原创 2024-04-16 08:30:27 · 1097 阅读 · 0 评论 -
解析业务系统设计中的复杂度
hello,大家好,我是张张,「架构精进之路」公号作者。引言作为研发同学,是不是会遇到这样的问题:1、如何识别业务系统的复杂度?2、如何在需求研发之前,对需求规模做相对准确的预估?3、业务快速迭代与架构优化(降低复杂度)之间,如何做好平衡?......所以,有时自己就在思考,如何更好的拉平大家的认知,让协作更顺畅。这个事情前后构思了有一个多月吧,整理落笔零零散散写了两周,希望以上问题在本文能够找到...原创 2024-04-02 08:30:54 · 624 阅读 · 0 评论 -
关于Java程序服务预热那些事
hello,大家好,我是张张,「架构精进之路」公号作者。一、背景1.1 什么是服务预热所谓服务预热,就是在服务启动完成到对外提供服务之前,针对特定场景提供一些初始化准备操作。比如线程池预热、缓存预热、数据库预热、web预热和JVM预热等。1.2 为什么要预热因为服务刚启动的时候需要一段磨合期,这段期间,服务运行状态没有达到最佳。因此,如果这时候一下子将服务流量提升到正常水平,就有可能导致大量请求超...原创 2024-03-17 08:31:37 · 1028 阅读 · 0 评论 -
应该如何正确理解BFF架构设计?
hello,大家好,我是张张,「架构精进之路」公号作者。一、什么是BFFBFF:Backends For Frontends(服务于前端的后端)。BFF是一种Web架构,微服务设计系列丛书的作者 Sam Newman曾在他的博客中写了一篇相关文章《Pattern: Backends For Frontends》。BFF 的概念最初就是来源于此服务端设计API时会考虑到不同设备的需求,即为不同设备提...原创 2023-10-27 08:31:09 · 608 阅读 · 0 评论 -
聊聊分布式日志系统的设计与实践
hello,大家好,我是张张,「架构精进之路」公号作者。1、什么是日志日志是一种按照时间顺序存储记录的数据,它记录了什么时间发生了什么事情,提供精确的系统记录,根据日志信息可以定位到错误详情和根源。按照APM概念的定义,日志的特点是描述一些离散的(不连续的)事件。由于日志本身固有的特性,记录从左向右开始顺序插入,也就意味着左边的记录相较于右边的记录“更老”, 也就是说我们可以不用依赖于系统时钟,这...原创 2023-04-29 08:30:11 · 630 阅读 · 0 评论 -
执行个 DEL 竟也会阻塞 Redis?深挖一下果然不简单
忠告各位开发同学,即便Redis提供了lazy-free,我建议还是尽量不要在Redis中存储bigvalue原创 2023-04-03 10:22:15 · 998 阅读 · 0 评论 -
爆火的微服务架构,通俗易懂讲解
hello,大家好,我是张张,「架构精进之路」公号作者。最近随着微服务(Microservice)的火爆,微服务架构也被大家越来越多的提及,今天就为大家结合收集的资料,权当做一个微服务架构的全面总结式的梳理~目录如下:一、微服务架构介绍二、出现和发展三、传统开发模式和微服务的区别四、微服务的具体特征五、SOA和微服务的区别六、如何具体实践微服务七、常见的微服务设计模式和应用八、微服务的优点和缺点九...原创 2022-09-23 08:31:36 · 373 阅读 · 0 评论 -
太强了,全面解析缓存应用经典问题
hello,大家好,我是张张,「架构精进之路」公号作者。1前言随着互联网从简单的单向浏览请求,发展为基于用户个性信息的定制化以及社交化的请求,这要求产品需要做到以用户和关系为基础,对海量数据进行分析和计算。对于后端服务来说,意味着用户的每次请求都需要查询用户的个人信息和大量的关系信息,此外大部分场景还需要对上述信息进行聚合、过滤、排序,最终才能返回给用户。CPU是信息处理、程序运行的最终执行单元,...原创 2022-11-27 22:00:38 · 195 阅读 · 1 评论 -
架构设计杂谈
什么是架构设计架构设计是基于架构原则和目标给出问题解决方案的过程。架构和设计遵循相同的原则和方法,只是解决问题的规模和层次不同,而这规模和层次没有明显界限。问题:架构设计最基础的个人素质是什么?架构设计最基础的技术能力是什么?原则、目标与方法原则:动静分离,高内聚,低耦合目标:可控性:拆分,分而治之,拆分粒度取决于业......原创 2022-08-03 08:31:26 · 291 阅读 · 0 评论 -
跨系统数据一致性问题解决方案汇总
hello,大家好,我是张张,「架构精进之路」公号作者。目前随着微服务化建设的普及,存在越来越多的跨系统数据交互情况,跨系统数据一致性问题越发凸显,那如何有效保证跨系统数据的一致性呢?本文旨在总结沉淀工作中问题的解决经验,整理解决跨系统数据不一致问题的经验方法。提到数据一致性,我们很容易想到的就是数据库中的事务操作。事务的原子性和持久性可以确保在一个事务内,操作多条数据,要么都成功,要么都失败。这样在一个系统内部,我们可以很自然地使用数据库事务来保证数据一致性。但是在微服务的今天,一项操作会涉及到跨多个系统原创 2022-06-21 08:31:42 · 6156 阅读 · 1 评论 -
为什么TCP 建连接要3次,断连接却要4次呢?
大家好,今天聊聊传输层通信协议TCP的经典问题:建连接与断连接。网络上的传输是没有连接的,包括TCP也是一样的。而TCP所谓的“连接”,其实只不过是在通讯的双方维护一个“连接状态”,让它看...原创 2021-05-12 08:03:00 · 604 阅读 · 0 评论 -
详细讲解服务幂等性设计
引子在日常工作中的一些技术设计方案评审会上,经常会有提到注意服务接口的幂等性问题,最近就有个同学就跑到跟前问我,幂等性到底是个啥?在...原创 2021-11-02 12:18:00 · 306 阅读 · 0 评论 -
聊聊十种常见的软件架构模式
有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的体系...转载 2021-04-13 08:15:00 · 2194 阅读 · 0 评论 -
面试常见的四种算法思想,全在这里了
我是架构精进之路,点击上方“关注”,坚持每天为你分享技术干货,私信我回复“01”,送你一份程序员成长进阶大礼包。面试常见的四种算法思想,全在这里了,今天带你一文了解。1、贪心贪心算法有很...原创 2021-01-15 08:45:00 · 916 阅读 · 0 评论 -
HASH碰撞问题一直没真正搞懂?这下不用慌了
我是架构精进之路,点击上方“关注”,坚持每天为你分享技术干货,私信我回复“01”,送你一份程序员成长进阶大礼包。HASH算法介绍散列函数(英语:Hash function)又称散列算法、...原创 2021-01-16 17:01:00 · 1618 阅读 · 0 评论 -
基础扫盲篇 | 四种常见的软件架构
- 前言 -如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人...原创 2021-11-14 11:53:00 · 3225 阅读 · 0 评论 -
全面解析容器编排技术 Kubernetes
容器编排是指对多个容器的部署,管理和监控。之所以有容器编排技术,其实是和业务量与系统复杂度与日俱增推动服务部署的演进方式息息相关的。原创 2022-02-09 08:19:00 · 1869 阅读 · 0 评论 -
关于防御性编程,你应该知道的事
提起编程,对于程序员同学而言并不陌生,关于防御性编程相信大家也有所耳闻,但是它具体包括哪些内容呢?又有哪些行之有效的处理方案呢?我们...原创 2022-03-10 08:28:00 · 860 阅读 · 0 评论 -
关于缓存更新的一些可借鉴套路
hello,大家好,我是张张,「架构精进之路」公号作者。一、背景目前随着缓存架构方案越来越成熟化,通常做法是引入「缓存」来提高读性能,架构模型就变成了这样:先来看一下什么时候创建缓存,前端...原创 2021-10-29 18:38:00 · 180 阅读 · 0 评论 -
关于架构设计的易变性,应该如何理解呢?
hello,大家好,我是张张,「架构精进之路」公号作者。一、架构设计分层通常情况下,我们的架构设计图大概率会如下图这个样子了,首先声明一点,这其实并没有什么不妥的,这也是很典型的分层设计啦...原创 2021-10-11 08:16:00 · 1489 阅读 · 1 评论 -
带你简易入门一致性算法Raft
hello,大家好,我是张张,「架构精进之路」公号作者。最近跟团队同学聊到了一致性算法Raft,于是翻了下之前发布整理过的文章,重新温故学习之。一、Raft算法概述当我们只有一个服务节点...原创 2021-08-13 08:18:00 · 290 阅读 · 9 评论 -
Design for failure常见的12种设计思想
▲点击上方“架构精进之路”关注公众号回复“01”领取「程序员进阶大礼包」这是「架构精进之路」公众号的第76篇原创文章hello,大家好,我是张张,「架构精进之路」公号作者。通常情况下,我...原创 2021-08-02 08:18:00 · 552 阅读 · 1 评论 -
软件架构模式之微服务架构
1、微服务架构介绍微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。定义:围绕业务领域原创 2021-06-24 20:36:20 · 1843 阅读 · 8 评论 -
动手实践,Linux 安装 php-vld 全过程实录
开篇三问对于一些新手小白可能会发问:VLD 是什么?答:vld 是 PECL extensions 扩展之一 ,也就是我们在 php.ini 中 extension=php_mysql.dll 这种,它的主要功能是方便我们查看 php 底层编译的 opcode。紧接着又有第二问:opcode 是什么?答:当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache 的目地是避免重复编译,减少 CPU.原创 2021-06-11 18:15:37 · 303 阅读 · 10 评论 -
工作多年的你,Linux文件系统还不太了解吧
我们每天都在接触编程,接触linux系统,那么常见的目录和文件都有哪些,他们都有什么作用?1 初识目录结构2 初识文件2.1 文件类型2.1.1 文件第一个属性为 [-]。最常用的类型,包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件。2.1.2 目录第一个属性为 [d]2.1.3 链接文件第一个属性为 [l]2.1.4 管道第一个属性为 [p]2.1.5 块设备第一个属性为 [b] 。储数据...原创 2021-06-04 17:35:55 · 303 阅读 · 12 评论 -
9张图,Kafka为什么要放弃Zookeeper
最近,confluent社区发表了一篇文章,主要讲述了Kafka未来的2.8版本将要放弃Zookeeper,这对于Kafka用户来说,是一个重要的改进。之前部署Kafka就必须得部署Zoo...转载 2021-04-22 08:10:00 · 960 阅读 · 2 评论 -
一文搞懂分布式锁的原理与实现
前言对于锁,大家应该都不陌生,手机上可以加锁,想用时候解锁,不用的时候上锁,那自行车、房门同样可以加把锁,道理属于类似的情况。在日常开发工作中,我们为了保证资源操作的最终一致性,同样需要用...原创 2021-04-19 08:10:00 · 405 阅读 · 0 评论 -
我也曾对架构师的力量一无所知
是不是觉得这个标题似曾相识?没错,就是致敬韩寒的那篇《我也曾对那种力量一无所知》。全文主旨就是业余玩家自嗨可以,但千万别狂妄到企图挑衅专业选手。否则,下场就和当初的 松江新区·奥沙利文·...转载 2021-04-12 08:12:00 · 700 阅读 · 0 评论 -
聊聊集群、分布式和微服务之间的联系和异同点
对于集群、分布式和微服务,大家在工作中可能经常会听到,但是如果问你它们之间存在什么样的区别和联系,可能你一下子又感觉说不清楚,今天就这个话题,趁着周末时间,跟大家来一起聊聊。弄明白是什么要...原创 2021-03-27 13:55:08 · 730 阅读 · 0 评论 -
架构到底是什么?
课程概览1、架构与框架的区别2、架构到底是什么?3、架构的目的是什么?1、架构与框架的区别提到架构,大家常常会将架构(Architecture)和框架(Framework)混为一谈。例如...原创 2020-04-21 20:15:34 · 763 阅读 · 0 评论 -
系统稳定性建设实践总结
2020年,注定是个不平凡的一年。疫情的蔓延打乱了大家既定的原有的计划,同时也催生了一些在线业务办理能力的应用诉求,作为技术同学,需要在短时间内快速支持建设系统能力并保障其运行系统稳定性...原创 2020-12-03 12:45:00 · 2673 阅读 · 1 评论 -
2020 | 带领团队学习成长,精华总结
正文共:3166字10图预计阅读时间:8分钟在2020年这个非同寻常的年份里面,自己与团队小伙伴一起利用周例会时间,分享学习了《架构整洁之道》系列内容,同团队一起学习成长。在这...原创 2020-12-20 20:30:00 · 1805 阅读 · 2 评论 -
实用 | Redis 实现发布订阅原理与实践
我是架构精进之路,点击上方“关注”,坚持每天为你分享技术干货,私信我回复“01”,送你一份程序员成长进阶大礼包。写在前面Redis 是完全开源的,高性能的 key-value 数据库,...原创 2021-02-20 21:28:48 · 401 阅读 · 3 评论 -
面向业务的高可用架构设计
前言海恩法则· 事故的发生是量的积累的结果。· 再好的技术、再完美的规章 , 在实际操作层面也无法取代人自身的素质和责任心 。墨菲定律· 任何事情都没有表面看起来那么简单 。· 所有事情的...转载 2021-03-06 12:05:00 · 509 阅读 · 0 评论