架构设计
文章平均质量分 91
架构设计
Young丶
这个作者很懒,什么都没留下…
展开
-
十年前的微信消息收发架构长啥样?
以上简单的描述了微信消息收发的架构,该架构实现了即时通讯软件对消息收发所需的两个基本要求:消息尽可能的实时送达。不丢消息。以上,是 2014 年微信古早时期的消息收发架构的基本介绍,时过境迁,微信的消息收发架构已经发生了巨大的变化,但我们还是可以从中看到技术演变的价值与力量。程序员最大的成就与幸福,或许就是自己的代码跑在千万人的设备上,默默支撑着海量的需求。原创 2024-04-19 09:31:23 · 507 阅读 · 0 评论 -
从0到1 带你设计百万级并发应用要点
设计一个拥有上百万用户的系统是很有挑战性的,这将是一个不断优化、持续改进的过程。在本章中,我们先创建一个单用户的系统,然后逐渐将其扩展成可以服务上百万用户的系统。读完本文,你将掌握几个能帮助你破解系统设计面试难题的技巧。原创 2024-01-26 11:03:16 · 11895 阅读 · 0 评论 -
十年业务开发总结,如何做好高效高质量的价值交付
软件交付是一个非常复杂的过程和体系,我们需要保障好每个阶段的质量和效率才能保障最终的质量和效率。提升软件交付的质量和效率是一个永恒的话题,不同经历的同学可能有不同的经验和方法论,甚至不同团队会有不同的做法,不管你的做法是什么,我觉得我们永远从一些实际问题出发去思考解法,不断通过一些问题来完善我们做事的方法论和体系总是对的,如果我们面对问题总想放过它,那么我们永远无法做到高效高质量地交付。转载 2023-10-30 09:45:12 · 113 阅读 · 0 评论 -
阿里终面:10W+TPS ,我的浏览记录系统如何设计?
我的浏览数据典型的高并发写入、低并发查询场景。我们要从数据可靠性、成本、系统实现难度、读写性能等多个方面全面评估。落实到存储结构时,需要考虑存储系统支持的特性是否满足。综合分析下来,让我意识到我的浏览行为 是一个对存储系统挑战极大的场景。有一个稳定可靠性能强大、功能强大的存储系统真的可以简化 业务逻辑的实现。·END·转载 2023-10-07 11:42:46 · 265 阅读 · 0 评论 -
聊聊电商系统架构演进
具体以电子商务网站为例, 展示web应用的架构演变过程。原创 2023-10-04 10:23:43 · 593 阅读 · 0 评论 -
大家平时天天说的分布式系统到底是什么东西?
其实分析完了之后,大家应该就大概知道了,招聘JD上写这个分布式系统的设计和开发经验,其实他是一个很大的主题,里面包含很多的内容。你的系统一旦分布式了之后,通信、缓存、消息、事务、锁、配置、日志、监控、会话,等等各种原来单块系统场景下很容易解决的问题,都会变得很复杂,需要引入大量外部的技术。所以你有没有参与过类似这样的一个大的分布式系统?你有没有基于各种技术解决过分布式系统场景下的各种技术问题?这就是人家希望和要求的分布式系统设计和开发的经验。如果大家还没接触过,建议多去学习一下。原创 2023-09-15 10:45:00 · 1200 阅读 · 0 评论 -
如何优雅做好项目管理?
项目( Project )是为创造独特的产品、服务或者成果而进行的临时性工作。管理( Management )通过实施计划、组织、领导、协调、控制等职能来协调他人的活动,使别人同自己一起实现既定目标的活动过程。项目管理(Project Management) 在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程。从项目的基本概况可以看出,每个项目是具备三种基本特征即独特性、临时性、目的性。转载 2023-08-16 12:15:00 · 12105 阅读 · 0 评论 -
迄今为止最完整的 DDD 实践
实体有唯一的标识,有生命周期且具有延续性。例如一个交易订单,从创建订单我们会给他一个订单编号并且是唯一的这就是实体唯一标识。同时订单实体会从创建,支付,发货等过程最终走到终态这就是实体的生命周期。订单实体在这个过程中属性发生了变化,但订单还是那个订单,不会因为属性的变化而变化,这就是实体的延续性。转载 2023-08-20 07:15:00 · 2007 阅读 · 0 评论 -
聊聊「订单」业务的设计与实现
订单业务一直都是系统研发中的核心模块,订单的产生过程,与系统中的很多模块都会高度关联,比如账户体系、支付中心、运营管理等,即便单看订单本身,也足够的复杂;业务在发展的过程中,必然会导致订单量的持续增加,订单自身、数据体量、实现流程,都需要不断的迭代更新,如果在订单流程的研发初期,没有相对全面的考量,那么很有可能导致中后期的重构;转载 2023-08-19 10:45:00 · 2641 阅读 · 0 评论 -
订单超时怎么处理?看看阿里的方案
如果对于超时精度比较高,超时时间在 24 小时内,且不会有峰值压力的场景,推荐使用 RocketMQ 的定时消息解决方案。在电商业务下,许多订单超时场景都在 24 小时以上,对于超时精度没有那么敏感,并且有海量订单需要批处理,推荐使用基于定时任务的跑批解决方案。转载 2023-08-17 06:30:00 · 11005 阅读 · 0 评论 -
分析业务团队如何进行技术建设
本文简单探讨了前端业务团队如何进行技术建设的问题。以维护团队知识库为起点,打造业务架构虚拟团队,并高效地造有用的轮子。通过这些方向,推动团队成员进行技术产出,解决技术焦虑问题。由于笔者经验不足,本文仅仅作为抛砖引玉,还望有所帮助,或探讨指正。原创 2023-07-26 08:30:00 · 23927 阅读 · 0 评论 -
BI和报表的区别,终于有人说清楚了!
本文主要讲明了 BI 与报表的区别,并明确了企业在信息化 / 数字化建设过程中的三个阶段。但值得一提的是,不必纠结于概念,因为无论是报表还是 BI 工具,都是为企业和人服务的,选择适合企业所处数据阶段的工具就是最好的。报表工具适合正处于。原创 2023-06-30 09:32:32 · 38016 阅读 · 0 评论 -
后端服务架构高性能设计之道
本文主要探讨和总结服务架构设计中高性能的技术和方法,如下图的思维导图所示,左边部分主要偏向于编程应用,右边部分偏向于组件应用,文章将按图中的内容展开。本文探讨和总结了后台开发设计高性能服务的常用方法和技术,并通过思维导图总结了成一套方法论。当然这不是高性能的全部,甚至只是凤毛菱角。每个具体的领域都有自己的高性能之道,如网络编程的 I/O 模型和 C10K 问题,业务逻辑的数据结构和算法设计,各种中间件的参数调优等。文中也描述了一些项目的实践,如有不合理的地方或者有更好的解决方案,请各位同仁赐教。原创 2023-06-05 08:30:00 · 40014 阅读 · 0 评论 -
高频面试题:秒杀场景设计
总的来说,面对巨量的流量我们的方式就是首先通过各种条件先筛选掉无效流量,进行流量错峰,然后再对现有的系统性能做出优化,比如页面静态化,库存商品预热,也可以通过独立部署的方式和其他的环境做隔离,最后还要解决高并发下缓存一致性、库存不能超卖的问题,防止大量的并发打爆你的数据库。一个完整的活动从前端到后端是一个完整的链路,中间有事前的演练工作,事后的数据分析等都是必不可少的环节。转载 2022-04-08 00:07:31 · 1851 阅读 · 0 评论 -
聊聊最适合程序员的画图工具
没问题,直接坦白讲,我用了 2 年的画图工具是:draw.io。我的图解文章里的图片全是在 draw.io 这个工具画的,写了那么久的图解文章,再加上我工作中也有画图的习惯,累计也有在上面画了接近 1000+ 张图片。选择它的原因很简单,因为是免费的,而且图片的源文件可以直接保存到 Github 的,这样非常方便,相当于直接云备份到了 Github 仓库里。draw.io 画图工具可以在线画图,或者下载应用,或者作为 visual studio code 插件来使用。我比较常用的方式是在线画图,就是直接在网原创 2023-01-01 17:15:00 · 55083 阅读 · 0 评论 -
我在简历里写了TCP长连接架构设计,面试官都被我惊艳了
然后实时计算,得到一个列表排序,这个排序是按照节点数最少的节点排序的。因此在每个接入层节点中的处理上,还有一点非常重要的就是,维持着大量长连接后,如果客户端一直没有请求,或者客户端以为异常导致关闭了连接但是服务端并不知晓,那么这些无用的长连接,服务端肯定是需要清理的,避免占用大量资源。因此,针对 IM 场景,最合理的负载均衡策略,就是根据连接数来负载均衡,客户端新发起连接需要接入的接入层节点一定是连接数最少的,因为每台节点会需要控制最大连接数的限制才能保证最优性能,并且能够及时给压力大的节点减压。原创 2022-12-22 14:58:49 · 48092 阅读 · 0 评论 -
天天刷 B站,了解他们的评论系统是如何设计的吗?
后来衍生了更为复杂的热评:既包括类似「妙评」这种用户推荐、运营精选且带logo突出展示的产品形态,也包括各类热评排序算法,且热评排序算法应用场景也不仅局限于评论主列表的热度序,还包括楼中楼(外露子评论)、动态外露评论等。转载 2022-12-12 06:15:00 · 39732 阅读 · 0 评论 -
项目组入职一个阿里的大 牛,看他写代码真的太优雅了
今天和大家主要分享了几种项目中消除重复代码的实践方案,同时沉淀了如何优雅消除代码重复的方法论,希望通过这样的沉淀以及总结可以在大家遇到同样的问题的时候可以有所帮助,通过实际的优化代码落地来提升平台的可维护性。,因此会导致后期的代码维护面临很多问题。比如工程中好几个地方都有读取配置文件的逻辑,代码都是相同的,那么我们可以把不同地方读取配置文件的逻辑放到一个工具类中,这样今后再有读取配置文件的需要的时候可以直接调用工具类中方法即可,不需要再重复写相同的代码,这也是我们日常工作中最常见的使用方式。原创 2022-11-19 00:30:00 · 25332 阅读 · 0 评论 -
万字长文详解技术管理者如何画业务大图?
今天的话题,以几个遇到的人和事作为开始吧。第一个故事,是关于去年社招遇到的一个非常可惜的候选人。工作 3 年,技术能力扎实,在一家小公司负责一个业务的核心系统,因为感觉日常工作没办法让自己成长,所以来阿里试试。整个面试过程只能用非常可惜来形容,因为他的技术方面都算过关,可是问到他自己过去做的业务时,给出的回复却差强人意,没办法从宏观视角上给出公司业务的整体形态,也没讲清楚自己负责的业务和其他业务模块之间是如何协作的——涉及到自己模块的问题时,有的是时间太久记不清了,而实际情况是简历上面相关内容仅仅是一年前的转载 2022-11-16 05:30:00 · 23644 阅读 · 0 评论 -
如何设计一个支撑数亿用户的系统
要设计出一套能支撑几十亿人的系统是很困难的。对于软件架构师来说,这一直是一项很大的挑战,但是,从现在开始,看完我的文章,你就会觉得容易很多了。在这篇文章里,我不打算谈论诸如容错、可靠性、高可用性等高性能计算的通用术语。原创 2022-11-11 04:30:00 · 20624 阅读 · 0 评论 -
阿里十年服务端高并发分布式架构演进之路
之前有读者留言让写一篇大型网站的架构演进过程,发现下面这篇文章讲解得很详细,特此分享给大家,相信看完会有所收获。文章在介绍一些基本概念后,按照以下过程阐述了整个架构的演进过程:单机架构第一次演进:Tomcat与数据库分开部署第二次演进:引入本地缓存和分布式缓存第三次演进:引入反向代理实现负载均衡第四次演进:数据库读写分离第五次演进:数据库按业务分库第六次演进:把大表拆分为小表第七次演进:使用LVS或F5来使多个Nginx负载均衡第八次演进:通过DNS轮询实现机房间的负载均衡第九次演.转载 2022-04-12 21:59:35 · 2150 阅读 · 0 评论 -
正文 风控系统是什么?-- 搭建风控系统的方法推荐
在金融服务二八规律的大背景下,很多低端、无稳定收入的群体无法享受银行提供的金融服务,这类群体据估算约有四亿人之多,这个数十万亿市场级别的需求缺口如何来被满足呢?小额贷款作为新型的金融服务产品应运而生,被众多公司争相追捧。据统计高峰时期全国约有五千家现金贷公司(中国传销最多的时候才有一万家)。原创 2022-11-05 03:45:00 · 16481 阅读 · 0 评论 -
从0到1订单系统设计思路架构设计与实践
本文主要讲述了在传统电商企业中,订单系统应承载的角色,就订单系统所包含的主要功能模块梳理了设计思路,并对订单系统未来的发展做了一些思考。对于企业订单系统的搭建,并不是要做的大而全、也不是要小而精。而需要结合市场、公司、业务的实际情况来最终制定系统设计方案和产品迭代计划。最终,和公司整体发展相互协调,相辅相成。原创 2022-11-04 03:15:00 · 29126 阅读 · 0 评论 -
千万级高并发秒杀系统设计套路。超详细解读~~
曾经有一家巨头公司和我们公司进行战略合作,经过双方的不懈努力及精诚合作,双方公司决定共同举办一场秒杀活动,我们公司提供优质商品和强有力的吸引价格以及使用场景,对方公司提供巨大的用户流量,再加上我们公司自己的用户流量,粗略估算下来有5000万的用户流量。其实,当时我们的架构是完全支撑不了千万级流量的瞬时冲击的,但是双方老板已经达成协议就要快速干起来,而且给了一个基本无法完成的时间期限。原创 2022-11-01 03:00:00 · 23603 阅读 · 0 评论 -
B站直播从0到1000万的技术演进
哔哩哔哩直播成立于 2014 年,经过 8 年时间的发展已经从最初的业务试水成长为公司重要的业务板块之一。技术架构也从一个单体服务演进为由数百个微服务组成的复杂系统。本文将回顾 8 年来哔哩哔哩直播架构演进中一步步的变化,带你了解它是如何从 0 开始逐渐成为能够承载千万在线的微服务系统。原创 2022-09-28 13:55:09 · 27709 阅读 · 0 评论 -
架构师总结了22条API设计的最佳实践
资源用户集合用户列表URL/user。原创 2022-08-13 05:30:00 · 16774 阅读 · 0 评论 -
从业务开发中学习和理解架构设计
架构的定义首先架构是一个汉语词汇。它的定义是:人们对一个结构内的元素及元素间关系的一种主观映射的产物。从这个定义可以看出,传统的架构在描述一个系统中有什么元素,以及元素之间关系。在建筑领域,架构也用于描述建筑物的结构。作为一个计算机领域的词汇,架构的定义是:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。实际上也在定义有什么以及关系的问题。从工程化解读架构设计的作用无论是在建筑领域还是计算机领域,我们通常会用工程描述这类工作的项目。......原创 2022-08-06 04:00:00 · 25051 阅读 · 0 评论 -
“12306” 的架构到底有多牛逼
上图中描述了用户请求到服务器经历了三层的负载均衡,下边分别简单介绍一下这三种负载均衡。①OSPF(开放式最短链路优先)是一个内部网关协议(InteriorGatewayProtocol,简称IGP)OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,OSPF会自动计算路由接口上的Cost值,但也可以通过手工指定该接口的Cost值,手工指定的优先于自动计算的值。OSPF计算的Cost,同样是和接口带宽成反比,带宽越高,Cost值越小。③Nginx轮询。...转载 2022-07-30 10:49:15 · 17695 阅读 · 0 评论 -
网易严选库存中心设计实践
电商业发展至今,已经迈过野蛮生长进入精耕细作的阶段;而电商企业的信息化之路,也日臻成熟和完善:从最开始粗放管理的进销存、到五脏俱全的ERP、再到后续逐渐细分的库存管理系统、订单管理系统等等,一些电商业务的基础支撑产品已经形成了比较成熟的套路和方法,库存管理系统也不例外。随着几年前新零售概念的兴起,越来越多的电商公司开始拓展线下业务、也有越来越多的传统零售企业开始发力电商;而线上业务面临着流量分散、顾客时效要求越来越高等挑战。这就导致诸多企业纷纷采取:线上线下一体、多渠道售卖、多仓布货的运营策略。相应的,好的转载 2022-07-25 14:48:36 · 18355 阅读 · 0 评论 -
真的有必要定义VO,BO,PO,DO,DTO吗?
这篇文章很短,最后稍微总结一下,不管用哪种方式,只要团队内定义好一种适应的协同规范就行。没有一个绝对好与绝对坏的方式方法。团队规范的尽头能提升项目的可扩展性、可维护性与可阅读性,从而降低bug率。数据对象xxxPO,xxx即为数据表名。(也可DO)数据传输对象xxxDTO,xxx为业务领域相关的名称。展示对象xxxVO,xxx一般为网页名称。业务对象xxxBO,xxx是业务名称。httpshttpshttps。.........原创 2022-07-22 08:31:26 · 19356 阅读 · 0 评论 -
24 条 SaaS 思考
在日常工作中,我们常常也会听到客户参与、客户成功、客户忠诚等名词,那它们和客户留存的关系和区别又是什么呢?在SaaS中我们大致可以这么推演,客户参与导向客户成功,客户成功提升客户忠诚,客户忠诚影响客户留存,即。但是,随着客户的不断涌进,会逼迫着我们逐渐调整,从而具有共性。因此,对于客户留存而言,既可以是积极因素导向的结果,也可能是被动选择的现实。没有完美的产品,也不用畏手畏脚、小心翼翼,持续成长才是我们应该追求的。投资建立一个可持续的策略来留住客户,让我们的努力在未来持续得到回报。......原创 2022-07-22 08:32:06 · 19303 阅读 · 0 评论 -
怎么才能写好技术文档——这是我的全部经验
参加工作时间久一点的工程师应该有这样一个体会:自己平时代码写得再多再好,可一旦要用文档去描述或者表达某一个事情或者问题时,都感觉非常困难,无从下手,不知道自己该写什么不该写什么;或者费了九牛二虎之力写出来的东西没法满足要求,需要再三去修改调整。这其中的主要原因我归纳有两点:以上两点其实都可以通过平时多练、多写、多梳理的方式去弥补,比如周期性的博客总结和记录。但是,如果你能刻意系统性地去补充一些关于“技术型写作”的理论知识,一定能够事半功倍。这就像我们刚学编程时,一顿学、一顿模仿,但是总感觉缺了点什么,自己再原创 2022-07-20 07:00:00 · 22590 阅读 · 1 评论 -
稳定性与高可用保障的工作思路
如何做好稳定性和高可用保障是一个很庞大的命题,其中的任一小部分内容在内网都可以搜到大量的文章。写这篇文章的目的是总结一下自己对稳定性和高可用保障工作的理解,给大家分享一套系统的框架思路。希望大家在读后能够更全面的了解安全生产,不陷于细节。...原创 2022-07-18 16:16:08 · 19123 阅读 · 0 评论 -
架构师必须清楚的支付系统--核算对账核心系统详解
在支付系统中,资金对账在对账中心进行,将系统保存的账务流水与银行返回的清算流水和清算文件进行对账,核对系统账务数据与银行清算数据的一致性,保证支付机构各备付金银行账户每日的预计发生额与实际发生额一致。 支付公司提供的所有金融服务是建立在银行资金体系之上的,支付公司账务系统内账户的资金都与其在银行的存款资金一一对应,为了保证真实的资金账户和虚拟账户的资金转换正确,支付公司必须及时与银行进行各类业务的资金核对,所有资金核对都依赖于银行的系统。 从银行流入的资金是由银行侧控制资金结转清算与对账时间转载 2022-07-11 14:44:32 · 22035 阅读 · 0 评论 -
史上最污技术解读,60 个 IT 术语我居然秒懂了......
假设你是个妹子,你有一位男朋友,于此同时你和另外一位男生暧昧不清,比朋友好,又不是恋人。你随时可以甩了现任男友,另外一位马上就能补上。这是冷备份。假设你是个妹子,同时和两位男性在交往,两位都是你男朋友。并且他们还互不干涉,独立运行。这就是双机热备份。假设你是个妹子,不安于男朋友给你的安全感。在遥远的男友未知的地方,和一位男生保持着联系,你告诉他你没有男朋友,你现在处于纠结期,一旦你和你男朋友分开了,你马上可以把自己感情转移到异地男人那里去。这是异地容灾备份。假设你是个妹子,有一位男朋友,你又付了钱给一家婚姻原创 2022-06-22 15:09:39 · 10466 阅读 · 0 评论 -
你是一名技术管理者还是项目管理者?
有一个朋友前几年通过猎头进入一家公司做研发负责人,他之前在一个软件外包企业做开发团队负责人。刚进公司时,公司对其非常重视,也是统领三军,但是过了一年,虽然职位没变,但是只负责一个团队的研发了,而且奇怪的是他只做和项目管理、外部沟通相关的事情,团队内还有一个技术负责人,所有技术人员的上级是这位技术负责人,这位技术负责人的上级是他。此时你会想到什么?如果那位技术负责人不是项目管理或者沟通能力太差的话,这位朋友基本上在这家公司没有位置了。最终,这位朋友被动辞职了,着实可惜。其实朋友是一个非常称职的项目管理人才,经转载 2022-06-21 13:39:20 · 8036 阅读 · 0 评论 -
Project Management-软件开发之项目管理
对于一个完整的软件开发团队,应该包含产品经理,开发,测试这三个团队而对于一个完整的软件项目而言,除了需要产品经理,开发,测试外,还需要项目经理软件项目体系中,常用到的一些角色名称与对应的中英文缩写如下,下文相关角色将以缩写代替。对项目进度负责,协调PM,RD,QA 保障项目顺利进展确定产品需求,确定什么是对的。对产品质量负责,及时反馈测试过程中发现的各种bug以及分险对产品进行开发,根据产品需求文档进行产品设计,开发,自测试等以上只是罗列整理了一个正常的,理想化的软件项目所需的角色分配以及职责划分,然而现实原创 2022-06-21 13:35:51 · 7146 阅读 · 0 评论 -
商品系统架构设计与实践
作者:vivo官网商城开发团队-Ju Changjiang随着用户量级的快速增长,vivo官方商城v1.0的单体架构逐渐暴露出弊端:模块愈发臃肿、开发效率低下、性能出现瓶颈、系统维护困难。从2017年开始启动的v2.0架构升级,基于业务模块进行垂直的系统物理拆分,拆分出来业务线各司其职,提供服务化的能力,共同支撑主站业务。商品模块是整个链路的核心,模块的增多严重影响系统的性能,服务化改造势在必行。本文将介绍vivo商城商品系统建设的过程中遇到的问题和解决方案,分享架构设计经验。将商品模块从商城拆分出来,独立转载 2022-06-20 17:42:47 · 5194 阅读 · 0 评论 -
细谈八种架构设计模式及其优缺点概述
我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果。哈哈,我理解,架构就是骨架,如下图所示:人类的身体的支撑是主要由骨架来承担的,然后是其上的肌肉、神经、皮肤。架构对于软件的重要性不亚于骨架对人类身体的重要性。这个问题我问过的面试者不下于数十次,回答五花八门,在我看来,模式就是经验,设计模式就是设计经验,有了这些经验,我们就能在特定情况下使用特定的设计、组合设计,这样可以大大节省我们的设计时间,提高工作效率。 作为一个工作10年以上的老码农,经历的系统架构设计也算不少,接下来,我会把工转载 2022-06-20 16:45:41 · 5294 阅读 · 0 评论 -
CDN 为什么这么设计?
过去几十年,计算机网络把几乎全世界的计算机都连接了起来,我们只要把静态资源和动态的代码部署到服务器上,然后启动服务监听某个端口,这样世界各地的计算机就都能访问该网站。但是这样有个问题,资源最终还是通过物理层网络线路和设备传输的,每经过一段线路、一个网络设备都有一些耗时,所以客户端和服务器相距越远,网站打开速度就越慢。这就像你从海南买了一件东西,如果你人在广州的话,那可能很快就收到了,因为传输距离近,但如果你在北京的话,那可能就要多等几天了,因为中间经过的线路、节点都比较多。但这样肯定不行的,用户体验会很差。转载 2022-06-15 09:12:59 · 4349 阅读 · 0 评论