小技术君


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Sitemap

  • Book

  • Markdown

  • Search

Google Drive 和 Dropbox 系统设计概述

Posted on 2023-08-25 | In system design |

在现代信息世界中,我们有许多照片、文件、视频等需要存储。我相信几乎所有人都尝试过使用 Google Drive 或 Dropbox。

功能需求

  1. 用户可以从任何设备上传和下载文件。
  2. 用户可以通过替换相同的文件名来更新文件。
  3. 用户可以通过电子邮件链接将文件和文件夹分享给其他人。
  4. 用户可以随时从任何设备删除文件和文件夹。
  5. 删除的文件和文件夹将在回收站中存储 15 天。
  6. 系统应该支持离线编辑。用户可以在离线状态下添加/修改文件和文件夹名称,一旦网络恢复,更改将与远程服务器同步。
  7. 用户可以进行文件版本管理,以恢复文件的先前版本。(系统可以支持多次更改的同一文件的多个版本,带宽和所需空间将显著增加)
  8. 系统可以支持跨设备的文件和文件夹同步。
  9. 系统允许每个用户免费上传高达 10 GB 的文件。
  10. 系统将为不同存储大小提供不同的市场计划。
Read more »

通知系统设计:如何将其集成到我们的基础架构中

Posted on 2023-08-12 | In system design |

什么是面向企业的通知?

毫无疑问,没有任何数字化企业可以在没有通知的情况下生存。通过通过电子邮件、短信或推送通知等各种渠道发送及时通知,企业可以提高客户参与度和留存率,促使重复购买。通知还为企业提供了一个机会,可以收集客户反馈和见解,这可以用于改善其产品或服务。

最终,一个设计良好的通知服务可以帮助企业与客户建立牢固持久的关系,从而实现长期的成功。因此,无论何时,所有产品都需要为技术提供通知集成的要求。

规划集成

由于通知的功能性/非功能性要求在公司/企业之间基本相似,并且每个人都了解什么是通知功能,因此我们可以迅速记录一些业务需求,并立即开始讨论技术方面的问题。

Read more »

系统设计蓝图 / 备忘单

Posted on 2023-08-12 | In system design |

开发一个强大、可扩展和高效的系统可能会令人望而却步。然而,了解关键概念和组件可以使这个过程更可管理。在本博客文章中,我们将探讨系统设计的关键概念和组件,如DNS、负载均衡、API网关等,以及一个简明的备忘单,可以帮助开发人员设计不同复杂性的系统。

系统设计蓝图 / 备忘单

这是一份全面的视觉指南,为开发人员提供了一个快速、简单的参考,涵盖了系统设计中的关键概念和最佳实践。这个便捷的备忘单或蓝图涵盖了诸如DNS、负载均衡、API网关、视频和图像处理、缓存、数据库、唯一ID生成、支付和推荐服务等标准组件,以及聊天和流媒体协议。有了这个宝贵的资源,你将能够应对设计和实施可扩展、高效和可靠系统的挑战。

1*QSFihi7zXbR5X915MDmKyQ.png

Read more »

Discord如何存储数万亿条消息

Posted on 2023-04-01 | In 设计 |

Discord是一款专为社群设计的免费网络实时通话软件与数字发行平台,主要针对游戏玩家、教育人士、朋友及商业人士,用户之间可以在软体的聊天频道通过消息、图片、视频和音频进行交流。这款软件可以在Microsoft Windows、macOS、Android、iOS、Linux和网页上运行。

下面的图展示了Discord消息存储的演变历程:

67b3962d-becb-4fba-a9ae-115692dfa6e1_3576x3033.jpeg

Read more »

什么是gRPC?有什么优点?

Posted on 2023-04-01 | In 设计 |

RPC(远程过程调用)被称为“远程”,是因为它可以在微服务架构下将服务部署在不同的服务器上时,在远程服务之间进行通信。从用户的角度来看,它就像是一个本地函数调用。

下面的图表说明了gRPC的整体数据流程。

b98afdcd-b567-4c90-9f47-5358df0adda6_1280x1619.jpeg

Read more »

Diagram as Code

Posted on 2023-03-31 | In 设计 |

将图表定义为代码,并使用特定的工具或库将其转换为实际的图表。这种方法可以使图表和代码保持同步,并且可以轻松地与代码一起管理。常见的“Diagram as Code”工具包括Mermaid、PlantUML和Go Diagrams等

1. Diagrams

将Python代码转换为云系统架构图。

链接:https://github.com/mingrammer/diagrams

e94ac2ab-b131-4a4c-a03e-b418e68e6447_3084x1503.jpeg

2. Mermaid

Read more »

使用OpenAI的ChatGPT进行智能问答交互的实现

Posted on 2023-03-11 | In ChatGPT |

Image.png

当使用 ChatGPT 进行问答交互时,用户输入的问题需要经过多个组件进行处理,其中包括内容审核、ChatGPT 模型生成回答以及回答的内容审核等。在本文中,我们将详细介绍 ChatGPT 的工作原理,并提供相应的代码示例。

Read more »

API网关的工作原理与实战案例

Posted on 2023-03-09 | In gateway |

Image.png

API网关的工作原理与实战案例

API网关是一个在微服务架构中起到重要作用的组件。它可以处理所有客户端请求并对它们进行统一的管理和路由。本文将介绍API网关的工作原理,并给出一个基于Spring Cloud Gateway的实战案例。

Read more »

hexo 博客加载优化

Posted on 2022-12-24 | In hexo |

hexo 博客加载优化

背景

最近趁着周末折腾自己博客的时候,发现刷页面的时候会有点卡顿,感觉页面性能很低,所以开始了下面的优化,分析下来结果还不错比之前快了很多,那让我们开始吧!

Image.png

简单的来说主要以下几个部分的优化:

  • 压缩静态资源,提高访问速度
  • 图片懒加载
Read more »

Nagle和延迟确认带来的性能问题

Posted on 2022-12-23 | In network |

Nagle和延迟确认带来的性能问题

前言

从网上看到的一个问题的跟踪@林沛满 ,觉得很有意思记录下来

问题背景

从AIX备份数据到Windows极其缓慢,只有1MB/s,备份所用的协议是SFTP,看到这个问题第一反应抓个包,试试Wireshark的三板斧

抓包三板斧

  1. 从Statistics →Summary菜单可见,平均速度是11 Mbit/s,的确只比1 MB/s高一些
Read more »
12…15
小技术君

小技术君

桃李不言 下自成蹊

150 posts
25 categories
51 tags
RSS
GitHub Email
友情链接
  • Chris Blog
  • VPN
© 2015 — 2023 Chris
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4