大型互联网产品架构技术体系梳理
总结:业务增长倒逼架构升级
一般的架构演进流程:单机模式,集群模式,分布式系统,三者之间的差异可以参考:https://www.zhihu.com/question/20004877
由于本文需要解析的是大型互联网产品,当下的大型互联网一般都是分布式架构。
话说天下大事,合久必分,分久必合。其实系统的演进也类似遵循这样的准则。当前还出与由合到分的阶段,于是产生了当下流程的分布式系统,以及微服务架构。拆倒是拆得爽了,拆开之后,就涉及到协作的问题,可以直接预料导的问题如下:
互斥问题怎么解?
主节点怎么产生?
共识问题?
分布式事务怎么解?
时间不同步怎么办?时钟问题
如何做好负载?流量控制?
Cap之前如何权衡?
这些问题是设计分布式系统所需要的解决的问题。就算不是从零开始设计一个分布式系统或者框架,当下也逃不出是用分布是框架或者组件的需求。那么我们怎么来解这些问题呢?或者说,在业界是怎么解决这些问题的呢?下面请容许我一一道来
分布式互斥解法
集中式
分布式
令牌环解法
分布式锁
基于数据库
分布式选举
bully
raft
zab
分布式共识
拜占庭将军问题
PoW
PoS
DPoS
分布式事务
事务ACID
CAP
BASE
2PC
3PC
基于消息队列的最终一致性方案 -- 同步拆异步
时钟问题 -- 为了解决计算的准确性
墙上时钟
逻辑时钟 -- Lambert时钟(全序与偏序)
向量时钟
原子时钟
发号器
分布式资源调度
单体调度
最差匹配
最佳匹配
两层调度
第一层:任务与资源分配
第二层:资源管理与分配
共享状态调度
乐观并发调度
悲观并发调度
分布式通信
远程过程调用
远程方法调用
消息系统 -- 消息中间件
推送
发布订阅
负载均衡
轮询&加权轮询
随机
哈希
一致性哈希
有限负载一致性哈希
带虚拟节点的一致性哈希
流控算法
漏桶
令牌桶
冗余算法
三副本
纠删码
以上为之前的一些学习总结,更多的是从解决问题办法的原理方面来描述,其中可以窥见分布式系统中的一些问题以及解法,包括分布式节点选举,分布式共识,分布式一致,流控,负载均衡,通过冗余解决实现数据的可靠性,为了保证计算的正确性产生的时钟系统等。至于在解决具体的问题到底是选择什么样的组件或者框架,或者自研系统,就得深入理解业务场景,例如业务场景到底是AP场景还是TP场景?实时性要求高不高?并发高不高?读写比例?等等。就是具体的业务场景,也会有不同的细分,在不同的细分场景做出的技术选型也会有差异。
补充:在这里只是列举了之前分享的ppt的提纲,后期将内容填充进去,也当做自己的一些总结。
评论