分布式技术提纲
|0x00 为什么要学习分布式技术
在软件工程领域中,我们一直非常喜欢谈论各种加工问题,比如“高并发、高可用、高可靠”,或者是“容器化、微服务、异地多活”,相关的技术细节、框架选型,像一张网一样,让人眼花缭乱。但,“万事万物都有自己的规律”,分布式技术是有纲领可以遵循的,掌握好这个纲领,可以在我们遇到问题时,从容的做出应对。
我很喜欢《阴符经》的一句话:“贤者守时,不肖者守命”,当我们在PK方案、晋升答辩的关键时刻,有系统的知识体系为自己撑腰,能够争取来更大的机会。
|0x01 分布式技术特点与难点
分布式技术之所以普及,主要是因为两点:容量大、高可用。
容量大:这个比较好理解,应对越来越大的业务体量,单机已经无法满足需求了,我们需要垂直或者水平拆分系统,以便能够支持扩容;
高可用:单节点故障是普遍问题,但整个系统的设计,不能存在单点问题,因此需要分布式架构来消除单点故障。
但分布式技术也有其复杂的一面,难点主要在系统的复杂性上,再细分下去,有两点:需要专门团队支持、问题响应速度不快。
需要专门团队支持:分布式技术通常没有专职的测试、运维人员,开发需要做好所有的事情,因此需要专门的团队,按照职责进行分工协作;
问题响应速度不快:分布式问题通常都比较复杂,排查问题时间较长,并且大家崇尚运维的自动化,因此一旦遇到问题,通常需要较长时间处理。
|0x02 分布式技术知识体系
分布式系统的技术体系,可以用“四纵四横”来总结。
“纵”是指技术的业务架构层次,自顶向下依次分为:分布式计算、分布式存储、分布式通信、分布式资源管理;“横”是指技术的基础能力,自左向右依次为:分布式协调、分布式调度、分布式高可用与分布式部署。
这些能力分别代表什么呢?
分布式计算:这个我们比较熟悉,常见的有批处理(MR)和流式处理(Flink),也包括流水线模式(Pipeline);
分布式存储:CAP理论应用的范畴,包括数据库、文件系统、键值系统等;
分布式通信:主要有三点,远程调用、发布订阅与消息队列;
分布式资源管理:分为集中式管理(Master/Slave架构)与非集中式管理(Gossip协议);
分布式协调:解决互斥、事务、选举、锁、共识等问题;
分布式调度:单体调度(Mesos、Kubernetes)、两层调度(YARN)与共享状态(Omega);
分布式高可用:包括负载均衡、流量控制、故障隔离与恢复等手段;
分布式部署:运维相关。
|0xFF 分布式评价指标
分布式技术的目标是能够利用上更多的机器,来处理更复杂的任务和更多的数据。因此,性能、资源、可用性、可扩展性,是衡量分布式技术的四个重要指标。
性能:衡量分布式系统处理各种任务的能力,包括吞吐量(QPS、TPS等)、响应时间和完成时间;
资源:衡量分布式系统占用的硬件资源,包括CPU、磁盘空间、内存等;
可用性:指分布式系统面对各种异常情况时,依旧能够提供正常服务的能力,等于系统停止服务时间与总的服务时间之比;
可扩展性:指分布式系统通过扩展规模,来提高系统能力的特性,包括垂直能力,即增加CPU、内存;水平能力,即增加计算机数量。
后续,会陆续写分布式相关的技术文章,敬请关注。