个人学习笔记
微服务架构4个核心问题?
- 服务很多,客户端怎么访问
- 服务之间如何通信
- 服务如何治理
- 服务挂了怎么办
解决方案:
1、springcloud Netflix 一站式解决方案
- 访问api:zuul组件
- 通信:feign http通信方式,同步,阻塞
- 治理-服务注册与发现:eureka
- 挂了:熔断机制 hystrix
2、Apache dubbo zookeeper 半自动,需要整合别人的
- 访问api:没有,找第三方组件,或者自己实现
- 通信:dubbo
- 治理-服务注册与发现:zookeeper
- 挂了:借助hystrix
3、springcloud alibaba 一站式解决方案
微服务优点:
- 微服务只是业务逻辑代码,不会和HTML,css或其他界面混合
- 没个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一数据库管理
微服务缺点:
- 开发人员要处理分布式系统的复杂性
- 多服务运维难度,随着服务的增加,运维压力增大
- 系统部署依赖
- 服务间通信成本
- 数据一致性
- 系统集成测试
- 性能监控……
springcloud与dubbo区别
Dubbo | Spring Cloud | |
---|---|---|
服务注册中心 | Zookeeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务网关 | 无 | Spring Cloud Netflix Zuul |
断路器 | 不完善 | Spring Cloud Netflix Hystrix |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
最大区别: springcloud抛弃了dubbo的RPC通信,采用的是基于http的rest方式
springcloud牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题,而且REEST比RPC更为灵活,
服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。
SpringCloud 与 springboot 的版本对应
dependencies Version | Spring Boot Version |
---|---|
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
参考网站:
https://springcloud.cc/spring-cloud-netflix.html
中文api文档:https://springcloud.cc/spring-cloud-dalston.html
springcloud中文社区:https://springcloud.cn
springcloud中文网:https://springcloud.cc