历史
微服务:Martin Fowler 在2014 年写的一篇文章《MicroServices 》中提出微服务
Spring:Rod Johnson于2004年发布了Spring Framework,2013 年Spring 项目被转到VMware投资的 Pivotal 软件公司
Netflix:1997年在美国成立的一家在线视频公司,开源了Netflix OSS
官网:https://spring.io/projects/spring-cloud
Spring Cloud版本:版本名称来自于伦敦地铁站名
与Apache Dubbo对比
1、Dubbo缺少统一配置、API网关、链路追踪等功能模块
2、Dubbo基于RPC,不能跨语言
3、Spring Cloud社区更活跃
与Google Kubernetes对比
Spring Cloud优点:有大量现成的类库和资源,开发者友好
Spring Cloud缺点:需要在代码中关注微服务的功能点
Kubernetes优点:支持多种语言,在容器管理上提供了微服务的功能
Kubernetes缺点:学习成本高,DevOps友好
Spring Cloud 组件
1、Spring Boot
2、Spring Cloud Netflix(封装于Netflix OSS)
Eureka:服务注册与发现,也可以用zookeeper、Consul
Ribbon:负载均衡
OpenFeign:服务调用
Zuul:服务网关
Hystrix:限流熔断
3、Spring Cloud Config:配置中心
4、Spring Cloud Sleuth:调用链追踪(链路监控)
5、Spring Cloud Stream:消息队列操作,支持Kafka、RabbitMQ
6、Spring Cloud Bus:消息总线,配合消息队列,实现一点发出的事件能被所有节点监听到
7、Spring Boot Admin:提供UI界面,管理和监控Spring Boot应用
8、Spring Boot Security:封装于Spring Security
另有:Spring Cloud Consul(封装于Hashicorp Consul)、Spring Cloud Zookeeper(封装于Apache Zookeeper)
信息流:服务网关(Service Gateway) -> 前端服务(Edge Service,边缘服务)-> 后端服务(Middle Tier Service,中间层服务)
服务注册中心:前端服务 和 后端服务 在注册中心注册自己的服务;服务网关在注册中心发现前端服务,前端服务在注册中心发现后端服务
前端服务:负责数据的聚合 和 裁剪
Eureka
详见:https://www.jianshu.com/p/9cd64b8b67da
Ribbon 与 OpenFeign
详见:https://www.jianshu.com/p/758138033b21
Config
详见:https://www.jianshu.com/p/f6b05dcb4e28
Zuul
详见:https://www.jianshu.com/p/78378ab8ab93
Hystrix
详见:https://www.jianshu.com/p/d372f4b8f44d