随笔分类 -  软件工程

摘要:故障无处不在,而且无法避免。(分布式计算谬误) 在分布式系统建设的过程中,我们思考的重点不是避免故障,而是拥抱故障,通过构建高可用架构体系来获得优雅应对故障的能力。QQ音乐高可用架构体系包含三个子系统:架构、工具链和可观测性。 阅读全文
posted @ 2023-03-14 14:00 古道轻风 阅读(360) 评论(0) 推荐(0) 编辑
摘要:布隆过滤器是一种具有空间优势的概率数据结构,用于回答一个元素是否存在于一个集合中这样的问题,但是可能会出现误判——即一个元素不在集合但被认为在集合中。 阅读全文
posted @ 2023-03-11 16:58 古道轻风 阅读(607) 评论(0) 推荐(0) 编辑
摘要:客观的理解DDD DDD,即领域驱动设计,不仅带给我们一套新的概念,还提供了一套全新的设计思路,应用在构建大型复杂软件系统之上。 相对于DDD,我们使用的传统的设计思路,常被称为数据驱动设计,常被应用于中小型的项目。互联网的项目,往往是快速迭代,起初一个小项目,慢慢会演化为一个中大型的项目,在演化过 阅读全文
posted @ 2023-03-10 08:20 古道轻风 阅读(169) 评论(0) 推荐(0) 编辑
摘要:前言:记得很久之前,去面试过字节跳动。被三面的面试官问了一道场景设计题目:如何设计一个高并发系统。当时我回答得比较粗糙,最近回想起来,所以整理了设计高并发系统的15个锦囊,相信大家看完会有帮助的。 阅读全文
posted @ 2023-03-06 08:29 古道轻风 阅读(296) 评论(0) 推荐(0) 编辑
摘要:目录 一、降低资源使用 1.1 降低磁盘使用率 1.2 异步日志 1.3 降低cpu使用率 二、日志链路追踪 2.1 ThreadLocal技术选型 2.2 TTL线程池改造 2.3 Log4j2 MDC + TTL线程池实现 2.4 链路日志使用 三、测试指标及建议 3.1 建议 3.2 测试指标 阅读全文
posted @ 2023-03-05 21:51 古道轻风 阅读(839) 评论(0) 推荐(1) 编辑
摘要:在企业的商业活动中,订单是指交易双方的产品或服务交易意向。交易下单负责创建这个交易双方的产品或服务交易意向,有了这个意向后,买方可以付款,卖方可以发货。 在电商场景下,买卖双方没有面对面交易,许多情况下需要通过超时处理自动关闭订单 阅读全文
posted @ 2023-03-05 08:50 古道轻风 阅读(605) 评论(0) 推荐(0) 编辑
摘要:如何画好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个问题,可能一下子还很难有一个具象的定义,如果我们把这个问题进行拆分,理解起来就会容易一点。 阅读全文
posted @ 2023-03-01 08:21 古道轻风 阅读(650) 评论(0) 推荐(0) 编辑
摘要:大数据平台建设有其天生的复杂性,每一年都在推陈出新,从WareHouse、DataLake到LakeHouse,各种各样的Batch、Stream、MPP、Machine Learning、Neural Network计算引擎,对应解决的场景和组合的方式非常个性化,建设过程会遇到包括技术层面、组织层面、方法论层面种种问题,包括存储计算组件选型、离线实时湖仓架构方案设计以及场景化的性能分析,随着时间推进也会出现持续的组织管理、数据和平台运营、扩容、稳定性优化等问题,出现多个平台共存,存储和计算集群技术栈多样化以及数据分散等常态化问题,面临保留原架构还是推倒重来迁移到新的平台的困扰,有没有一套Architecture FrameWork能够屏蔽底层技术和开发细节,Data Fabric、Data Mesh似乎是为了解决这个问题而生,从技术和方法论的角度探讨如何影响大数据平台的建设、数据工程和架构持续演进。 阅读全文
posted @ 2023-02-27 08:26 古道轻风 阅读(318) 评论(0) 推荐(0) 编辑
摘要:跨平台开发框架是客户端领域的经典课题,几乎从操作系统诞生开始就是我们软件从业者们的思考命题。为了促进 Flutter 在 4 个端的成熟,企业微信研发团队也和 Google 团队针对电脑端 Flutter 稳定版的落地做了多轮技术沟通。终于在近期的版本实现同一个功能跨平台 4 端同步上线。企业微信每一个迭代都需要确保 iOS、Android、Windows、Mac 四个客户端平台的版本功能完全一致,版本发布时间一致。这是非常大的挑战。任何研发投入都是 X4 的,且由于系统差异,相同功能的研发周期和技术方案也会有明显差异。我们前期实现了逻辑底层架构 4 端统一,但是 UI 层怎么办?迫切需要更优的跨平台方案。但是要在历史的 Native 代码行数已经过千万级的超大型软件系统——企业微信上引入新的跨平台框架何其困难。 阅读全文
posted @ 2023-02-26 16:03 古道轻风 阅读(775) 评论(0) 推荐(0) 编辑
摘要:在广告系统实践中,精排服务基于 gRPC 协议调用 TF-Serving 在线推理服务。相信很多业务已经使用过 gRPC 相关语言的框架进行服务调用,尤其是基于谷歌云的出海业务的服务调用更绕不开 gRPC,所以很有必要理解 gRPC 的原理。本文通过简要介绍抓包分析一次 gRPC 的调用过程,逐步认识 gRPC。 阅读全文
posted @ 2023-02-26 09:14 古道轻风 阅读(222) 评论(0) 推荐(0) 编辑
摘要:经过几年的平台建设,vivo监控平台产品矩阵日趋完善,在vivo终端庞大的用户群体下,承载业务运行的服务数量众多,监控服务体系是业务可用性保障的重要一环,监控产品全场景覆盖生产环境各个环节。从事前发现,事中告警、定位、恢复,事后复盘总结,监控服务平台都提供了丰富的工具包。从以前的水平拆分,按场景建设,到后来的垂直划分,整合统一,降低平台割裂感。同时从可观测性、AIOps、云原生等方向,监控平台也进行了建设实践。未来vivo监控平台将会向着全场景、一站式、全链路、智能化方向不断探索前行。 监控服务平台是自研的、覆盖全场景的可用性保障系统。经过多年深耕,vivo监控团队已经成体系构筑起一整套稳定性保障系统,随着云原生可观测技术变革不断深化,监控团队如何掌舵前行?下面就平台的建设历程、思考、探索,做一下简单介绍。 阅读全文
posted @ 2023-02-25 19:57 古道轻风 阅读(140) 评论(0) 推荐(0) 编辑
摘要:通俗易懂的一篇文章,主要介绍了 Prometheus 什么时候告警,什么时候不会告警。同时介绍了 Prometheus 告警原理。 警报是监控系统中必不可少的一块, 当然了, 也是最难搞的一块. 我们乍一想, 警报似乎很简单一件事: 假如发生了异常情况, 发送或邮件/消息通知给某人或某频道。 一把梭搞起来之后,就不免有一些小麻烦: 这个啊…一天中总有那么几次波动,也难修难查了,算了算了不看了; 警报太多了,实在看不过来,屏蔽/归档/放生吧… 有毒吧,这个阈值也太低了; 卧槽,这些警报啥意思啊,发给我干嘛啊? 卧槽卧槽卧槽,怎么一下子几十百来条警报, 哦…原来网络出问题了全崩了。 玩笑归玩笑,但至少我们能看出,警报不是一个简单的计算+通知系统。只是,”做好警报”这件事本身是个综合问题,代码能解决的也只是其中的一小部分,更多的事情要在组织、人事和管理上去做。 阅读全文
posted @ 2023-02-24 22:03 古道轻风 阅读(1665) 评论(0) 推荐(2) 编辑
摘要:《阿甘正传》中,阿甘开始了不停地跑步,一段时间后,后面就有了很多追随者一起跑,他们为什么跑哪? 阿甘:我也不知道,只是想跑而已。 追随者:感觉这样做是有意义的,而且阿甘也还在前面领跑。 类似地,一开始我也不知道DDD是什么,但当发现大家都在提DDD、都在学DDD的时候,我也像跟跑者一样不由自主地加入了前行:既然有大牛提出了DDD,既然那么多人趋之若鹜,那么肯定有可取的地方。 然而,有一天,阿甘停止了跑步,他不想跑了,追随者遇到了一个问题:我们还要跑么?当我们在学习DDD的过程中,感觉学而不得的时候,可能也会问:我们还要学么?这的确引人深思。 本文基于工作经验,尝试谈谈对DDD的一些理解,希望能够更好地探寻学习DDD的意义。 阅读全文
posted @ 2023-02-24 08:31 古道轻风 阅读(116) 评论(0) 推荐(1) 编辑
摘要:架构的核心是管理复杂度,架构师的核心能力是抽象能力,什么是抽象能力?抽象能力就是一种化繁为简的能力。何为化繁为简?就是把一种复杂的事情变得简单的能力,比如通过打比喻让别人很容易听明白你说的意思就是一种抽象能力。如何锻炼抽象能力?我觉得有三种方法,第一种是用归纳法找共性,从多个问题中找到共同的问题提炼通用解决方案,去其糟粕取其精华。第二种通过演绎法找关系,从多个问题中找关系,把多个问题串成一个问题,系统化解决问题!第三种是通过归纳法找特性。化繁为简需要不断的思考,不断的看清一件事的本质,这个事的解决方案越容易。 阅读全文
posted @ 2023-02-23 13:51 古道轻风 阅读(159) 评论(0) 推荐(0) 编辑
摘要:数据驱动理念已被各行各业所熟知,核心环节包括数据采集、埋点规划、数据建模、数据分析和指标体系构建。在用户行为数据领域,对常见的多维数据模型进行信息提炼和模型整合,可以形成一套常见的数据分析方法来发现用户行为的内在联系,能更好洞察用户的行为习惯和行为规律,帮助企业挖掘用户数据的商业价值。 行业内最早可追溯到Google Analytics埋点分析工具,国内较早开始这方面研究的是百度大数据分析平台;随着15年后国内大数据兴起,神策的用户行为分析平台、GrowthingIO的增长平台等独立数据分析平台公司相继成立;18年后一些发展较快的大厂经过几年数据积累也有了自己的分析平台,例如美团点评的Ocean行为分析平台、字节的火山引擎增长分析平台等等。 阅读全文
posted @ 2023-02-21 16:24 古道轻风 阅读(1192) 评论(0) 推荐(1) 编辑
摘要:本文介绍了TiDB数据库特性及在之家的发展历程,典型业务应用场景,TiDB具有兼容MySQL协议,易水平扩展、高可用、强一致,HTAP等特性,在之家多个重要业务得到应用。另外文章还介绍了之家TIDB自动化运维建设情况及应用实践遇到的问题及解决。 未来之家TiDB计划继续进行TiDB运维体系建设,并重点对TiDB6.0新特性测试应用,另外对TIDB容器化进行尝试。 阅读全文
posted @ 2023-02-20 08:28 古道轻风 阅读(114) 评论(0) 推荐(0) 编辑
摘要:谈到好代码,我的第一想法就是优雅,那我们如何该写出好的代码,让阅读的人感受到优雅呢?首先简单探讨一下优雅代码的定义。 关于好代码的定义,各路大神都给出了自己的定义和见解 整洁的代码如同优美的散文。—— Grady Booch 任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。—— Martin Fowler 首先要达成一致,我们写的代码,除了用于机器执行产生我们预期的效果之外,更多的时候是给人读的,可能是后续的维护人员,更多时候是一段时间后的作者本人,因此优雅面向不同的用户有两层含义的解读。 1.对人而言,代码的整洁,清晰的逻辑; 2.对机器而言,准确性、执行性能、异常处理机制等; 这次,我们就来聊一聊,什么代码是优雅的代码,怎样写出优雅的代码。 阅读全文
posted @ 2023-02-16 09:49 古道轻风 阅读(469) 评论(0) 推荐(0) 编辑
摘要:你想要的 ClickHouse 优化,都在这里。 ClickHouse 是 OLAP(Online analytical processing)数据库,以速度见长[1]。ClickHouse 为什么能这么快?有两点原因[2]: 架构优越 列式存储 索引 数据压缩 向量化执行 资源利用 关注底层细节 但是,数据库设计再优越也拯救不了错误的使用方式,本文以 MergeTree 引擎家族为例讲解如何对查询优化。 阅读全文
posted @ 2023-02-14 08:25 古道轻风 阅读(3983) 评论(0) 推荐(2) 编辑
摘要:1、标准化基础知识1.1、标准的层次国际标准国家标准行业标准地方标准企业标准 1.2、标准的类型强制性标准推荐性标准 1.3、标准的表示表1国家标准代号 序号 代号 含义 1 GB 中华人民共和国强制性国家标准 2 GB/T 中华人民共和国推荐性国家标准 3 GB/Z 中华人民共和国国家标准化指导性 阅读全文
posted @ 2023-02-13 08:22 古道轻风 阅读(271) 评论(0) 推荐(0) 编辑
摘要:CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成包括简单的强类型集合和完整应用程序在内的任何东西。当您生成应用程序时,您经常需要重复完成某些特定的任务,例如编写数据访问代码或者生成自定义集合。CodeSmith 在这些时候特别有用,因为您可以编写模板自动完成这些任务,从而不仅提高您的工作效率,而且能够自动完成那些最为乏味的任务。CodeSmith 附带了许多模板,包括对应于所有 .NET 集合类型的模板以及用于生成存储过程的模板,但该工具的真正威力在于能够创建自定义模板。 阅读全文
posted @ 2023-02-08 20:34 古道轻风 阅读(91) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示