1. 微服务简介
1.1 什么是微服务架构
- 微服务架构是系统架构上的一种设计风格
- 将大系统拆分成N个小型服务
- 这些小型服务都在各自的线程中运行
- 小服务间通过HTTP协议进行通信
- 有自己的数据存储、业务开发、自动化测试和独立部署机制
- 可以由不同语言编写
小结:微服务架构的思想,不只是停留在开发阶段,它贯穿了设计,研发,测试,发布,运维等各个软件生命周期。
2. 架构体系
架构样例:
2.1 微服务发布--持续集成
3. 微服务架构九大特性
- 服务组件化
-- 组件是可独立更换、升级的单元。就像PC中的内存,CPU一样。 - 按业务组织团队
-- 要求人员全栈技能 - 做“产品”的态度
-- 对整个产品生命周期负责,而不是做“项目”交付态度 - 智能端点与哑管道
-- 微服务间的通讯方式:
--- HTTP的RESTful API
--- MessageMQ消息队列- 去中心化治理
--不是每一个问题都是钉子,不是每一个解决方案都是锤子。 - 去中心化数据管理
--独立维护各服务数据存储,尽量使服务间“无事物”调用,通过补偿机制维护数据一致性问题 - 基础设施自动化
-- 自动化测试
-- 自动化部署 - 容错设计
-- 每个服务实现监控和日志组件,比如服务状态,断路器状态,吞吐量,网络数据等关键数据仪表盘 - 演进式设计
--初期单体,逐步拆分,抽取公共组件
4. 微服务选型
Dubbo 是阿里多年构建生产级分布式微服务的技术结晶,服务治理能力非常丰富,在国内技术社区具有很大影响力,目前 github 上有超过 16k 星。Dubbo 本质上是一套基于 Java 的 RPC 框架,当当 Dubbox 扩展了 Dubbo 支持 RESTful 接口暴露能力。
Dubbo 主要面向 Java 技术栈,跨语言支持不足是它的一个弱项,另外因为治理能力太丰富,以至于这个框架比较重,完全用好这个框架的门槛比较高,但是如果你的企业基本上投资在 Java 技术栈上,选 Dubbo 可以让你在服务框架一块站在较高的起点上,不管是性能还是企业级的服务治理能力,Dubbo 都做的很出色。
- 新浪微博开源的 Motan(GitHub 4k stars)也不错,功能和 Dubbo 类似,可以认为是一个轻量裁剪版的 Dubbo。
5. Spring Cloud 介绍
Spring Cloud技术栈提供了分布式系统和微服务中所需要的约大多数公共模块和功能
Spring Cloud的出现,可以说是对微服务架构巨大的支持和强有力的后盾
- 使用Spring Cloud就像直接购买品牌机一样,在Spring 社区的整合下,做了大量的兼容性测试,拥有更好的稳定性。
6. Spring Cloud 版本管理
http://projects.spring.io/spring-cloud/
7. Spring Cloud 组件
- 微服务基础
- 微服务构建 Spring Boot
- 服务治理 Spring Cloud Eureka
- 客户端负载均衡 Spring Cloud Ribbon
- 服务容错保护 Spring Cloud Hystrix
- 声明式服务调用 Spring Cloud Feign
- Api网关服务 Spring Cloud Zuul
- 分布式配置中心 Spring Cloud Config
- 消息总线 Spring Cloud Bus
- 消息驱动的微服务 Spring Cloud Stream
- 分布式服务跟踪 Spring Cloud Sleuth