第1章 基础知识
1.什么是微服务架构
2.与单体系统的区别
3.如何实施微服务
1.服务组件化
2.按业务组织团队
3.做"产品"的态度
4.智能端点和哑管道
5.去中心化治理
6.去中心化管理数据
7.基础设施自动化
8.容错设计
4.为什么选择Spring Cloud
服务治理:
阿里巴巴开源的Dubbo和当当网在其基础上扩展的DubboX、Netflix的Eureka、HashiCorp的Consul等;
分布式配置管理:
百度的Disconf、Netflix的Archaius、360的QConf、Spring Cloud 的Config、淘宝的Diamond等;
批量任务管理:
当当网的Elastic-Job、LinkedIn的Azkaban、Spring Cloud的Task等;
服务追踪:京东的Hydra、Spring Cloud的Sleuth、Twitter的Zipkin等。
5.Spring Cloud简介
Spring Cloud是一个基于 Spring Boot 实现的微服务架构开发工具。它为微服务中涉及的配置管理、服务治理、断路器、智能路由、
微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
Spring Cloud 包含了多个子项目,如下:
1.Spring Cloud Config
配置管理工具,支持使用git存储配置内容,可以使用它实现应用配置的外部化存储,并支持客户端配置刷新、加密/解密配置内容等。
2.Spring Cloud Netflix
核心组件,对多个Netflix OSS 开源套件进行整合。
a)Eureka
服务治理组件,包含服务注册中心、服务注册与发现机制的实现。
b)Hystrix
容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力。
c)Ribbon
客户端负载均衡的服务调用组件。
d)Feign
基于Ribbon和Hystrix的声明式服务调用组件。
e)Zuul
网关组件,提供智能路由、访问过滤等功能。
f)Archaius
外部化配置组件。
3.Spring Cloud Bus
事件、消息总线,用于传播集群中的状态变化或事件,以触发后续的处理,比如用来动态刷新配置等。
4.Spring Cloud Cluster
针对ZooKeeper、Redis、hazelcast、Consul的选举算法和通用状态模式的实现。
5.Spring Cloud Consul
服务发现与配置管理工具。
6.Spring Cloud Stream
通过Redis、Rabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接收消息。
7.Spring Cloud AWS
用于简化整合Amazon Web Service的组件。
8.Spring Cloud Security
安全工具包,提供在Zuul代理中对OAuth2客户端请求的中继器。
9.Spring Cloud Sleuth
Spring Cloud应用的分布式跟踪实现,可以完美整合Zipkin。
10.Spring Cloud Zookeeper
基于Zookeeper的服务发现与配置管理组件。
11.Spring Cloud Starters
Spring Cloud 的基础组件,它是基于Spring Boot 风格项目的基础依赖模块。
12.Spring Cloud CLI
用于在Groovy中快速创建Spring Cloud应用的Spring Boot CLI插件。
13.Spring Cloud Cloudfoundry
与Pivotal Cloudfoundry的整合支持。
6.版本说明
Spring Cloud 不像 Spring 社区中其他一些项目那样相对独立,它是一个拥有诸多子项目的大型综合项目,可以说是对微服务架构解决方案
的综合套件组合,其包含的各个子项目也都独立进行着内容更新与迭代,各自维护着自己的发布版本号。
当一个Spring Cloud 项目的发布内容积累到临界点或者一个严重bug解决可用后,就会发布一个"service releases"版本,简称SRX版本。