楼主:
drajan (EasoN)
2021-08-21 15:14:13※ 引述《ntpuisbest (阿龙)》之铭言:
: 先自承是非本科的新人
: 最近看了版上的讨论串,觉得自己的确实是
: 没有CS基础的API工程师,以前在学校修过资料结构
: 但是只有一些很粗糙的观念
: 像是hash function因为返回的是index,所以在查找资料上非常快
: 目前还在恶补基础的DS,至于OS和计算机组织就真的完全没概念了
: 每次看到thread,大概就止步于看到那种for loop 交叉印出不同函数的例子
: 自己稍微爬文下来,不太懂如果要往高流量网站的设计迈进
: 该怎么去活用那些知识
: 我爬文的结果有点像是
: 如果一张数据库数量超过百万
: 那这样就要想办法把资料分成不同的表格
: 然后这时hashmap 就可以帮你找到不同的表格这样?
: 爬文大概看到以下方法
: 1.建立多个File server , 写hash function 将上传的图片及影音平均分散到File server
: 上的Folder
: 2.Query优化、索引优化及将负载重的table做反正规化以减少数据库负荷
: 建立Master /Slave 数据库,分散Master主机loading,将读写数据库动作分离,
: Matster DB只负责被写入及复制,Slave DB负责被读取
: 3.可能还有一些cache之类的
: 比如说像是抢票网站好了
: https://imgur.com/TON1Nid
: 看到有人说可以这样解决
: 那像这样的知识,是不是要想办法进去大公司才有办法学到
: 比较难在网络上,像是一般的前后端CRUD一样容易获得?
: 另外想问说,如果有一个API,他是getallemployee好了,打了url就要返回所有的员工
: 资料,这是如果是高并发高流量的网站设计
: 该怎么活用资料结构,才能让网站不要LAG
这是常用场景,已知问题,所以有很多解决方案。
其中一种就是类似Twtiiter的Push架构,每次新增一个员工就把资料写进cache&DB
然后API打进来先去问cache要资料,然后cache多设几个组成一个cluster,
避免单点失效...这些知识都可以从下面推荐的网站中学到,不用做过也略知一二
: 还是说这可能跟资料结构比较无关,我要去补充其他知识才会知道
: 如果可以的话,希望前辈们可以分享哪些关键字或是网站有sample code可以查询
System Design Primer
https://github.com/donnemartin/system-design-primer
InfoQ
https://www.infoq.cn/topic/architecture
Grokking the System Design Interview
https://www.educative.io/courses/grokking-the-system-design-interview
HiredInTech
https://www.hiredintech.com/classrooms/system-design/lesson/52
System Design Interview
https://github.com/checkcheckzz/system-design-interview
Awesome Scalability
https://github.com/binhnguyennus/awesome-scalability
SYSTEM DESIGN INTERVIEW- AN INSIDER'S GUIDE
https://systeminterview.com/
另外我推荐分布式系统圣经 Design Data-Intesive Application
就这些内容,全看完不可能 但掌握几个大方向你的系统设计能力就不会差