一、单体应用

1.1. 什么的单体应用

  • 项目所有的资源都在一个应用中,打包成一个war包,使用一个tomcat去运行,运行在一个进程中

spring cloud概念

1.2. 单体应用的问题

  • 对于高并发、大数据量 ,处理不占优势
  • 开发时间越长,代码越多,项目越臃肿,杂乱无章
  • 模块与模块,业务与业务耦合高 :比如一个模块挂了,其他模块也挂,一个模块升级,其他模块也要重启
  • 技术选型单一,数据库选型单一
  • 项目体积庞大的时候,会造成,编译慢,项目打包等也慢。
  • 二次开发,维护难
  • 新的程序员对项目需要花很长时间去熟悉,成本高。
  • 不方便局部拓展,只能整体做集群(扩容)

1.3. 单体应用的优点

  • 项目初期,项目的搭建,开发都比较快
  • 技术成本低,对程序员的要求相对低 , 开发成本较低
  • 项目的部署相对简单 - 就一个tomcat

二、微服务架构

2.1.什么是微服务架构

  • 微服务就是把一个大的系统,拆分成多个小的服务,每个微服务只专注一个业务 ,每个服务有各自的进程, 微服务之间使用网络通信协议进行数据交互(通常是基于HTTP的RESTful API)
    spring cloud概念

2.2.微服务的优点

  • 服务之间相对解耦合:用户的重启(宕机),不影响其他服务
  • 单看某个微服务,业务简单,方便开发维护
  • 技术选型多样化,数据库选型多样化
  • 扩展性强:方便局部扩展,可以针对某个微服务做扩容(集群),或缩容
  • 一个程序员(一个组)只需要关注一个微服务即可 ,简单。特别是新的程序员上手快。
  • 方便持续集成,持续交互,敏捷开发。

2.3.微服务缺点

  • 技术要求高,对程序员要求比较高
  • 项目的构建相对复杂,开发成本高,资金成本高
  • 部署麻烦,需要借助一些自动化部署工具
  • 微服务之间的通讯会有延迟,一定程度上来说因影响性能

三、SpringCloud简介

3.1.什么是SpringCloud

  • Spring Cloud是一个基于Spring Boot实现的服务治理工具包,提供了一系列组件可以很方便的实现微服架构的基础搭建,和微服务的管理与协调工作,是一个成熟的微服务架构落地解决方案。

3.2.服务通信方式

  • RPC: Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型。
  • Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。现在热门的Rest风格,就可以通过http协议来实现, SpringCloud基于Http。

3.3.SpringCloud和Dubbo的区别

  • Dubbo是RPC框架 : 通信方式基于原生的TCP , 得配合其他的框架一起使用,如使用Zookeeper做注册中心
  • Dubbo只支持Java
  • SpringCloud是一系列微服务解决方案
  • Dubbo基于tcp通信
  • SpringCloud基于Http
  • Dubbo在通信方面的性能高于SpringCloud
  • SpringCloud使用简单
  • Dubbo相对麻烦一点

相关文章: