【分布式系统案例课】计数服务之需求收集和总架构设计

news2024/11/26 13:49:30

面试题

对B站视频观看量进行实时的计数

技术问题是一个比较普遍的问题,比如对头条作者的粉丝或者是对获赞进行计数。或者是对企业的业务指标进行计数,例如注册登录下单数这些等。

在这里插入图片描述

需求澄清

在这里插入图片描述

问题一:用户点击观察视频之后,这个数量要隔多久要求被更新,是一分钟?还是多长时间?

这个问题决定该系统是一个线下的批处理系统,还是一个实时或者近实时的处理系统。

问题二:预期的99百分位请求的延迟是多少?

这个问题设计是否需要引入缓存

功能需求 —— API

在这里插入图片描述
一个系统包括功能需求和非功能需求。非功能需求包括:高可用、可扩展、维护性、成本等。非功能需求对系统的架构和设计是非常重要的。

非功能需求如下

在这里插入图片描述
用户点击观看一个视频,一分钟之后刷新视频,就可以看到这个视频的观看数被更新了。
所以这是一个近实时的最终一致的系统。

从简化架构开始

有两条路径:一条是写入路径,一条是读取路径。
在这里插入图片描述
数据库、技术服务、查询服务三个组件。
分布式系统的核心是数据,所以我们可以从数据存储开始。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gateway网关组件(在Spring Cloud整合Gateway(idea19版本))

Spring Cloud Gateway官网:Spring Cloud Gateway 局域网中就有网关这个概念,局域网接收数据或发送数据都要通过网关,比如使用VMware虚拟机软件搭建虚拟机集群的时候,往往我们需要选择IP段中的⼀个IP作为网关地址,网关可以对请求进行控制,提升…

Shell第三章——循环语句与函数

循环:重复执行一段代码的结构,通过循环可以在满足一定的条件之下多次执行相同的代码。 循环语句:包换循环体,代码的总结构,循环条件,当循环条件满足时,循环体的代码才会执行,条件不…

RabbitMQ-同步和异步通讯、安装和入门案例、SpringAMQP(5个消息发送接收Demo,jackson消息转换器)

文章目录 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比: 2.快速入门2.1.安装RabbitMQ2.2.RabbitMQ消息模型2.3.导入Demo工程2.4.入门案例2.4.1.publisher实现2.4.2.consumer实现 2.5.总结 3.SpringAMQP3.1.Basic Queue 简单队列模型3.1.1.…

【设计模式】23种设计模式——工厂模式(原理讲解+应用场景介绍+案例介绍+Java代码实现)

工厂模式 需求了解 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 披萨的种类很多(比如 GreekPizz、CheesePizz 等)披萨的制作有 prepare(准备材料),bake(烘焙),cut(切割),b…

Hive SQL 迁移 Flink SQL 在快手的实践

摘要:本文整理自快手数据架构工程师张芒,阿里云工程师刘大龙,在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分: Flink 流批一体引擎 Flink Batch 生产实践 核心优化解读 未来规划 点击查看原文视频…

切换.net Framework 版本后,出现NuGet 包是使用不同于当前目标框架的目标框架安装的,可能需要重新安装

问题现象: 由于添加新的dll文件,依赖的.NET Framework版本与当前的不一致,在vs 中切换了目标框架版本后,运行程序,出现以下的warnning信息: 一些 NuGet 包是使用不同于当前目标框架的目标框架安装的&#…

springboot社区疫情防控平台

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…

剑指offer68-I.二叉搜索树的最近公共祖先

把p的所有祖先找出来,把q的所有祖先找出来,因为是是搜索树,找出来的祖先都是排好序的,所以可以把找出来的祖先从后面往前面遍历,第一个相同的值的数就是最近的公共祖先,这是我一开始的想法,但是它最后报错了…

(六)人工智能应用--深度学习原理与实战--理解张量与运算图

Tensorflow名称中的Tensor即张量,不仅仅是Tensorflow,几乎所有的深度学习平台都以张量为基本的数据结构。简单来说,张量就是多维数组,本质上是一种数据容器,它可以有任意维度,比如矩阵就是二维张量(二维数组…

数字图像处理【11】OpenCV-Canny边缘提取到FindContours轮廓发现

本章主要介绍图像处理中一个比较基础的操作:Canny边缘发现、轮廓发现 和 绘制轮廓。概念不难,主要是结合OpenCV 4.5的API相关操作,为往下 "基于距离变换的分水岭图像分割" 做知识储备。 Canny边缘检测 在讲述轮廓之前,…

数字孪生,建设智慧城市的新型“加速器”

城市是什么? 是现代文明与生态的联结,是自然与人友好栖息的空间,是运转复杂庞大的系统。 今天,中国的城市在历经十余年的“智慧城市”建设后已经被赋予了数智融合的全新解读。随着近年来5G、云计算、人工智能爆发式能量增长&#…

常见的bug---4、在DataGrip上跑本地模式报return 2异常

文章目录 问题描述原因分析:解决方案: 问题描述 FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 在DataGrip上设置了Hive的本地模式。虽然可以建表、但是无法对表进行插入数据 原因分析: 在插…

深入理解张量维度的真正含义

在人工智能领域,比如深度学习,机器学习,张量这一概念被频繁使用。虽然网上有很多关于张量的文章,但基本都是废话太多,而且复制粘贴说不到重点。 今天我就来讲解一下张量维度的真正含义。 首先. 张量并不是一个简单多…

STM32F103驱动VL53L0X激光测距模块

STM32F103驱动VL53L0X激光测距模块 简介引脚定义STM32F103ZET6开发板与VL53L0X模块接线测试代码实验结果 简介 TOF 是飞行时间(Tlme of Flight)技术的缩写,即传感器发出经过调制的近红外光,遇到物体后反射,传感器通过…

bug:file name too long文件名超出系统最大限制

各操作系统支持最长的文件和目录名称长度(Linux、Win、Mac) 今天开发需求的时候发现无法新建文件,提示file name too lang,于是翻阅和查询了一些资料,发现不同操作系统下文件名和目录名最长的长度不同。 操作系统文件名…

游戏如何应对虚拟定位问题

在游戏系统设计中,排行榜这一设计可谓是十分巧妙。它可以充分调动玩家的“胜负欲”,给予玩家前进的目标及动力,满足玩家的心理需求。 排行榜的设计使用范围广,对游戏留存、付费等指标提升效果出众,在不少游戏中都可以…

玩机搞机---某些安卓定制机解除系统安装限制的思路与分析过程

定制机的意义不多做解释,懂的人都明白. 在一些定制机中会限制用户安装app。当你使用第三方工具或者adb指令安卓app是他会提示de xxx.apk. autostarter is not auth,install failed!等等类似的提示,在解决某些定制系统中类似问题的过程中,基本…

Unity知识记录--项目升级URP

URP是指Unity的通用渲染管线,此处主要针对原有项目进行升级使用,但并不是所有的内容都可以直接通过升级完成,直接使用的Unity默认的shader通常可以完成直接升级,自己编写的shader通常需要重做。 首先我们先要安装这个Package&…