【Way to Spring Cloud 1】微服务&Spring Cloud

微服务简介

微服务是一种架构风格,是开发一组小型服务的方式来作为一个独立的应用系统,每个服务都运行在自己的进程中,服务之间采用轻量级的HTTP通信机制(通常是采用HTTP的Restful API)进行通信。

这些服务都是微绕具体业务进行构建的,并且可以独立部署到生产环境上。这些服务可以用不同的语言编写,并且可以用不同的数据存储技术。

对这些服务我们只需要使用一个非常轻量级的集中式管理来进行协调。

单体应用架构

优点

  1. 便于开发测试。单个应用包含所有功能,不涉及互联互调。
  2. 便于部署。单个应用打成war包或jar包,部署至tomcat即可,运维起来比较方便。
  3. 便于整体拓展。应用负载压力大时,将该应用复制几份,部署至不同的服务器上,再通过负载均衡即可提高应用并发能力。

缺点

  1. 复杂性高。单体应用包含的模块较多,导致模块之间边界模糊、依赖关系不清晰、优化迭代会带来隐藏的缺陷,使得整个项目十分复杂。
  2. 阻碍技术创新。单体应用技术选型是在开发之前经过慎重评估后选定的,每个团队成员都必须使用相同的开发语言、持久化存储和消息系统。

微服务架构

优点

  1. 易于开发维护。一个微服务只会关注一个特定的业务功能,所以业务清晰,业务量较少。
  2. 单个微服务启动快。
  3. 局部容易修改部署。单体应用只要有修改,就得重新部署整个应用。微服务架构解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。
  4. 技术栈不受限制。可以根据项目业务和团队特点,合理选择技术栈。
  5. 按需伸缩。根据需求实现细粒度的扩展。

缺点

  1. 运维要求高。更多的服务意味着投入更多的运维。
  2. 分布式固有的复杂性。使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延时、分布式事务等都会带来问题。
  3. 接口调整成本高。微服务之间通过接口进行通信,如果修改一个微服务的API,可以所有用到这个接口的微服务都需要进行调整。

微服务架构总结

微服务的核心就是将传统的单一应用,根据业务拆分成一个一个的服务,彻底的解耦和,每一个微服务提供单一的功能模块,一个服务做一件事。

在Idea中实用Maven构建一个个独立的Module,也就是SpringBoot开发的一个个小模块,将专业的事交给专业的模块来做。比如一个大型项目可能有上百个微服务,将这些微服务集中起来构成一个大的系统,对外暴露服务进行调用。

从技术角度看就是一个小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,可以拥有自己独立的数据库。

搭建分布式微服务架构的技术栈

在这里插入图片描述
在这里插入图片描述

Spring Cloud

Spring Cloud,基于Spring Boot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。
官网:https://spring.io/projects/spring-cloud
各组件说明(中文版):https://www.springcloud.cc
SpringCloud中国社区:http://www.springcloud.cn

Spring Cloud使用Restful API实现服务之间通信。
Dubbo使用RPC(远程过程调用)实现服务之间通信。

Spring Boot和Spring Cloud的关系

Spring Boot可以离开Spring Cloud单独使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖关系。

Spring Boot专注于快速方便的开发单个个体微服务,Spring Cloud是关注全局的服务治理框架。

Spring Cloud是关注全局的服务治理框架,它将Spring Boot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章