2022分布式系统架构关于分布式系统架构对于软件架构,更多的是一种思想,即内功修为
在道与术层面则更偏重道的修炼,道的深度确定架构的境界
相对而言,术是手段随不同的环境应运而生,就像太极剑法和独孤九剑,能做到随境而变
架构是一种权衡没有一种架构可以应用到全部环境,也没有一个技术或框架可以解决全部问题,即使是针对同一种场景也往往存在多种解决方案
在架构的时候,更多的是方案和手段的权衡,例如高可用性、高并发性第1页共10页一样性本身就存在肯定的冲突;而异步还是同步、是否须要事务、如何应用事务、缓存、拆分、容灾、发布等等,每一项都须要从各种技术实现中进行权衡
细化到框架,ActiveMQ、RocketMQ、Kafka、Redis、ZooKeeper等等都可以实现消息队列模型,详细运用哪个就须要结合场景进行权衡了
分与合天下大事,合久必分、分久必合,在解决高并发分布式的问题时绝大部分都在运用分与合的思想
当数据量很大、并发量许多的时候就须要考虑拆分(分而治之),第2页共10页例如分层设计、横向拆分、纵向拆分、分IDC、分库分表
并且这些拆分本身就是分层的,例如在DNS层可以将流量根据地域或运营商安排到不同的IDC、业务层可以将业务处理逻辑安排到多个子系统、系统层可以依据用户进行横向拆分、而存储层可以依据规则将数据安排到不同的库不同的表;另外读写分别、热点分别、独立出缓存层也体现了分布式系统架构中分的思想
为什么要做这么多的拆分,拆分就是为了化多为少,在单节点处理实力有限的状况下,通过横向拆分供应无线的扩展实力,当巨大的流量通过拆分后,每个节点要处理的QPS就会下降;拆分是为了化繁第3页共10页为简,简化单节点的困难度,现在的微服务(当然微服务引发的服务治理须要另说)、二阶段事务提交,就是将困难的业务通过多维度的拆分降解单节点困难度的手段
拆多了就要合,hadoop将困难的