标签: system-design

CAP定理-为什么Mysql是CA

根据 CAP

一致性——所有节点给出相同的数据

可用性是指即使集群中的某个节点出现故障也能够访问集群。

分区容忍意味着即使两个节点之间存在“分区”(通信中断)(两个节点都已启动,但无法通信),集群仍能继续运行。

但Mysql默认行为是主从或主主。

所以对于,主从

  • 不存在一致性,因为从属设备可能会出现滞后,因此从从属设备读取的数据不一致。
  • 不存在可用性,因为如果没有 DBA 干预,从机无法成为主机。

所以对于,大师大师

  • 不存在一致性,因为从属设备可能会出现滞后,因此从从属设备读取的数据不一致。
  • 不存在可用性,因为如果没有 DBA 干预,从机/其他主机无法成为主机。
  • 它是部分容忍的,因为在网络故障的情况下两者都可以正常工作。

我错过了什么吗?

mysql system-design cap

5
推荐指数
2
解决办法
4061
查看次数

什么是内容交付网络和分布式文件系统?

我正在努力扩大我在分布式系统和系统设计方面的知识。我遇到过诸如内容交付网络和分布式文件系统之类的术语,用于存储/处理音乐、视频、图片、GIF 等媒体数据。

我知道 DFS 只是我们笔记本电脑中的一个文件系统,它被复制到其他服务器(分布式)以使其 99.9% 可用。CDN是一个可以存储包括javascript、图像、视频等资产的网络。

现在,我对理解两者之间的差异以及哪一个在不同的用例下效果更好有很大的困惑?如果我对CDN和DFS本身的基本理解有误,请指正。提前致谢!

distributed-system content-delivery-network system-design distributed-filesystem

5
推荐指数
1
解决办法
842
查看次数

为什么Cassandra用于Kong Api Gateway

Kong使用Cassandra或Postgres.Cassandra知道用于编写繁重的应用程序.我没有看到Kong api网关那么重写,也没有一个表使用Cassandra重要的功能分区键之一.我怀疑是为什么Cassandra用于Kong,有什么特别的原因吗?我们不能使用RDBMS来实现这一点.

postgresql cassandra nosql system-design kong

4
推荐指数
1
解决办法
2174
查看次数

React.ReactNode 作为故事书中的参数

这是我的按钮组件类型

import React from 'react'
export type ButtonProps = {
  label: string;
  color?:'primary' | 'secondary' | 'tertiary';
  size?:'mobile' | 'tablet' | 'desktop',
  handleClick?:()=>void,
  fullWidth?:boolean,
  loading?:boolean
  href?:string,
  icon?:React.ReactNode
  target?:'_blank' | '_parent'
  disabled?:boolean
}
Run Code Online (Sandbox Code Playgroud)

我在 Storybook 中使用按钮组件。

故事书代码

import React from 'react';
import { Meta, StoryObj } from "@storybook/react";
import { Button as SampleButton } from "../../components";
import 'antd/dist/reset.css';

const buttonMeta: Meta<typeof SampleButton> = {
  title: "Components/Button",
  tags: ['autodocs'],
  component: SampleButton,
};

export default buttonMeta;

type Story = StoryObj<typeof buttonMeta>;

export const …
Run Code Online (Sandbox Code Playgroud)

components system-design typescript reactjs storybook

4
推荐指数
1
解决办法
1482
查看次数

工作流引擎和事件流框架是编排层的替代品吗?

我要实现文档管理服务为业务流程层底层服务,如存储,分析,反病毒扫描等之间的编排要求是使层灵活,针对不同类型的文档,不同的流可以快速实施
的一个方法是将其建模为事件驱动系统,并使用 Apache Flink 等框架在事件上实现处理管道。
另一种思考方式是——工作流。将此设计为在 Apache Airflow 或 Uber Cadence 等工作流引擎上运行的工作流。
什么是更好的方法。

architecture workflow event-driven-design system-design

3
推荐指数
1
解决办法
1010
查看次数

反向代理和负载均衡器有什么区别?

我试图了解反向代理和负载平衡之间有何不同。何时使用反向代理而不是负载平衡很有用。

reverse-proxy load-balancing system-design

3
推荐指数
1
解决办法
6010
查看次数

什么是 L1 Cache Reference 或 Main Memory Reference

所以我试图学习计算机的各种组件的性能指标,如 L1 缓存、L2 缓存、主内存、以太网、磁盘等,如下所示:

Latency Comparison Numbers
--------------------------
L1 cache **reference**                       0.5 ns
Branch mispredict                            5   ns
L2 cache **reference**                       7   ns                      14x L1 cache
Mutex lock/unlock                           25   ns
Main memory **reference**                  100   ns                      20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy            10,000   ns       10 us
Send 1 KB bytes over 1 Gbps network     10,000   ns       10 us
Read 4 KB randomly from SSD*           150,000   ns      150 us          ~1GB/sec SSD
Read 1 MB sequentially from memory     250,000 …
Run Code Online (Sandbox Code Playgroud)

performance latency system-design cpu-cache

3
推荐指数
1
解决办法
490
查看次数

数据库好系统解耦点?

我们有两个系统,其中系统A向系统B发送数据.要求每个系统可以独立于另一个系统运行,如果另一个系统停机,它们都不会爆炸.问题是系统A在满足解耦要求的同时与系统B通信的最佳方式是什么.

系统B当前有一个进程,用于轮询db表中的数据并处理已插入的任何新行.

一个提出的设计是系统A只是将数据插入系统b的db表中,并让系统B通过现有过程处理新行.问题是这个解决方案是否满足解耦两个系统的要求?数据库是否被视为系统B的一部分,可能变得不可用并导致系统A爆炸?

另一种解决方案是系统A将数据放入MQ队列,并具有从MQ读取然后插入系统B数据库的进程.但这只是额外的开销吗?最终是MQ队列比db表更容错吗?

decoupling system-design

2
推荐指数
1
解决办法
1694
查看次数

如何在数据库中存储和检索 Django 会话变量?

我有我的 Django 网站,该网站目前由两台机器使用负载平衡器提供服务。我想从一台机器上维护与用户对应的会话。我知道我可以将负载均衡器配置为使用粘性会话,这样来自用户的所有请求都将由同一台服务器提供服务。但我想使用会话变量来实现相同的目的。

这就是我如何将该会话变量存储在集中式数据库中,任何服务器都可以从中访问该用户的会话,因此任何服务器都可以通过使用该会话变量存储来为其提供服务。但是我无法理解流程以及如何在 Django 中实现相同的流程。

所以我的问题是如何为用户将会话保存在数据库中,以便任何服务器能够访问它并相应地为请求提供服务。在这种情况下,这些 login() 和 logout 将如何工作?

我也有多个数据库。我计划将一个用于用户身份验证和其他内容,另一个用于网站相关数据存储。或者任何人至少可以向我解释如何实现这一目标的流程。

python django distributed-system system-design sticky-session

2
推荐指数
1
解决办法
2531
查看次数

Perlis的Epigram#22的含义

来自Alan J. Perlis的编程中Epigrams:

22.一个好的系统不能有弱的命令语言.

这是什么意思?这个原则的好例子是什么?

在哪里可以了解有关如何实现符合此条件的命令语言的更多信息?

shell system-design

1
推荐指数
1
解决办法
417
查看次数