本文写于 2017-12,同步于自己的51CTO博客
导言:记得在自己大学毕业的2006年到之后近五年的工作里,源于工作经历和有限的视野,几乎对“分布式系统”没有任何概念。当然,彼时的互联网/移动互联网还未对我们的生活呈覆盖颠覆之势,很多网络应用采用传统的集中式服务便可应对。但是随着互联网大潮的风起云涌,出现了越来越多的细分大流量网站及应用,网民体量也如滚落雪球一般越来越大,这种情况下分布式的概念几乎在技术圈“家喻户晓”,也成了我们追逐的另一颗时代“银弹”。我也不例外,但是只是因为身处于某几乎无互联网氛围的二线城市和保守封闭的技术氛围中,所以对分布式系统的理解、掌握只能是自己一步步学习、实践而来,但是反过来也有了很多踏实的实践体会。
刚才提到分布式系统产生的背景之一就是有了很多大型网站、应用。
- 这些系统的特点是:高并发、大流量;高可用;海量数据;用户分布广泛,网络情况复杂,安全环境恶劣;需求快速变更,迭代式发展,发布频繁。
- 这些系统的核心架构要素:性能、可用性、伸缩性、扩展性和安全性。
来看看分布式系统的特点:
- 异构性:使得用户能在大量异构计算机和网络上访问服务和运行应用程序,比如允许硬件、操作系统、编程语言、开发者等的多样性和差别。
- 开放性(扩展性):使系统能以不同的方式被扩展和实现,比如通过发布系统的关键接口、基于一致的通信机制和网络协议扩展其他应用。