Episode 11 (Final) - path 2
HighLoad, масштабирование, отказоустойчивость
+ Увеличиваем возможность обрабатывать запросы на чтение
+ Отказоустойчивость (можно переключить запись на реплику, если мастер упал)
- Eventual consistency - изменения доходят до реплик с задержкой (для критично важных запросов читаем из мастера)
Например данные разных клиентов в разных базах, логи за разные периоды времени и тд - это разделение по условию. Под шардированием подразумевают такой способ.
Хранить сообщения чата в одной базе, аватарки пользователей в другой - это разделение по типу
Апи, с которым взаимодействуют клиенты. Гейт скрывает внутреннюю структуру системы и упрощает ее изменения. Часто в роли такого апи может выступать не отдельное приложение, а revers-proxy
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}