目录
前言
这篇文章作为我学习SpringCloud的第一课,先来扫盲,再来讲解技术
注意:本扫盲贴的内容,我写的都要背熟,要很熟悉的说出来,不要看了就忘。 |
什么是微服务?
微服务提倡将单一应用拆分成一组小服务,每个服务在自己独立的进程中运行。
这就是微服务,例如淘宝,商品,订单,付款等等,如果都做在一起,那么一个模块有问题,势必会影响其他的模块,而且耦合度也高,现在使用微服务技术,把淘宝拆分成商品系统,订单系统,付款系统等等,这样一个偌大的淘宝就拆分成了一组小服务,耦合度大大降低。
微服务的优缺点是什么?
微服务的优点:
- 每个服务足够小,聚焦于一个业务功能或需求
- 代码开发简单,效率高,一个服务只专注于一个功能模块
- 微服务可以小团队开发,2~5人的小团队
- 松耦合,每个小服务都有意义,无论是开发阶段还是部署阶段
- 微服务可以使用不同的语言开发
- 易于和第三方服务集成,比如Jenkins,Hudson,Bambook
- 微服务易于被一个开发人员理解,修改,维护,小团队只需要专注于自己的工作
- 微服务允许你使用融合最新技术
- 微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面组件混合
- 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库
微服务的缺点:
- 开发人员要处理分布式系统的复杂性
- 微服务数量多,运维难度增加
- 系统部署依赖
- 各个微服务之间通信的成本增加
- 数据的一致性问题
- 系统集成测试
- 性能监控
微服务之间是如何通讯的?
SpringCloud和Dubbo有哪些区别?
这个区别只有自己使用过两种服务之后才能真正明白。
我目前所知,SpringCloud很强,而且更新的很快。Dubbo是阿里的,断更了5年,现在虽然重启了更新,但还是更新的慢,所以我打算先学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和SpringBoot的关系?
- SpringBoot是微观的,只关注于一个服务的实现。而SpringCloud不同,SpringCloud是分布式微服务的一站式解决方案,它关注的是宏观的。
- SpringBoot不依赖于SpringCloud,而SpringCloud依赖于SpringBoot。我举个栗子,SpringBoot就是医院的科室,可以是耳喉鼻科,可以是心脏科,可以是骨科。而SpringCloud就是医院。科室可以不依赖医院,就是小诊所。而医院不能没有科室。这就是二者的关系。
什么是服务熔断?什么是服务降级?
微服务的技术栈有哪些?
微服务条目 | 技术 |
---|---|
服务开发 | SpringBoot,Spring,SpringMVC |
服务配置与管理 | Archaius,Diamond |
服务注册与发现 | Eureka,Consul,Zookeeper |
服务调用 | Rest,RPC,gRPC |
服务熔断器 | Hystrix,Envoy |
负载均衡 | Ribbon,Nginx |
服务接口调用 | Feign |
消息队列 | Kafka,RabbitMQ,ActiveMQ |
服务配置中心管理 | SpringCloudConfig,Chef |
服务路由(API网关) | Zuul |
服务监控 | Zabbix,Nagios,Metrice,Spectator |
全链路追踪 | Zipkin,Brave,Dapper |
服务部署 | Docker,OpenStack,Kubernetes |
数据流操作开发包 | SpringCloud Stream |
时间消息总线 | SpringCloud Bus |