SpringCloud
1.简介
微服务四个核心问题?
- 服务很多,客户端怎么访问?API网关,服务路由(zuul)
- 这么多服务,服务之间如何通信?Http,RPC框架(dubbo,ribbon),异步调用
- 这么多服务,如何治理?服务注册与发现,实现高可用(zookeeper,eureka)
- 服务挂了怎么办?熔断机制,服务降级(hystrix)
解决方案:
2.微服务概述
汉化概述:https://www.cnblogs.com/liuning8023/p/4493156.html
- 提倡将单一的应用程序划分成一组小的服务,服务之间相互协调,互相配置
优缺点
微服务技术栈
SpringBoot和SpringCloud的关系
- 一种渐进式的关系,SpringBoot构建微服务,SpringCloud协调微服务
3.SpringCloud和Dubbo技术选型
3.1目前成熟的互联网架构:应用服务器拆分+消息中间件
3.2 Dubbo和SpringCloud对比
社区活跃度对比:SpringCloud完胜
结果
- 最大的区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式;牺牲了服务调用的性能,也避免了原生RPC带来的问题,比RPC更为灵活。
学习社区
- https://www.springcloud.cc/spring-cloud-netfix.html
- 中文API文档:https://www.springcloud.cc/spring-cloud-dalston.html
- SpringCloud中文社区:https://www.springcloud.cn/
- SpringCloud中文网:https://www.springcloud.cc/
SpringCloud编写模块规律
- 导入依赖
- 编写配置文件
- 开启功能 @EnableXXXX
- 配置类
4.Eureka服务注册与发现
4.1.什么是Eureka
Eureka的三大角色
- Eureka Server:提供服务的注册与发现。和zookeeper一样
- Service Provider:将自身注册到Eureka,使消费者能够拿到
- Service Consumer:服务方从Eureka中获取注册列表,从而找到消费服务
4.2.Eureka自我保护机制
4.3 Eureka与ZooKeepre对比
微服务不能保证CAP三个原则都满足,只能保证三进二
5 负载均衡Ribbon
6 负载均衡Feign
- 还是使用Ribbon实现负载均衡,Feign主要是实现远程过程调用(有点类似于Dubbo),替代Ribbon下面的RestTemplate,但是效率变低了
7.Hystrix
7.1.服务熔断
能干嘛
- 服务降级
- 服务熔断
- 服务限流
- 接近实时的监控
服务熔断是什么
7.2.服务降级
- 服务熔断是在服务端配置的(provider),服务降级是在客户端配置的(consumer)
服务熔断和服务降级的区别
- 服务熔断:服务端~ 某个服务超时或者异常,引起熔断,类似保险丝~
- 服务降级:客户端~ 从整体网站请求负载考虑~ ,当某个服务熔断或者关闭之后,服务将不再被调用;此时在客户端我们准备一个 FallbackFactory,返回一个默认的值(缺省值),整体的服务水平下降了;但是,好歹能用, 比直接挂掉强~
7.3.Dashboard流监控
可视化监控微服务页面(实时动态)
- 整图说明
8.Zuul路由网关
什么是Zuul
- 类似Vue的Vue-Router
能干嘛
- 路由
- 过滤
9.SpringCloud分布式配置(整合Git)
分布式系统面临的配置文件的问题