WEB应用的架构发展:

  1. 单体架构
在web应用的早期,我们把说有的业务都放在一个项目中。将这个含有所有业务的项目打包成一个War包放在tomcat中。即一个项目就只存在一个服务器中。
下图为单体架构。
解释:
1.一个台服务器中可以有一个或者多个tomcat,我们可以通过修改tomcat的端口号同时启动多个tomcat。
2.一个tomcat中可以有多个war包,即多个项目或多个应用。每个应用之间是相互独立的。应用直接无法通信。
例如,淘宝有一个war包,美团有一个war包。他们都是相互独立的应用。

微服务打在一个jar 多个微服务打成一个war包_java

  1. MVC(纵向拆分)和后台三层结构
    MVC
由于web应用的耦合性高、业务越多类越多、代码越多不易于开发。后面就出现了MVC架构。
M:Model 模型,专注于数据和业务。
V:View  视图,专注于视图,即界面的结构、行为和美化。
C: Controller 控制器,专注于模型和视图直接的适配和控制。
将web应用的开发分为了3层。
解释:
1.以前在MVC架构的出现,都是在servlet中直接编写前端代码,通过字符拼接的方法得到前端页面返回给用户。(servlet相当于现在的Controller)
2. 现在,
      - MVC架构中前端页面发起请求
      - Controller层接收前端的请求
      - Controller处理得到结果,将结果封装成Model(数据模型)
      - Controller指定View(视图模板),渲染数据。得到前端页面。注:这里的视图模板可以为JSP页面,也可以是其他的视图模板。
      - 返回页面给用户。

微服务打在一个jar 多个微服务打成一个war包_tomcat_02

后台三层架构

后台的三层架构为Controller层、service层、Dao层:
Controller层:负责接收请求、调用服务(service)、返回数据模型(model)和选择视图模板(view)。(可以称作控制器、路由等)
service层:主要负责业务处理。处理数据,调用持久化层(Dao),将结果返回给controller层。
Dao层:主要负责持久化数据,即将数据存储到磁盘、数据库中。

下图为后台三层架构和MVC结构

微服务打在一个jar 多个微服务打成一个war包_MVC_03

  1. 模块化(横向拆分)
为了区别业务和系统功能,就有了模块化。可以将一个系统分为多个功能模块。不同的功能模块负责不同的业务。

微服务打在一个jar 多个微服务打成一个war包_SpringCloud_04

  1. 微服务架构(业务拆分,服务细分)
拆分前:订单--交易--支付--物流--评论(一个购物服务)
拆分后:订单服务、交易服务、支付服务、物流服务、评论服务。将这些服务相互调用实现购物服务的功能。
每个服务专注于提供自己的这个服务。
解释:
1.实际就像将上面单个应用的中模块一一拆分为一个个的服务,微服务(微应用)。

微服务打在一个jar 多个微服务打成一个war包_MVC_05

  1. 分布式
将不同的服务放在不同的服务其或者相同服务器的不同端口(即不同域中)。通过不同域中服务的相互调用实现某项业务功能,就是分布式。
分布式要解决的问题。
- 服务的如何注册?
- 服务的如何发现?
- 服务间如何调用?
- 服务间如何通信?
- 如何路由?
- 服务突然崩了怎么办?
- 并发量太大怎么办?
- 等一些列问题

下图为服务间的调用图(未用服务中心):

微服务打在一个jar 多个微服务打成一个war包_tomcat_06

下面两个图为使用了服务中心的架构图:

微服务打在一个jar 多个微服务打成一个war包_SpringCloud_07


微服务打在一个jar 多个微服务打成一个war包_SpringCloud_08