概述
什么是微服务?
通常而言,微服务架构指的是一种架构模式或者说一种架构风格;它提倡的是将单一应用程序划分成一组小的服务,每个微服务提供单个业务功能,一个服务做一件事。
- 每个服务独立运行于自己的进程,服务之间互相协调、互相配合;
- 服务之间采用轻量级的通信机制(通常是HTTP资源的API);
- 每个服务都围绕具体的业务进行构建,并且能够被独立地部署到生成环境;
- 每个服务独立管理,可使用不同的语言进行编写服务,也可以采用不同的数据存储方式。
微服务的优缺点
优点
- 符合高内聚、低耦合的程序设计思想,代码容易聚焦在一个指定的业务功能上;
- 有利于团队管理、协助,微服务可被2-5人小团队独立开发,独立管理,再进行团队与团队之间的协作;
缺点
- 分布式系统的技术性、复杂性要求较高;
- 部署、运维、管理难度随着服务的数量增加而增大;
- 服务间的通讯成本、数据的查询与一致性
微服务的技术栈有哪些?
- 服务开发 —— SpringBoot、SpringMVC、Spring
- 服务配置与管理 —— Netflix公司的Archaius、阿里的Diamond
- 服务注册与发现 —— Eureka、Zookeeper
- 服务调用 —— Rest、RPC、gRPC
- 服务熔断器 —— Hystrix、Envoy
- 负载均衡 —— Ribbon、Nginx
- 消息队列 —— Kafka、RabbitMQ、ActiveMQ
- 服务配置中心管理 —— SpringCloudConfig
- 服务路由 —— Zuul
- 服务监控 —— Zabbix、Nagios、Metrics
- 服务部署 —— Docker、OpenStack
- 事件消息总线 —— Spring Cloud Bus
Spring Cloud是什么
Spring Cloud是一个分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。
Spring Boot 和Spring Cloud,谈谈对他们的理解
- Spring Boot专注于快速方便的开发单个个体微服务。
- Spring Cloud则是专注于全局的微服务协调整体治理框架。它是将Spring Boot开发的一个个单体微服务整合并管理起来。
Spring Cloud和Dubbo有那些区别?
活跃度
由于Dubbo再2012年暂停5年直到2017年重新开启维护期间,Dubbo的社区热度降低了不少;而Spring Cloud也正是在这期间奠定了很好的基础,目前社区活跃度,Spring Cloud占优。
对比
\ | Dubbo | Spring Cloud |
---|---|---|
服务注册中心 | ZooKeeper | Eureka |
服务调用方式 | RPC | REST API |
服务监控 | Dubbo-monitor | Spring Boot Admin |
熔断器 | \ | Spring Cloud Netflix Hystrix |
服务网关 | \ | Spring Cloud Netflix Zuul |
分布式配置 | \ | Spring Cloud Conifg |
服务跟踪 | \ | Spring Cloud Sleuth |
消息总线 | \ | Spring Cloud Bus |
数据流 | \ | Spring Cloud Stream |
批量任务 | \ | Spring Cloud Task |
… | … | … |
区别
1 通讯方式
Spring Cloud 选用了REST API作为服务调用方式,而Dubbo选择使用RPC;
两种方式各有优劣,RPC的性能更好,但使用REST则更为灵活;
2 治理方式
作为微服务整体的治理方案,Dubbo所提供的治理方式较少,仅提供基本的服务通讯、注册和监控。额外的网关、配置、跟踪、熔断器等都使用其他厂家提供的技术方案。而Spring Cloud则可以提供一整套的技术方案。
简单理解就是:Dubbo使用的治理方案是自行组装式,而Spring Cloud为品牌一站式。
总结
阿里2017继续维护的Dubbo的技术总负责人刘军曾表示:Dubbo与Spring Cloud并不是完全的竞争关系,两者所解决的领域并不一样;Dubbo的定位始终是一款RPC框架,而Spring Cloud的目标是微服务架构下的一站式解决方案。
为什么选用Spring Cloud?
选型依据
- 整体解决方案和框架的成熟度比较完善
- 社区热度较好
- 可维护性较高
- 学习曲线持续增长
各大型公司使用的微服务架构
- 阿里 —— Dubbo/HSF(停更5年)
- 京东 —— JSF(由HSF改造)
- 新浪微博 —— Motan
- 当当网 —— DubboX
各微服务框架对比
Spring Cloud 学习
官网:https://spring.io/projects/spring-cloud
中文文档:https://www.springcloud.cc/spring-cloud-dalston.html
Spring Cloud中国社区:http://springcloud.cn/
Spring Cloud中文网:https://www.springcloud.cc/