1、基于SpringCloud的微服务架构

1、基于Springcloud的微服务架构

一、微服务架构

1.1 什么是微服务?

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

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

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

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

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

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

2 微服务开放框架-Spring Cloud

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

  • 预约优于配置:这个特色也是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+