欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[向过去学习] 分布式系统 (I)

最编程 2024-05-01 08:29:05
...

分布式系统的重要性

时间:2022年12月05日

作者:小蒋聊技术

【温故而知新】分布式系统(一)·分布式系统的重要性_小蒋聊技术_免费在线阅读收听下载 - 喜马拉雅手机版欢迎收听小蒋聊技术的其他类最新章节声音“【温故而知新】分布式系统(一)·分布式系统的重要性”。大家好,欢迎来到小蒋聊技术。小蒋准备和大家一起聊聊技术的那些事。文字版材料在****博客,“小蒋聊技术”的同名文章里。文字版地...https://m.ximalaya.com/sound/595525942?from=pc

前言

大家好,欢迎来到小蒋聊技术。小蒋准备和大家一起聊聊技术的那些事。

       今天小蒋继续坚持“温故而知新”的落地实践,准备和大家聊一聊“分布式系统”。小蒋一直在一线互联网公司从事分布式系统开发很多年,也一直在关注分布式系统的架构和新技术的发展。

       互联网业务发展到今天,用户量是越来越多,系统生产的数据规模也是越来越大,支持高并发和海量数据的处理,已经是应用系统的硬性需求。

       对比集中式系统架构,分布式系统具有可扩展性。可以动态扩展“服务”和“存储节点”,使用廉价的服务器构建高性能的“服务”,比较适合现在的互联网业务。

       另外随着电子商务、互联网金融、支付等业务的不断发展,让“微服务架构”、“大数据”、“云计算”这些技术使用的越来越广,各大公司的相关岗位要求也越来越高,掌握分布式技能的后端工程师变得越来越抢手。

       小蒋在最近的面试和工作中,看到一些问题:

  1. 面试时,可以回答概念性问题。但是问到落地方案的实质性问题就懵了,由于缺少相关经验而卡住;
  2. 研发工程师在工作中,对常用的分布式技术原理一知半解,在典型场景下可以处理,但是业务稍有调整后,就开始毫无头绪;
  3. 在系统设计中,只关注了新技术带来的收益,却没有考虑同时引入的风险,没有全面平衡各个设计点。比如,增加了缓存,带来了查询的速度提升,但是却没有注意到增加了缓存,同时会带来数据不一致问题。能量是守恒的,有得必有失。

        这通常是技术工程师缺乏体系化对分布式技术的认知,或者没有在实际的分布式场景中实践过。最常见的现象就是,可以解决常见问题,但是没有系统化的解决思路。

分布式架构

       小蒋我将尝试整理,我这一路在分布式系统设计中踩过的坑和开发实践中经历过的经典问题,并将这些都分享给你,小蒋希望能够帮到更多开发者,让咱们一起成长。

33268981d6aa49d3bbb2385fbd1cbd15.png

小蒋常碰到到身边的一些开发人员对自己的职业发展规划焦虑与困惑的问题,开发人员总是抱怨自己每天只写CRUD这些业务代码,迷茫自己该如何提升自己的技术能力,怎么才能加入BAT这样的大公司?

小蒋个人认为,所有的机会都是在自己充分准备后才能获得的,个人职业规划的困惑,其实就是自己在技术上持续精进的目标。心中有目标,才有成功机会,有了目标,才会一步步走向成功。

如果想在技术线上深耕和谋求发展,成为高级工程师、资深工程师或者是架构师,掌握分布式系统知识和架构已经成为了必要的一环。

不管是目前流行的 SOA 架构,还是蓬勃发展的微服务和 Serverless 架构,都是在分布式的基础上构建的,业务开发中的框架选型、注册中心,以及服务拆分之后面临的分布式事务问题、分布式锁,也都是分布式系统所关注的。

针对高级岗位,除了掌握在分布式环境下进行开发的能力,你还需要了解其中的原理、机制,以便能够快速定位线上问题;而对于架构师来说,你还需要具备独立设计分布式系统的能力,这就需要了解高并发、高可用的相关知识了。

想要进入大型互联网公司,分布式技术是一个面试过程中重点考察的点。很多岗位都要求掌握缓存、分布式服务、消息队列等分布式组件应用,部分岗位还要求在高并发等分布式设计方向有一定的积累。

d96e82acf1ab4789b32613643bbc6414.png

分布式技能点

       小蒋个人认为,后端开发者需要掌握的分布式技能点有:

  1. 分布式系统理论和设计;
  2. 分布式事务和一致性;
  3. 分布式服务及微服务架构;
  4. 分布式缓存和常见 NoSQL 应用;
  5. 分布式下数据库的拆分,比如读写分离、分库分表;
  6. 消息中间件的应用,常见组件的选型;
  7. 合理应用分布式技术,实现系统的高可用。

这些分布式技能点在工作和面试中都非常重要,但是小蒋个人认为掌握起来其实并不容易。

        1.理论众多、难以入手。

        分布式系统不仅涉及一致性、事务等众多的理论知识,还包括非常多的复杂算法,比如 Paxos 和 Zab 算法,如果没有一个明确的抓手,学习起来会很吃力。

        2.领域庞杂、关联技术栈多。

        分布式系统涉及很多领域,比如 RPC 服务调用、分库分表,这些不同的领域需要了解和掌握不同的技术栈。

        因此小蒋我个人的建议是,要想快速提升分布式技术能力,那么需要明确哪些才是你日常工作中最迫切需要的,从实践中开始体验和学习,积累经验。要知道,分布式不是一堆理论的堆砌,而是和日常开发息息相关。

        3.工作特点,接触不到分布式。

现在一些软件开发公司,或者传统公司的 IT 部门,还在使用集中式系统架构,所以部分开发者平时在工作中很少接触分布式系统。

总结

       小蒋我工作很多年,从一个刚毕业的新人,一步步晋升到一线互联网公司的架构师,我深知分布式知识的重要性和学习痛点。

       我将继续坚持“温故而知新”的落地实践,将会从理论开始总结,一步一步分享落地到实践中的案例。

       我希望能帮助我亲爱的伙伴建立一个知识框架,让你对分布式技术有一个总体的认知。

3f995c72ba5c431c8c2db10c4e1878d9.png

       技术是为业务服务的,再高深的技术都要落地,咱们在实际的场景中理解并应用,达到事半功倍的效果。

       以上,就是今天小蒋要跟大家分享的全部内容。

年龄的增长不可怕,可怕的是从未成长!

感谢大家支持小蒋,小蒋希望和大家共同成长,谢谢。