前言:
最近有个同事问我微服务和spring cloud的关系,正好记录一下。
什么是spring cloud
首先简述一下springcloud是什么,官网给出的说法是(英语不精的我谷歌翻译出来的)
Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致了样板式样,并且使用Spring Cloud开发人员可以快速支持实现这些样板的服务和应用程序。它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心以及Cloud Foundry等托管平台。
对于初入门的人来讲是很难理解这些东西的。简单来讲就是
springcloud提供一系列组件,这些组件都是相互独立的。比如注册中心eureka是一个独立运行的组件,网关gateway是一个独立运行组件,然后gateway可以注册在eureka中,也可以注册在其他第三方的注册中心中(比如阿里的nacos)。组件之间都没有必然的耦合。
什么是微服务
微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。(采摘自https://www.redhat.com/zh/topics/microservices/what-are-microservices)。
这里也说下我的理解
首先微服务是一种架构思想,没有技术限制。你可以使用springcloud全家桶,可以通过dubbo+zk+...,或者是直接通关nginx转发多个tomcat等技术构建微服务系统。相比单体架构系统主要有以下几点
- 耦合度底
- 承载能力强
- 多语言生态(可由多种语言开发多个服务)
- 部署方便(有争议)
- 可延伸性高
总结
微服务是一种架构思想,springcloud是一套利于实现微服务架构的技术。相互之间没有必然的联系。