美文网首页Java 杂谈
怎么理解分布式、高并发、多线程?

怎么理解分布式、高并发、多线程?

作者: Java机械师 | 来源:发表于2019-03-11 21:30 被阅读4次

    当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?

    当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?

    确实,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同。

    什么是分布式?

    分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式:

    水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务;

    垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。

    什么是高并发?

    相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量:比如在线直播服务,同时有上万人观看。

    高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。

    什么是多线程?

    多线程是指从软件或者硬件上实现多个线程并发执行的技术,它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)。

    这几个概念中,多线程解决的问题是最明确的,手段也是比较单一的,基本上遇到的最大问题就是线程安全。在JAVA语言中,需要对JVM内存模型、指令重排等深入了解,才能写出一份高质量的多线程代码。

    总结一下:

    ●分布式是从物理资源的角度去将不同的机器组成一个整体对外服务,技术范围非常广且难度非常大,有了这个基础,高并发、高吞吐等系统很容易构建;

    ● 高并发是从业务角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN等,当然也包括多线程;

    ● 多线程则聚焦于如何使用编程语言将CPU调度能力最大化。

    分布式与高并发系统,涉及到大量的概念和知识点,如果没有系统的学习,很容易会杂糅概念而辨识不清,在面试与实际工作中都会遇到困难。如果你从事Java开发,具备1年以上工作经验,希望深入浅出了解Java分布式、高并发等技术要点,渴望实现技术和职业成长上的双重突破,

    从事java十余年,现在把架构师必须具备的一些技术总结出来一套思维导图和录制了一些相关视频,分享给大家,供大家参考。

    需要相关资料可以加群:810589193免费获取

    开源框架

    程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这也造成了很多错误看源码的方式。

    那要如何正确的分析源码呢?

    高性能

    随着我们的业务量越来越大和越重要,单体的架构模式已经无法对应大规模的应用场景,而且系统中决不能存在单点故障导致整体不可用,所以只有垂直或是水平拆分业务系统,使其形成一个分布式的架构,利用分布式架构来冗余系统消除单点的故障,从而提高整个系统的可用性。同时高性能系统的模块重用度更高,速度更快,扩展性更高是大型的项目必不可少的环节。

    微服务

    关于微服务架构的取舍

    1、在合适的项目,合适的团队,采用微服务架构收益会大于成本。

    2、微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。

    3、需要避免为了“微服务”而“微服务”。

    4、微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。

    架构师筑基

    我们不仅仅对项目要运筹帷幄,还要能解决一切性能问题。只有深入学习JVM底层原理,mysql底层优化以及Tomcat调优,才能达到知其然,知其所以然的效果。除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识、思维以及做各种权衡的能力。

    团队协作

    所谓团队合作能力,是指建立在团队的基础之上,发挥团队精神、互补互助以达到团队最大工作效率的能力。对于团队的成员来说,不仅要有个人能力,更需要有在不同的位置上各尽所能、与其他成员协调合作的能力。

    项目实战

    要想立足于互联网公司,且能在互联网浪潮中不被淹没,对于项目的开发实战演练是不必可少的技能,也是对自身能力的一个衡量,有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱,其中的底层原理,实现原理又能知道多少?

    对于所有职业来说,稀缺度才是决定了这个职业的价值。做不到稀缺,你就永远有被别人替代的危险,你就永远陷入了所谓的码农生活之中。本次给大家推荐一个免费的学习群810589193,点击链接加入群聊【Java架构学习交流群】:https://jq.qq.com/?_wv=1027&k=5deQUBl,里面概括Java分布式、高并发、JVM、高性能、微服务、区块链、大数据等技术,以及面试资源等。

    成就大神不是梦,还是要看你加不加

    相关文章

      网友评论

        本文标题:怎么理解分布式、高并发、多线程?

        本文链接:https://www.haomeiwen.com/subject/ffmipqtx.html