简介
SpringColud是Spring体系中主流微服务框架,包含注册中心、服务调用、服务熔断降级限流、配置中心、服务网关、链路追踪、服务监控、分布式事务等解决方案。
单体架构-mvc
MVC:Model-数据访问层、View-视图层、Controller-业务逻辑控制层
数据访问层:用于向逻辑层提供数据来源,数据检索和持久化。
视图层:数据呈现、如网页、APP、小程序、控制台等。
业务逻辑层:实际项目业务数据处理,负责逻辑加工。
单体架构-优缺点
优点:易于开发、易于测试、易于部署、开发维护成本低。
缺点:大量数据及并发处理能力极低、内聚性过高不易拓展、单点故障等
集群架构-优缺点
优点:抗压能力强,统一入口负载均衡,流控等
缺点:所有设备全量部署相同工程,导致硬件资源浪费、需求改动风险高、困难。
服务
只要是能像其他组件提供技术支撑的系统都叫服务,如SaaS(软件即服务)、Pass(平台即服务)、Laas(基础架构即服务)。
微服务
此概念最早是MarinFowler在2014年提出,用于描述软件应用设计成独立服务的一种方式。例如,用户登录可以抽出来一个服务单独部署,订单服务、支付服务、商品服务、客服服务、积分服务也可以单独抽离,独立部署。
组件化
将独立服务部署成组件,尽量提高组件内聚性,使其发生变更降低对其他服务的影响。组件化后,每次调整只需小范围调整对应的组件,并部署即可。
去中心化
看一副图,即可明白
服务拆分原则
没有明确固定的拆分方法,记住一条原则,不管服务如何拆分,都要确定好微服务系统边界。
每个服务只关注自己的业务,做到高内聚,各个服务之间低耦合。
每个服务支持跨平台调度,如采用restful风格,利用消息队列通信等。
每个服务做到独立开发、独力测试、独力部署、独立运行。
微服务缺点
系统复杂度升高,维护成本高。
CAP理论,一致性与可用性无法同时满足。
系统开销相比于单体应用较大。
Spring Cloud简介
前面做了那么多对比与铺垫,下面看下主流的分布式解决方案Spring Cloud。
上图为SpringCloud对比,Dubbo为阿里开源的分布式调度组件,后来被apache收购,采用RPC协议通信,底层是netty socket通信。相信通过上图的对比,很容易看出二者的差别。