SpringBoot为什么会使用微服务呢?
微服务架构是作为解决方案来解决单体架构的可扩展性、可独立部署和创新挑战的。它使我们能够将大型应用程序分解为具有某些指定职责的可有效管理的小组件。
SOA架构
学习微服务我们首先要了解SOA架构
SOA 全称为 Service-Oriented Architecture,即⾯向服务的架构。它可以根据需求通过⽹络对松散耦合 的粗粒度应⽤组件(服务)进⾏分布式部署、组合和使⽤。⼀个服务通常以独⽴的形式存在于操作系统进程中。
站在功能的⻆度,把业务逻辑抽象成可复⽤、可组装的服务,通过服务的编排实现业务的快速再⽣,目的:把原先固有的业务功能转变为通⽤的业务服务,实现业务逻辑的快速复⽤。 通过上⾯的描述可以发现 SOA 有如下⼏个特点:分布式、可重⽤、扩展灵活、松耦合
优点 :
抽取公共的功能为服务,提⾼开发效率
对不同的服务进⾏集群化部署解决系统压⼒
基于ESB/DUBBO减少系统耦合
缺点 :
抽取服务的粒度较⼤
服务提供⽅与调⽤⽅接⼝耦合度较⾼
SOA算是微服务的一种表现形式,但是分化的还是比较粗。一般公司里用的都是SOA。
Spring Cloud
Spring Cloud是⼀系列框架的有序集合。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基 础设施的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤ Spring Boot的开发⻛格做到⼀键启动和部署。
简而言之,微服务架构样式[1]是一种将单个应用程序开发为一组小服务的方法,每个小服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,并且可以由全自动部署机制独立部署。这些服务的集中管理几乎没有,它可以用不同的编程语言编写并使用不同的数据存储技术。
1、 微服务架构只是一个样式,一个风格。
2、 将一个完成的项目,拆分成多个模块去分别开发。
3、 每一个模块都是单独的运行在自己的容器中。
4、 每一个模块都是需要相互通讯的。 Http(Spring Cloud),RPC(Dubbo),MQ(Spring Cloud)。
5、 每一个模块之间是没有依赖关系的,单独的部署。
6、 可以使用多种语言去开发不同的模块。
7、 使用MySQL数据库,Redis,ES去存储数据,也可以使用多个MySQL数据库。
总结:将复杂臃肿的单体应用进行细粒度的划分,每个拆分出来的服务各自打包部署。