Spring Cloud (1) 微服务基础

Spring Cloud 是Spring全家桶中一套完整的微服务解决方案框架。在学习该框架之前,首先我们要了解什么是微服务。让我们从网站架构的演变来认识微服务架构及其优点吧!

网站架构经历了四个变化:传统架构 => 分布式架构 => SOA架构 => 微服务架构。

一、传统架构(单点应用)

基于SSH或SSM框架,属于单点应用。所有的业务都在一个项目中,除了开发时的分层(MVC、Service、Manager)外,项目不做任何划分,完整地部署在单台主机。

优点:适合个人或小团队的小规模项目,部署方便

缺点:项目耦合度高,只有一台机器,可用性低。项目规模大时多人开发容易产生代码冲突。

二、分布式架构(按项目拆分)

基于传统架构演变,将传统项目按模块拆分成多个子项目(包含业务逻辑层和视图层等,较完整),如会员项目、订单项目。每个项目有独立的数据库、缓存等。

优点: 相对于传统架构,项目粒度更细,适合于企业开发

注意,Maven聚合项目(如web、service、dao分为多模块)未必属于分布式架构,因为聚合项目可能打成一个war包进行部署。

三、SOA架构

SOA架构即面向服务架构。将共同的业务逻辑拆分成多个服务(接口),作为独立的项目进行部署(仅有业务逻辑,没有视图层)。服务间通过RPC远程过程调用技术进行通讯和相互调用。基于SOAP(简单对象访问协议)或ESB(消息总线)实现, 底层基于Http(s)协议+重量级XML数据交换格式。

优点:服务复用,减少代码量,适合大项目的团队开发

四、微服务架构

微服务架构基于SOA架构演变而成,继承了SOA架构的优点,同时解决了SOA架构的一些缺点:

  1. SOA依赖于中心化服务发现机制
  2. SOA架构采用SOAP协议(Http+XML),而XML是重量级的数据交换格式,冗余数据多,不利于传输
  3. SOA架构缺少服务管理手段和治理设施

微服务架构比SOA架构的粒度更精细,适合多人开发,使团队每个人更专注于自己的服务开发,能够提高效率。每个服务独立部署(如Docker等容器,有独立的数据库、Redis等),各服务间互不影响。微服务架构使用restful风格的API,采用Http+json格式进行传输,因此更加轻量,适合互联网公司的敏捷开发与产品版本的快速迭代。

优点:细粒度,轻量级,稳定性,方便进行服务治理,适合敏捷开发和版本快速迭代,提高开发效率

发表评论

电子邮件地址不会被公开。