单体架构和分布式架构
在学习微服务之前,我们先回顾下我们平时使用的单体架构。什么,你不了解单体架构?那还是先回去修炼修炼吧~
单体架构,简单来说,就是将业务的所有功能集中在一个项目中开发,打成一个包进行部署。显而易见,这样的好处是架构简单、易于开发和部署。那么单体架构有什么缺点呢,它的缺点就是耦合度太高,不容易扩展,只适合小型项目。
而分布式架构,就是专门为大型项目而生的。分布式架构通常会根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。分布式架构降低了系统的耦合度,提高了扩展性,但不可避免的增加了系统的复杂度,难度大,成本高。所以,还是要根据具体的业务背景选择合适的架构哦。
什么是微服务
说起微服务,可能很多人首先会想到spring cloud,那么你是否认为微服务技术就等于spring cloud呢?
微服务其实是一种良好的分布式架构方案,在拆分服务的过程中,通常会产生许多问题需要去解决,而spring cloud只是微服务的一种实现,它主要为微服务架构中的服务治理提供了解决方案,一个完整的微服务技术包括的可不仅仅是spring cloud哦。
微服务架构特征:
- 单一职责:微服务拆分力度更小,每一个服务都对应唯一的业务能力
- 面向服务:微服务对外暴露业务接口
- 自治:团队独立、技术独立、数据独立、部署独立
- 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
微服务框架
微服务大体架构如下图所示,可以包括服务集群、注册中心、配置中心、路由网关、数据库、分布式缓存及搜索、日志服务、监控、持续集成、交付、部署等。
微服务技术栈
根据服务的侧重和特点,我们可以把微服务的技术栈分为以下几类:
- 微服务治理——业务核心模块,包括服务注册与发现、配置管理、远程调用、网关路由、负载均衡、流量控制、熔断降级等
- 缓存技术——redis集群、主从复制、数据同步等
- 搜索技术——es集群等
- 异步通信技术——MQ消息模型、常用消息队列、数据可靠性等
- DevOps——docker、k8s、jenkins等
嗯,很好,看了一眼,是不是有一种从入门到放弃的想法。
我知道你很急,但是你先别急,只要学不死,就往死里学。我们一步一个脚印的去学习就可以了,继续往下看吧。
微服务技术对比
首先,Dubbo可以说是来凑数的,它并不是一个完善的微服务技术栈,它的核心功能是为服务远程调用,注册中心推荐使用zookeeper,其它功能就比较少了。Alibaba开源项目,贡献给了apache。
SpringCloud,属于Spring家族,可以说是最火的微服务技术框架,它其实并不是新的技术,而是集各家所长,基于SpringBoot的自动装配,将各种开源的微服务功能组件整合起来,形成了一套开箱即用的微服务技术框架。它包含了注册中心、配置中心、远程调用、服务网关等一整套完善的组件。
SpringCloudAlibaba,是阿里巴巴在SpringCloud的基础上开发的一个微服务技术框架,它实现了SpringCloud的标准,属于SpringCloud的一部分,当然,自家的Dubbo肯定也是不会落下的,它同时兼容了Dubbo和SpringCloud,推荐使用。
还有许多公司也有自己开源的微服务技术框架,比如腾讯的SpringCloudTencent等,就不一一介绍了。
SpringCloud和SpringBoot版本对应关系
SpringCloud底层基于SpringBoot做了自动装配,它们是有兼容关系的。
以下是官网截图,截止至2023.04.20