1.微服务技术栈
微服务条目 | 落地技术 |
服务开发 | SpringBoot,Spring,SpringMVC |
服务配置与管理 | NetFlix公司的Archaius,阿里的Diamond |
服务注册与发现 | Eureka,Consul,Zookeeper |
服务调用 | Rest,RPC,gRPC |
服务熔断器 | Hystrix,Envoy |
负载均衡 | Ribbon,Nginx |
服务接口调用(客户端调用服务的简化工具) | Feign |
消息队列 | Kafka,RabbitMQ,ActiveMQ |
服务配置中心管理 | SpringCloudConfig,Chef |
服务路由(API网关) | Zuul |
服务监控 | Zabbix,Nagios,Metrics,Specatator |
全链路追踪 | Zipkin,Brave,Dapper |
服务部署 | Docker,OpenStack,Kubernetes |
数据流操作开发包 | SpringCloud Stream(封装与Redis,Rabbit,Kafka等发送接收消息) |
事件消息总线 | SpringCloudBus |
2.SpringCloud
2.1 简介
SpringCloud,基于SpringBoot提供了一套微服务解决方案(是一种生态),包括服务注册与发现、配置中心、全链路监控、服务网关、负载均衡、熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件
SpringCloud利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等,他们都可以用SpringBoot的开发风格做到一键启动和部署。
SpringBoot并没有重复造轮子,它只是将目前各家公司开发的比较成熟,经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂,易部署和易维护的分布式系统开发工具包
SpringCloud是分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶
2.2 SpringCloud和SpringBoot的关系
SpringCloud协调微服务,SpringBoot构建微服务
- SpringBoot专注于快速方便的开发单个个体微服务。即把一个个项目打包成jar包放到服务器上运行
- SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等集成服务
- SpringBoot可以离开SpringCloud独立使用,开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系
- SpringBoot专注于快速、方便地开发单个个体微服务,SpringCloud关注全局的服务治理框架
2.3 SpringCloud与Dubbo区别
SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式
解决的问题域不一样:Dubbo的定位是一款RPC框架,SpringCloud的目标是微服务架构下的一站式解决方案
参考书:
https://www.springcloud.cc/spring-cloud-netflix.html
SpringCloud中文网:https://www.springcloud.cc/