作者:harekoc_303 | 来源:互联网 | 2023-07-14 13:42
在笔者看来,分布式系统有2个层次:怎么用轮子+怎么造轮子。怎么用轮子目前国内绝大部分的书籍、讲座,都集中在这个领域。具体说来,比如电商架构、微博架构、搜索架构、推荐系统等。。在这个
在笔者看来,分布式系统有2个层次:怎么用轮子 + 怎么造轮子。
怎么用轮子
目前国内绝大部分的书籍、讲座,都集中在这个领域。具体说来,比如电商架构、微博架构、搜索架构、推荐系统等。。
在这个层次,主要关注如何利用各种中间件构建起1套业务系统:首先是各种中间件的选型:消息队列,RPC,分布式存储,分布式监控。。。
然后是各种策略,思想,也就是我在另一篇中所讲到的:比如拆分、在线 vs.离线、缓存、读写分离、重读轻写/重写轻读。。。
怎么造轮子
相对用轮子,造轮子就更加深入了。比如开发一个分布式存储系统、一个消息中间件、一个分布式数据库、一个RPC中间件。。。
其对计算机的底层原理、分布式理论的要求也就更高:比如各种分布式的理论,FLP理论、CAP、时钟向量、Paxos协议。。。
比如网络、文件系统、数据库底层原理等。
横向 vs 纵向
从另外一个角度来讲,做业务系统是横向的、对知识面要求更广。你要搭建一套高复杂的业务系统,这里面不仅包括了开发,也包括了测试、IT运维、监控、DBA等全方位的知识;
而开发一个中间件,则是纵向的、对深度要求很高。比如开发一个RPC中间件,更多的是对RPC中间件的各种底层技术的深刻理解。
在实际开发过程中,这2个往往并不是截然分开的2个领域,通常都是业务驱动。当业务发展到一定程度,发现很有必要开发一个独立的中间件,开源的都不能满足需求,这个时候可能就会花大力气自己研发。