1.总体理解
一个项目部署在一台服务器上,服务器负荷过大,可能导致项目崩溃,这个时候把项目的各个服务切开成一个个模块,比如支付宝切分成支付模块,用户模块这样,分别在不同的服务器上启用,可以分散服务器压力。这里面具体实现还需要一个注册中心,把不同的模块的服务接口集中在注册中心,需要的时候调用即可。
这里学习的注册中心是Eureka Server,alibaba版的注册中心是nacos。
视频地址:Spring Cloud从入门到实战
2.Eureka Server 注册中心
简介:给各种微服务进行注册,方便统一调用
3.Eureka Client 服务提供者
简介:实际服务提供者,比如获取本地服务端口的请求,其他注册在注册中心的微服务可以间接调用给自己使用。
4.RestTemplate的使用
简介:简化 Java 的 Http 通信过程,广泛用于与 RESTful 服务进行通信,如调用外部 API、微服务。
简化 Java 的 Http 通信过程:可以进行GET、POST、PUT、DELETE 等 Http 请求,并且可以设置请求头、请求参数、请求体等。还支持响应的处理,包括将响应体解析为不同类型的对象、处理响应状态码、处理错误等。
5.Zuul 服务网关
简介:可以实现负载均衡,简化调用
应用场景:为什么需要网关?因为当需要调用多个微服务时候,调用不同的微服务可能会遇见麻烦的跨域问题,同时还要记住每一个微服务的网络地址才能进行调用,很麻烦,这个时候用网关,可以不用记住不同微服务的ip地址,请求直接统一访问网关,网关在自行判断访问对应的api服务。
网关映射比如要调用8010端口的微服务api,就需要http://localhost:8010/student/findAll,加了网关代理后记住网关的端口8030,加个/p就可以映射了(p是设置里设置的映射) http://localhost:8030/p/student/findAll
6.Ribbon 负载均衡
简介:可以实现负载均衡,需要通过Ribbon 特定的端口调用(可以自定义负载均衡的算法?)
场景:假设有三个提供相同功能的微服务A,B,C和Ribbon,都在注册中心注册了,那么Ribbon可以提供负载均衡算法来自动的均衡调用这几个服务
7.Feign 负载均衡 熔断
简介:基于Ribbon实现,可以实现负载均衡、熔断(集成Hystrix)
负载均衡:可以让用户平均访问特定服务开启的多个端口,比如8070和8080,访问一百次,每个都访问50次,而不是某个端口被单独的访问,比如8080被访问100次,8070被访问为0次。
熔断:微服务报错时,指定的进行的代码操作,比如微服务出错了,跳转到指定的错误页面
8.Hystrix
简介:集成于Feign,可以熔断和数据监控
应用场景:数据监控可以查看指定服务的调用各种情况指标,比如
- 延迟:服务调用的响应时间。
- 请求量:服务接收到的请求数量
- ......
9.Config配置中心(本地)
简介:配置文件在项目本地上,通过配置中心访问
应用场景:更新配置,可以不重启微服务。
10.Config配置中心(远程)
简介:配置文件在Git上,通过配置中心访问
流程:Git上传配置文件config后,设置一个ConfigServer服务,可以让其他的微服务提取到Git的配置文件。通过请求配置模块的yml,找到配置服务模块的注册名称,注册名称找到配置服务模块,里面找到bootstrap的git地址,账号密码,然后通过定向名称检索就找到了配置服务。
11.Zipkin 服务跟踪
简介:可视化监控服务调用
适用场景:分布式系统中有很多个服务在相互调用,调用关系是错综复杂的