架构 | 设计模式
文章平均质量分 90
架构师之路
戴国进
往后余生,专注人工智能领域!!!
展开
-
千亿级日志系统架构演进
如上图所示,在接入日志 API 后,所有日志均经过 MQ 进行异步处理,如此既能够将日志写入与业务代码的逻辑解耦,又能确保写入速度的平稳,避免高峰流量对整个 ES + HBase 集群的写入造成压力。最终,我们选择 ES + HBase 的方案。对于线路商品日志,对于直接可读性要求不高,查询的场景我们是从ES中先查出RowKey,再用RowKey去hbase查询日志原文,整个过程RowKey是人工不可见的,结合我们实际的场景,线路商品数据日志的RowKey由五部分构成{0}-{1}-{2}-{3}-{4}原创 2024-09-14 11:32:39 · 869 阅读 · 0 评论 -
nacos配置中心docker部署、配置及 goLang 集成使用
平时我们写一个demo的时候,或者说一个单体的应用,都会有一个配置文件,不管是 json文件或者yaml文件,里面包含了redis,mysql,es等信息,如果我们修改了配置文件,往往我们需要重启,为了避免重启,后来引入了viper,可以实现热更新。如果是一个分布式系统,肯定是有很多服务模块做支撑的,而且服务是可伸缩的,可能有几十台服务,也可能有几百台服务。如果每个服务模块下面都有自己的配置文件,那么如果mysql更新了端口号,运维人员就得一个一个文件的改。所以综上,对于服务的配置,大概有这么三个痛点。原创 2023-11-06 15:20:38 · 1788 阅读 · 0 评论 -
支付系统架构设计
同时通过标准化的支付指令定义,统一前端支付产品的支付请求接口,提供适应各类产品使用的基础支付服务。选好东西之后,六六这边就要去下单,下单完成之后,进入到了京东的收银台了,京东的收银台,包含了京东支付,微信支付,云闪付等等,支付宝目前还没看到,这些属于第三方支付,这些支付方式在中国都是需要支付牌照的。我们看上面的架构图,对于一个服务平台的支付架构,一般有图中的相关系统组成:直面用户的收银台,记录业务的订单系统,推动交易的交易系统,对支付指令进行处理的支付系统,支付指令传送通道的支付通道子系统。原创 2022-10-24 21:36:25 · 1657 阅读 · 0 评论 -
服务端高并发分布式架构演进之路
1. 概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径2. 基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:分布式 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署转载 2021-01-25 17:48:45 · 3464 阅读 · 0 评论 -
石墨文档Websocket百万长连接技术实践
1 引言在石墨文档的业务中,如文档分享、评论、幻灯片演示和文档表格跟随等场景,涉及多客户端数据同步和服务端批量数据推送的需求,采用短轮询或长轮询的方式无法很好的满足服务端消息推送、消息通知的业务场景,因此选择业内的主流方案:基于 HTML5 标准定义的 WebSocket 规范。随着石墨文档的发展,现在日连接峰值达到了百万量级,日益增长的用户连接数和停止更新的架构设计导致了内存和 CPU 使用量急剧增长,因此我们考虑对网关进行重构,以适应发展需求。2 网关 1.0网关 1.0 是使用 Nod转载 2021-12-07 20:52:22 · 241 阅读 · 0 评论 -
5年迭代5次,抖音推荐系统演进历程
2021 年,字节跳动旗下产品总 MAU 已超过 19 亿。在以抖音、今日头条、西瓜视频等为代表的产品业务背景下,强大的推荐系统显得尤为重要。Flink 提供了非常强大的 SQL 模块和有状态计算模块。目前在字节推荐场景,实时简单计数特征、窗口计数特征、序列特征已经完全迁移到 Flink SQL 方案上。结合 Flink SQL 和 Flink 有状态计算能力,我们正在构建下一代通用的基础特征计算统一架构,期望可以高效支持常用有状态、无状态基础特征的生产。业务背景对于今日头条、抖音、西瓜..转载 2021-10-27 19:39:14 · 738 阅读 · 0 评论 -
PHP 适配器模式
适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。【适配器模式中主要角色】目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的源(Adaptee)角色:需要进行适配的接口适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类。其实也就是你家墙上有一个两口的插座(Adaptee),但你买..原创 2021-01-07 20:14:16 · 3905 阅读 · 0 评论 -
bilibili 高可用架构实践
一、负载均衡负载均衡具体分成两个方向,一个是前端负载均衡,另一个是数据中心内部的负载均衡。前端负载均衡方面,一般而言用户流量访问层面主要依据DNS,希望做到最小化用户请求延迟。将用户流量最优地分布在多个网络链路上、多个数据中心、多台服务器上,通过动态CDN的方案达到最小延迟。以上图为例,用户流量会先流入BFE的前端接入层,第一层的BFE实际上起到一个路由的作用,尽可能选择跟接入节点比较近的一个机房,用来加速用户请求。然后通过API网关转发到下游的服务层,可能是内部的一些微服务或者业务的聚转载 2021-10-27 19:30:24 · 885 阅读 · 0 评论 -
goLang 实现观察者模式
今天给大家用大白话瞎唠了一下观察者模式的原理和实际怎么应用,感觉文章的精髓主要在前半部分,可能有的不你还不能理解,后面我会再通过后续文章逐一解释,其实这些都是事件驱动和事件源这些模式里的基础内容。至于这次给出的代码,其实没啥实战意义,就是大家先了解一下。...转载 2022-08-03 09:33:24 · 588 阅读 · 0 评论 -
20张图 详解 负载均衡
一、单选题(共29题,每题5分)1.PHP执行的时候有如下执行过程:Scanning(Lexing) - Compilation - Execution - Parsing,其含义分别为:A、将PHP代码转换为语言片段(Tokens)、将Tokens转换成简单而有意义的表达式、顺次执行Opcodes、将表达式编译成OpocdesB、将PHP代码转换为语言片段(Tokens)、将表达式编译成Opocdes、顺次执行Opcodes、将Tokens转换成简单而有意义的表达式C、将PHP代码转换为语原创 2021-08-27 17:04:54 · 3425 阅读 · 1 评论 -
实时协同编辑的实现
参考:https://cloud.tencent.com/developer/article/1643166 关于实时协同编辑的架构思考https://segmentfault.com/a/1190000010159548 Cumulo Editor 是如何实现实时协同编程的https://github.com/Aaaaash/blog/issues/10 ...转载 2021-05-20 21:54:18 · 1584 阅读 · 0 评论 -
CC攻击原理及防范方法
一、 CC攻击的原理:CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。二、CC攻击的种类: CC攻击的种类有三种,直接攻击,代理攻击,僵原创 2020-10-24 14:54:31 · 6132 阅读 · 0 评论 -
详解 异地多活
在软件开发领域,「异地多活」是分布式系统架构设计的一座高峰,很多人经常听过它,但很少人理解其中的原理。异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的?这些疑问,想必是每个程序看到异地多活这个名词时,都想要搞明白的问题。有幸,我曾经深度参与过一个中等互联网公司,建设异地多活系统的设计与实施过程。所以今天,我就来和你聊一聊异地多活背后的的实现原理。认真读完这篇文章,我相信你会对异地多活架构,有更加深刻的理解。这篇文章干货很多,希望你可以耐心读完。01原创 2021-10-24 10:19:10 · 716 阅读 · 0 评论 -
美团端侧CDN容灾解决方案
1. 前言作为业务研发,你是否遇到过因为 CDN 问题导致的业务图片加载失败,页面打开缓慢,页面布局错乱或者页面白屏?你是否又遇到过某些区域 CDN 域名异常导致业务停摆,客诉不断,此时的你一脸茫然,不知所措?作为 CDN 运维,你是否常常被业务方反馈的各种 CDN 问题搞得焦头烂额,一边顶着各种催促和压力寻求解决方案,一边抱怨着服务商的不靠谱?今天,我们主要介绍一下美团外卖技术团队端侧 CDN 的容灾方案,经过实践,我们发现该产品能有效减少运维及业务开发同学的焦虑,希望我们的这些经验也能够帮助到更转载 2022-02-09 11:51:23 · 319 阅读 · 0 评论 -
veed.io 在线视频编辑器技术栈演进
VEED 团队创始人在使用复杂、笨重的应用编辑了几千小时视频后,认为现在市场上大多数视频编辑器对于一些比较简单的视频处理工作太复杂和笨重。在处理用于分享到社交网络中的视频时,大型视频编辑器对普通人来说太复杂。普通人更需要一个简单、功能强大的在线视频编辑器。于是,他们两人就在 2019 年开始开发veed.io[1],一个在线视频编辑工具。veed.io 最初的功能仅仅是为分享到社交网络上的视频添加字幕,但现在已经可以满足了常见的视频剪辑需求,每年订阅收入达到了100万美元。在体验过 v.转载 2021-12-07 20:19:57 · 8564 阅读 · 0 评论 -
在线非线编系统——网页端实时编辑渲染方案
本次内容分为五个部分:一是美摄云非编方案的技术背景,也就是目前web端视音频编辑的现状以及我们采用新方案的原因;二是美摄云非编的技术整体方案,包括前端、后端及整体技术框架;三是美摄云非编方案的缓存机制,也是美摄云非编实时性的一个重要的保障;四是美摄云非编的整体工作流程;五是一些技术展望和本次问题的讨论实践。1. 背景介绍1.1 公司背景介绍......转载 2021-10-25 15:05:37 · 909 阅读 · 2 评论 -
PHP 策略模式
分享一篇关于策略模式讲的很好的文章,大家可以参考一下:https://www.cnblogs.com/qixuejia/p/4370270.html (非PHP语言)https://blog.csdn.net/Firehotest/article/details/52722734 策略模式和适配器模式模式概述 策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考...原创 2021-05-14 20:03:04 · 2271 阅读 · 1 评论 -
单例模式 工厂模式 观察者模式
单例模式单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。单例模式有以下3个特点:1.只能有一个实例。2.必须自行创建这个实例。3.必须给其他对象提供这一实例。那么为什么要使用PHP单例模式?PHP一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数原创 2020-07-05 16:51:22 · 9122 阅读 · 0 评论