- 博客(7)
- 收藏
- 关注
原创 谷歌大佬50min现场设计的即时通信系统(Telegram、微信)
数据库中message 表新增一条记录,包含消息内容、发送者ID(用户A)、接收者ID(用户B)、发送时间等信息,消息状态初始设置为未读(status='unread'),表示它尚未被接收者用户B查看。对于每条未读消息,分发器会将其添加到接收者(用户B)User 表中的 unread_message_ids 字段,并依据用户B的状态(在线、离线、静音等)立即通知接收方是否需要推送通知。当用户B发起查看消息的请求,要求立即获取未读消息。随着消息量的不断增大,每次消息分发器的轮询时间会变长,导致消息延迟。
2025-01-25 14:42:38
800
原创 南京大学-研-软件体系结构期末复习整理
系统操作通常由领域模型定义:分析用户故事和用例,提取关键动词和名词。例如,FTGO应用中的“下订单”操作可以定义为CreateOrder(),该操作需要验证用户信息、计算订单金额、创建订单记录等。根据定义的系统操作和业务能力,将应用拆分为多个微服务。用户服务:处理用户注册、认证和信息管理。订单服务:管理订单的创建、更新和查询。支付服务:处理支付事务。库存服务:管理商品库存。每个微服务都围绕一个核心功能进行构建,确保服务的高内聚和低耦合。为每个微服务定义清晰的API,描述服务之间的协作方式。
2025-01-24 22:24:48
965
原创 整理了谷歌大佬40min现场设计的Google Drive文件共享系统
S3存储:文件在 S3 中以对象的形式存储。如果 Key 的前缀设计不当,过于集中或不够分散,可能导致 S3 内部分区不均衡,S3会在后台进行分区,把一个过大的文件夹分为多个,此时可能会导致服务器问题。通过记录上传 ID、已上传部分的序号和对应的 ETag,跳过已完成的部分,继续上传未完成的部分,而无需重复上传已完成的部分,实现文件断点续传。S3 预签名 URL(Presigned URL)是 Amazon S3 提供的一种功能,允许在规定的时间内,通过一个临时生成的链接访问存储在 S3 上的私有文件。
2024-12-26 08:51:40
628
原创 终于明白了这段对话,关键词热度统计
可以在内存中维护一个大小为K(K=10)的最大堆,首先读入每个文件的最后一行,也就是最大值,填满这个堆,此时堆顶元素就是全局最大值。对于堆中的每个元素,在记录它的相关信息的同时也记录它属于哪个小文件,弹出之后就把对应文件的指针朝上挪一行,指向第二大的元素,并把这个元素读入内存的堆里。评论的方法就是解决这个的。A:可以一次大概读取2G的数据进入内存,然后对这2G数据进行关键词次数统计并排序(这里统计可以使用mapreduce的思想)然后取关键词出现次数最多的10个,然后将这10个关键词以及出现次数存入硬盘;
2024-10-07 16:23:51
1731
2
原创 Jaeger
Jaeger 是一个开源的端到端分布式追踪系统,可以追踪分布式系统中的请求流程。它可以帮助识别性能瓶颈,从而优化系统性能,并且有助于快速诊断故障和问题。它是由 Uber 开发,后来成为了 Cloud Native Computing Foundation (CNCF) 的一部分。
2023-12-04 19:44:02
249
原创 gRPC以及其性能测试的介绍
gRPCgRPC)是一种开源的高性能远程过程调用框架,为管理和配置网络设备提供了一种API接口设计的方法。它可以使用协议缓冲区()作为接口定义语言(IDL)和消息交换格式。协议缓冲区:是由Google开发的一种语言无关、平台无关的数据序列化方法。它用于序列化结构化数据,类似于XML,但比XML更小、更快、更简单。协议缓冲区被广泛用于通信协议、数据存储等多种场景。定义服务接口:在gRPC中,协议缓冲区用作定义服务接口的语言。
2023-11-23 20:55:04
1212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人