一、微服务和微服务架构
虽然网上答案一大堆,但是我理解不够深刻,先埋个坑,后面再解答。
二、微服务的优缺点
我浅显的理解微服务就是将原来大的功能拆分成小的功能点。既然功能拆的小了,优缺点就从这个出发去理解。
优点:
- 功能拆的小了,业务逻辑相对就简化了。去实现这个业务逻辑,上手难度就降低了。
- 拆成了微服务,功能解耦。易于小团队开发,方便测试。
- 微服务可以独自成为一个系统,这个要看你服务拆分的粒度。方便部署,也利于运维。
缺点:
- 虽然业务逻辑简化了,但是并不意味着技术也简化了。微服务带来了分布式系统的技术栈。分布式技术栈多、深、难。
- 系统部署依赖,服务间通信成本增加。
- 数据一致性问题、系统性能监控等问题
三、微服务的技术栈
| 功能 | 实现技术 |
|---|---|
| 服务开发 | springboot、springboot、spring |
| 服务注册与发现 | Zookeeper、Eureka、Consul |
| 服务配置与管理 | Archaius、Diamond |
| 服务调用 | Rest、RPC、gRPC |
| 服务熔断器 | Hystrix、Envoy |
| 负载均衡 | Ribon、Ngix |
| 服务配置中心管理 | springcloudconfig、Chef |
| 服务路由(API网关) | Zuul |
| 服务监控 | Zabbix、Nagios |
| 服务追踪 | Zipkin、Brave、Dapper |
| 服务部署 | Docker、OpenStack、Kubernets |
| 消息队列 | Kafka、MQ |
| 数据流操作开发包 | springcloudstream |
| 事件消息总线 | springcloudbus |
四、springcloud是什么
用springcloud中文网的一句话形容:微服务架构集大成者,云计算最佳业务实践
下面用官网的原话解释下:
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。
Spring Cloud专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。
(1)分布式/版本化配置
(2)服务注册和发现
(3)路由
(4)service - to - service调用
(5)负载均衡
(6)断路器
(7)分布式消息传递
套用官网的图:
五、springcloud与springboot什么关系
- springboot可以离开springcloud独立使用去开发项目。
- springcloud不能离开springboot
六、springcloud VS dubbo
| 功能 | Dubbo | SpringCloud |
|---|---|---|
| 服务注册中心 | Zookeeper | Eureka |
| 服务调用方式 | RPC | Reatful风格接口 |
| 服务熔断器 | 不完善,服务降级 | Hystrix |
| 服务网关 | 无 | Zuul |
| 分布式配置 | 无 | springcloud config |
| 服务追踪 | 无 | springcloud sleuth |
| 消息总线 | 无 | springcloud bus |
| 数据流 | 无 | springcloud stream |
| 批量任务 | 无 | springcloud task |