博客 / 列表

float64 - ByteByteGo學習筆記:URL短鏈服務設計

引言 在互聯網技術日新月異的今天,URL短鏈服務已經成為日常網絡生活中不可或缺的一部分。每當想要分享一個冗長的網頁鏈接,或者需要在對字符數量敏感的平台(如社交媒體、短信等)發佈鏈接時,URL短鏈服務都能將長長的URL地址精簡成短小、易於傳播的鏈接。例如,將冗長的 https://www.systeminterview.com/q=chatsystemc=loggedinv=3i=long 縮短為

學習 , 設計原則 , 架構 , 後端

float64 - ByteByteGo學習筆記:鍵值(Key-Value)存儲

1. 引言 鍵值存儲,也稱為鍵值數據庫,是一種非關係型數據庫。它通過鍵值對的方式存儲數據,每個鍵都是唯一的,可以快速地通過鍵訪問到對應的值。鍵值存儲在現代應用中非常廣泛,如緩存、消息隊列、分佈式系統等。本文將詳細介紹鍵值存儲的設計原理、核心概念、技術實現以及應用場景。 2. 鍵值存儲的基本概念 2.1 鍵值對 鍵值存儲的核心是鍵值對,每個鍵都是唯一的,與之關聯的值可以通過鍵快速訪問。鍵可以是純文本

系統設計 , redis , nosql , memcached , 後端

float64 - ByteByteGo學習筆記:一致性哈希

一、引言 在分佈式系統中,實現水平擴展的關鍵在於能夠有效地分配請求並均勻地將數據分配到各個服務器上。一致性哈希算法作為一種常用的技術,能夠很好地解決這一問題。本文將深入探討一致性哈希算法的原理、實現以及應用場景。 二、重哈希問題 2.1 傳統哈希方法 傳統的哈希方法通常使用取模運算來確定鍵存儲在哪個服務器上,即 serverIndex = hash(key) % N,其中 N 是服務器池的大小。這

數據結構 , 系統架構 , 一致性哈希算法 , 後端

float64 - ByteByteGo學習筆記:通知系統設計

引言 在當今這個信息爆炸的時代,通知系統已經成為了現代應用程序中不可或缺的重要組成部分。無論是突發新聞的即時推送、產品更新的及時告知、促銷活動的精準觸達,還是用户交互的實時反饋,通知都扮演着至關重要的角色。一個高效、可靠、可擴展的通知系統,不僅能夠提升用户體驗,增強用户粘性,還能有效地傳遞關鍵信息,驅動業務增長。 本文將深入探討如何設計一個可擴展的通知系統,涵蓋了從需求分析、高層設計到詳細設計的各

系統設計 , 系統架構 , 後端

float64 - ByteByteGo學習筆記:網絡爬蟲設計

前言:互聯網的觸角——網絡爬蟲及其重要性 在信息爆炸的時代,互聯網已成為人類知識和數據最龐大的載體。如何高效地從這浩如煙海的信息中提取有價值的內容,成為了現代信息技術領域一個核心挑戰。網絡爬蟲,作為自動化信息採集的利器,扮演着至關重要的角色。它如同互聯網的觸角,不知疲倦地探索、發現和收集網絡信息,為搜索引擎、數據分析、網絡監控等眾多應用場景提供源源不斷的數據支持。網絡爬蟲的應用領域極為廣泛,幾乎滲

系統設計 , 後端

float64 - ByteByteGo學習筆記:深入理解與設計唯一ID生成器

引言:唯一ID的重要性及應用場景 在現代軟件系統架構中,唯一ID(Unique Identifier)扮演着至關重要的角色。它就像是系統中每個實體的“身份證”,用於在分佈式環境、數據庫記錄、消息隊列等各種場景中唯一標識每一個對象。從用户賬户、訂單編號,到微服務實例、數據庫記錄,唯一ID的應用無處不在。一個設計良好的唯一ID生成器,能夠確保系統數據的完整性、一致性,並提升系統的可擴展性和可維護性。

snowflake , 系統設計 , MySQL , uuid , 後端

float64 - ByteByteGo學習筆記:設計限流器

在現代應用系統中,限流器(Rate Limiter)是一種至關重要的工具,用於控制客户端對服務的請求速率。 限流器的基本概念 限流器的核心功能是限制在特定時間內可以發送的請求數量。在HTTP世界中,限流器通過定義閾值來控制請求流量。以下是一些常見的限流規則: 用户每秒最多可以發佈2條推文。 每天最多可以創建10個賬户,且這些賬户必須來自不同的IP地址。 每週最多可以從同一設備領取5次獎勵。

系統設計 , 學習筆記 , 後端

float64 - ByteByteGo學習筆記:系統設計面試框架

系統設計面試往往讓人感到緊張,因為問題通常很模糊,而且需要在短時間內設計出一個複雜的系統。但實際上,面試官並不是期望你在一小時內設計出一個真實世界的系統,而是希望看到你在解決問題時的思維方式和設計技能。 系統設計面試的目標 面試官主要關注以下幾個方面: 合作能力:是否能夠與團隊成員有效合作。 抗壓能力:在壓力下是否能保持冷靜並做出合理的決策。 解決模糊問題的能力:面對不明確的問題時,是否能

系統設計 , 面試 , 後端

float64 - ByteByteGo學習筆記:系統設計中的估算技巧

在系統設計中,估算系統容量和性能需求是一項至關重要的技能。 一、二次冪(Power of Two) 在處理分佈式系統時,數據量可能會變得非常龐大。為了進行正確的計算,瞭解數據量單位的冪次是非常關鍵的。一個ASCII字符佔用1字節(8位),下面是一些常見的數據量單位: 2^10(1千):1千字節(KB) 2^20(1百萬):1兆字節(MB) 2^30(10億):1吉字節(GB) 2^40(

系統設計 , 系統架構 , 後端

float64 - ByteByteGo學習筆記:從零擴展到數百萬用户

單服務器架構:起點 系統的構建始於單服務器架構。在這一階段,所有組件包括Web應用、數據庫和緩存都運行在同一台服務器上。這種架構簡單易實現,但隨着用户數量的增加,其侷限性很快就會顯現出來。例如,服務器的負載會急劇增加,導致性能瓶頸。此外,單服務器架構缺乏冗餘,一旦服務器出現故障,整個系統將無法運行。 分離數據庫與Web服務器:獨立擴展 隨着用户數量的增長,單服務器架構不再滿足需求。此時,我們需要

系統設計 , 面試 , 系統架構 , 後端