01-分布式系统简介

最近一直在研究《大型网站系统与Java中间件实践》这本书,对我帮助很大,所以在这里想把我对这本书的理解以及这本书的部分内容分享给大家。这里对这本书的内容会做一个梳理,将我认为重点的内容,以及在平时工作中遇到的问题写下来,一方面是为了加强记忆,另一方面是为了对这本书内容感兴趣的同学能够少走弯路,更快的接受书本的内容。

我会将从分布式说起,一直到分布式系统中用到的各种技术、中间件的使用等,全方位的介绍大型网站系统的一些内容。如果您有任何问题或建议,欢迎留言或者联系我的个人邮箱:[email protected]

好了下面是重点内容


  1. 分布式系统的定义--快速入门

        尽管现在计算机的计算能力非常强悍,但总有瓶颈无法突破,随着大数据的发展,数据量激增,单机处理能力显得非常无力,所以为了快速处理大量数据,引入分布式系统的概念,即多台计算机协调运作共同完成一件事情,至于如何来协调、如何运作,将是我们讨论的重要内容!

        首先,我们来看下官方定义:

        A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages

        我们可以看出,分布式系统的重点内容:一是各组件分布在网络计算机上、二是组件之间需要通过网络进行通信病协调。即相对于单机服务器,分布式系统相当于一个扩展的超级计算机。分布式系统不仅可以解决计算机性能上的瓶颈,也可以做容灾备份,来减少整个系统宕机的可能。

        摩尔定律反映了计算机性能的发展,当价格不变时,每隔18个月,集成电路上可容纳的晶体管数量会增加一倍,性能也将增加一倍。当然了,指数增加趋势,我认为是不可能一直持续下去的,但是目前为止仍然保持着这个增速。但是我们对数据处理能力的需求,增加的要比这个速度还要快,甚至没有上限,所以分布式系统是一个很好的解决方案。

        一些分布式系统的案例提供给大家:几乎所有的大型网站如淘宝网、京东等,背后有无数台机器来共同支持一个网站的运转。

    2. 学习分布式系统所需要了解的技术

        分布式系统中需要用到技术很多,有些也非常复杂。如果你目前只是入门,学习一些简单的分布式系统中的实现方式,以下技术只需要了解即可,为了学习进度不需要进行深入研究。以后如果想成为这方面的专家,那么就应该达到掌握或精通的程度了。

  • 多线程:计算机多核时代,多线程可以最大限度的利用单机的性能,将一些任务并行处理,提高系统响应速度和效率。
  • 网络通信:上面所说的分布式系统各组件之间需要相互通信,从而进行协调运作。
  • Jvm虚拟机:Java的运行环境,了解虚拟机基本上是,有助于你合理分配内存,提高内存利用率,也能快速分析和定位问题。
  • linux系统:由于linux相对稳定,大部分分布式系统都是部署在linux中的,以及一些Java中间件。
  • 负载均衡:由于多台服务器功能运作,合理根据计算机性能调整计算机负载,可能提高性能利用率,减少宕机的风险。
  • 缓存:分布式系统之间的数据共享可通过缓存服务器来实现,缓存可快速存取,是一种很理想的数据存储和共享方案。
  • 各种中间件技术:分布式系统之间需要协调运作,很大程度上依赖中间件来实现,中间件非常多,后面的文章我将详细介绍一些常用的中间件。

3. 分布式系统常见的问题

  • 缺乏全局时钟,组成分布式系统的机器都有自己的时钟,很难保证完全一致。
  • 面对独立故障行性,部署后很难保证每台机器都能正常运转,当出现个别机器无法运转的情况后,需要对应的机制来自动处理。
  • 单点故障:如果一些机器出现故障,如何保障数据完成、不影响系统继续运行。
  • 事务:多台机器在数据一致性、可靠性等方便需要均衡处理。

猜你喜欢

转载自blog.csdn.net/xulong_08/article/details/81334792
今日推荐