高性能架构学习RoadMap-分布式架构演进

466 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,[点击查看活动详情]

一、分布式架构学习路线图

JAVA中的高并发终于写完了,在思考之后的专题些什么。朋友之前说让我总结下分布式相关的知识吧。但分布式是一个系统设计理念,牵扯到的东西太多了。顾整理了一下大概的学习路线,后续开始按照路线的模块去更(未必按顺序),以下知识点如果都能掌握,说明你基本上在JAVA上很能吃的开了。只想吐槽以下,JAVA要学的东西太多了╮(╯▽╰)╭。

二、计算机软件发展历史

首先我们了解下计算机软件的发展历史,大概总结概括,分为c/s时代,web1.0时代和web2.0时代。

c/s时代: 富客户端方案。卖软件可赚钱。​例如 qq、影音、游戏。

1.0时代: 主要是单向信息的发布,即信息门户---广大浏览器客户端​ ,互联网内容是由少数编辑人员(或站长)定制的。

表是三大门户,新浪/网易/搜狐。新浪以新闻+广告为主,网易拓展游戏为主,搜狐延伸门户矩阵​​

2.0时代: 注重用户的交互。每个人都是内容的供稿者。 RSS订阅扮演一个很重要的作用。​​

例如:博客、播客、维基、P2P下载、社区、分享服务

时至今日,互联网的形式演变已经变成全员参与,老少皆宜的活动。因此,互联网相关的技术也是要求越来越高,参与人数的增加也让系统的负担越来越大。

三、技术架构演进史

以下为2017年天猫双11的交易指标。那么大的数据量,那么快的处理请求,显然单台机器,单个服务绝对是无法支撑的。

那么怎么办呢,我们将原本单台部署,单台处理的服务,需要进行拆分以及部署到不同的服务器中去,使其用多台机器去处理,分担压力。但是我们又要保证系统的完整性。这就是分布式的设计。接下来我们看下服务架构的演进史。

架构演进一: 早期雏形

特征:应用程序主要做静态文件读取,返回内容给浏览器。

架构演进二: 数据库开发(LAMP特长)

特征:应用程序主要主要读取数据表值,填充html模块。业务逻辑简单,写sql

架构演进三:  javaweb的雏形

特征:tomcat + servlet + jsp + mysql。一个war包打天下​

项目结构:ssh/ssm三层结构。

架构演进四:  javaweb的集群发展​

特征:硬件机器的横向复制,对整个项目结构无影响。

架构演进五:  javaweb的分布式发展

特征:将Service层单独分离出去,成为一个单独的项目jar。单独运行。​Web服务器通过rpc框架,对分离出去的service进行调用。

架构演进六:  javaweb的微服务发展​

特征:从业务角度,细分业务为微服务,每一个微服务是一个完整的服务(从http请求到返回)。​在微服务内部,将需要对外提供的接口,包装成rpc接口,对外部开放。

集群与分布式的区别

我在面试的时候,发现很多同学会把集群和分布式混淆,其实他俩完全是两个东西

分布式:纵向拆分,一个业务分拆多个子业务,部署在不同的服务器上。主要是业务层面拆分,进行业务解耦,从而提高服务高可用以及高性能。
集群:横向复制,同一个业务,部署在多个服务器上,前面通过负载均衡,起到分担压力的作用。而且这些服务器中,即使有一两个宕机也不会影响到整体业务。

\