一、基于Springcloud的微服务架构

1、微服务架构

1.1 什么是微服务?

简单的说,微服务是系统架构上的一种设计风格,核心是将传统的独立系统拆分为多个小型服务,每个小型服务可以独立部署运行,服务之间的调用通过HTTP的restfull API方式进行通信协作。 每个服务都是基于业务场景中一些耦合度业务而构建的。由于是轻量级的通信协作,这些微服务可以使用不同的语言进行开发。 例如一个电商平台,其中用户中心与订单中心可以拆分为两个微服务。

1.2 我们用微服务解决什么问题?

微服务所要解决的问题,及传统独立系统所面临的问题,如复杂性高、技术债务、部署频率低、可靠性差、扩展性差、阻碍技术创新。

  • 复杂性高:当一个项目达到一定的程度,整个项目的模块肯定很多,模块的边界模糊,依赖关系复杂不清晰,等等,这使得每次代码的更新都是非常痛苦的。
  • 技术债务:随着时间推移、需求的变更、人员的变更等,在单体应用中会形成技术站务。
  • 部署频率低:单体应用随着代码量的不断增多,项目构建和部署的时间也会变长。在传统单体应用中,每次很小的需求便更与BUG修复,都出触发整个项目的重新构建于部署,从而导致,每次部署的变更较大,BUG修复较大,导致部署出错率较大。
  • 可靠性差:整个应用中如一处出现BUG ,可能导致整个应用的崩溃。
  • 扩展性差:单体应用的扩展,只能作为整体扩展,而不能根据具体需要扩展模块进行扩展。
  • 阻碍技术创新:单体应用中一般都是用同一的技术架构与方案去解决相关问题,团队中每个人都必须使用约定的语言与开放方式,如想引入新的技术架构,非常困难。

1.3 我们如何去实现微服务?

  • 开发框架: 选择SpringCloud 作为微服务的开发框架,qspringcloud有开箱及用的特性,后面大家可以体会到,同时又丰富的文档,与活跃的社区。 重点是SpringCloud提供了一套完整的微服务框架解决方案。
  • 运行平台,推荐基于docker上部署微服务。

2 微服务开放框架-Spring Cloud

SpringCloud 是在Springboot的基础上构建的,Springboot此处不再叙述,用于快速构建分布式的通用模式的工具集。 SpringCloud有以下特点:

  • 预定优于配置:这个特点也是Springboot的特点
  • 适合各种环境。
  • 隐藏了组件的复杂性:也是Springboot的特性
  • 轻量级的组件:Eurake、Ribbon 、Zuul等
  • 组件丰富
  • 灵活

2.1 Spring Cloud 包含的常用组件

如图是springcloud 搭建微服务的常用组件:

  • Eurka: 服务的注册与发现
  • Ribbon:负载均衡
  • Feign:实现声明试REST调用
  • Hystrixc 容错与监控
  • zuul:微服务网关

下面将具体介绍每个功能组件的 下面所有实例将在Itellij IDEA 中进行开发,所有项目的构建都可以通过以下三种方式:

  • Build with Gradle
  • Build with Maven
  • Build with your IDE(STS,IntelliJ IDEA)

本文所有项目的构建 是基于第三种方式,其中开放环境是 IntelliJ IDEA

所需要的预先安装:

  • JDK1.8或者更高
  • Maven 3.0+
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐