一、微服务
1. 微服务简介
将单一应用程序划分成多个微小的服务, 每个服务完成单一功能,这样的每个服务叫做一个微服务
2. 微服务架构
是一种架构模式
- 将应用的每个功能放到一个独立的服务中,每个服务对应一个进程
- 使用一组小型服务来开发单个应用,每个服务运行在独立的进程中,服务与服务之间通过HTTP的方式进行互相通信
- 每个服务都是一个可独立替换和独立升级的软件单元, 并且能够被独立的部署到生产环境
优点:
- 分而治之:单个服务功能内聚,复杂性低,方便团队的拆分和管理
- 可伸缩:能够单独的对指定的服务进行伸缩
- 迭代周期短:支持快速的迭代开发
- 独立部署,独立开发
缺点:
- 运维要求高:应用流程通常跨多个微服务,不易进行问题的定位
- 分布式的复杂性:微服务需要使用分布式,而由于分布式本身的复杂性,导致微服务架构也变得复杂起来
二、SpringCloud
1. 简介
SpringCloud是一套完整的微服务解决方案,基于SpringBoot框架
SpringCloud是一系列框架的有序集合,它利用SpringBoot的开发便利性简化了分布式系统的开发
SpringCloud为开发人员提供了快速构建分布式系统的一些工具,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
2. 技术栈
微服务内容 | 技术实现 |
---|---|
服务的注册与发现 | Eureka |
服务的接口调用 | Feign |
服务的熔断器 | Hystrix |
服务网关 | Zuul |
负载均衡 | Ribbon |
服务监控 | Zabbix |
全链路跟踪 | ZipKin |
配置管理 | Archaius |
服务的配置中心 | SpringCloud Config |
数据流操作 | SpringCloud Stream |
事件、消息总线 | SpringCloud Bus |
微服务之间通过HTTP的方式进行互相通信,此时Web API的设计就显得非常重要,会使用Restful API设计方式