微服务架构
微服务架构是一种架构模式或者说是一种架构风格, 他提倡将单一应用程序划分成一组小的服务, 每个服务运行在其独立的进程中, 服务之间互相协调,互相配合, 为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。
微服务优点
- 微服务只是业务逻辑的代码, 不会和HTML,CSS或其他页面组件混合
- 每个微服务都有自己的存储能力, 可以有自己的数据库, 也可以有统一数据库
微服务缺点
- 开发人员要处理分布式系统的复杂性
- 多服务之间的通信成本
微服务的技术栈
- 服务开发 Springboot、Spring、SpringMVC等
- 服务配置与管理 Netflix公司的Archaius、阿里的Diamond等
- 服务注册与发现 Eureka、Consul、Zookeeper等
- 服务调用 Rest、RPC、gPRC
- 服务熔断器 Hystrix、Envoy等
- 服务负载均衡 Ribbon、Nginx等
- 服务接口调用 Feign等
- 消息队列 Kafka、RabbitMQ、ActiveMQ等
- 服务配置中心管理 SpringCloudConfig、Chef等
- 服务路由 Zuul等
- 服务监控 Zabbix、Nagios、Metrics、Spectator等
- 全链路跟踪 Zipkin, Brave, Dapper等
- 服务部署 Docker、OpenStack、Kubernetes等
- 数据流操作开发包 SpringCloud Stream(封装与Redis, Rabbit, Kafka等发送接收消息)
- 事件消息总线 SpringCloud Bus
- ......
SpringCloud概述
SpringCloud是基于SpringBoot提供了一套微服务一站式解决方案, 包括服务注册与发现, 配置中心, 全链路监控, 服务网管, 负载均衡, 熔断器等组件, 除了基于NetFlix的开源组件做高度抽象封装之外, 还有一些选型中立的开源组件。
SpringCloud和SpringBoot区别
Springboot专注于开苏方便的开发单个微服务个体, SpringCloud是关注全局的服务治理框架。SpringCloud依赖于Springboot。
SpringCloud与Dubbo对比
Dubbo | SpringCloud | |
服务注册中心 | Zookeeper | SpringCloud NetFlix Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | SpringBoot Admin |
断路器 | 不完善 | SpringCloud NetFlix Hystrix |
服务网关 | 无 | SpringCloud NetFlix Zuul |
分布式配置 | 无 | SpringCloud config |
服务跟踪 | 无 | SpringCloud Sleuth |
消息总线 | 无 | SpringCloud Bus |
数据流 | 无 | SpringCloud Stream |
批量任务 | 无 | SpringCloud Task |
最大的区别: SpringCloud抛弃了Dubbo的RPC通信, 采用的是基于HTTP的REST方式。