一、基于SpringCloud的微服务架构
一、基于Springcloud的微服务架构1、微服务架构1.1 什么是微服务?简单的说,微服务是系统架构上的一种设计风格,核心是将传统的独立系统拆分为多个小型服务,每个小型服务可以独立部署运行,服务之间的调用通过HTTP的restfull API方式进行通信协作。 每个服务都是基于业务场景中一些耦合度业务而构建的。由于是轻量级的通信协作,这些微服务可以使用不同的语言进行开发。 例如
·
一、基于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+
更多推荐
已为社区贡献1条内容
所有评论(0)