springCloud基本知识点
2021-04-20 17:09:54 40 举报
AI智能生成
基本知识点
作者其他创作
大纲/内容
演变:传统单项目架构-SOA分布式架构-微服务架构
soa缺点
SOA以传统的xml方式通讯,宽带占用大,高并发流量大
服务治理不完善
微服务架构优点
restful接口形式通讯api(http+json)
服务与服务之间互不影响
轻量级
每个服务单独数据库
rpc远程调用技术
服务治理-注册中心(服务费注册与发现)
概念:管理服务与服务之间的依赖关系
注册中心:存放服务地址信息
常见的注册中心
Eureka(you瑞卡,已闭源)
配置及使用
启动器配置@EnableEurekaClient注册到注册中心
使用RestTemplate.getForObject(url,args)远程调用可以用feign替代
默认是开启负载均衡,所以RestTelpate需使用@LoadBalanced打开负载均衡,就能支持rul以别名调用
调用服务接口也可使用feign客户端
高可用集群
使用相互注册的原理,实现高可用的效果
服务名称必须相同
配置多个服务地址 以逗号形式分割
服务信息数据只在一个服务器上保存,当该服务器挂掉之后会自动到下一个服务器
自我保护机制
集群状态下,其中一个服务器宕机,但是客户端仍然会访问到。自我保护机制就是把无效的服务器剔除
Server服务端
如果在一定时间内没有接收到client的心跳包,会自动剔除无效的服务(90秒)
Client客户端
会定时向server发送心跳包,
为了防止网络访问不通,在短时间内大量的心跳包无反馈,会启动自我保护机制,防止误剔除
本地环境建议关闭
通过配置文件关闭
ConSul(go)
配置@EnableDiscoveryClient注册到注册中心
Zookeeper(分布式协调工具)
配置@EnableDiscoveryClient注册到注册中心
替换eureka,使用方法类似eureka
本地集群负载均衡
本地使用ribbon实现负载均衡调用远程服务
ribbon与nginx区别
ribbon是本地负载均衡,调用接口时会在eureka上获取注册信息,缓存到jvm本地,本地使用rpc调用,是在客户端实现负载均衡,适合于微服务器
Nginx是服务器端负载均衡,客户端请求到Nginx,然后进行请求转发,是在服务器端实现负载均衡,适合于服务器端,如tomcat
算法:请求总数%服务器数=请求的服务器下标
feign
springcloud支持两种客户端调用工具,rest和feigh
@FeignClient(name="")
默认支持ribbon
超时配置(默认1.5s)
ConnectTimeout
ReadTimeout
注册时间:在服务启动的时候,会以别名的方式把服务地址存入到注册中心
服务保护
服务雪崩
产生原因:默认情况下tomcat只有一个线程池处理服务请求,在高并发的时候,如果所有的请求都堆积到同一个服务接口上,就导致所有线程去处理该接口,导致其他请求延迟等待
解决雪崩效应
Hystrix
断路器
服务降级
在高并发情况下防止用户一直等待,返回一个友好的提示
熔断
为了保护服务,高并发情况下,请求达到极限,自动开启服务保护功能,使用服务降级功能,返回一个友好提示
默认熔断数10个
隔离机制
线程池隔离
每个服务接口都有自己独立的线程池,互不影响
信号量隔离
Hystrix搭建
开启断路器
配置文件:feign-Hystrix-enable:true
方法上增加@HystrixCommand(fallbackmethod="")
fallbackmethod里增加雪崩后需调用的方法
开启断路器即默认开启线程池隔离,降级执行fallbackmethod的方法,熔断
Jmeter压力测试
分布式配置中心springConfig
使用原因
在微服务中,使用传统的方式配置文件,配置文件比较复杂,所以要统一管理
目的:在微服务中使用一个服务管理配置文件信息,可实现后台管理,如果需要改变,不需要重启服务器,即可实时修改配置文件
例子:阿波罗(携程的分布式配置中心,有图形界面),zookeeper,nacos
组件
web管理系统
存放分布式文件服务器(持久存储)
configservice缓存配置文件服务器(临时存放)
configclient读取configservice配置文件信息
网关api gateway
接口设计需要考虑
开放接口还是内部接口
接口幂等性
安全性https
防止篡改数据(验签)
使用网关拦截实现黑名单白名单
高并发时对服务进行熔断降级隔离
统一传输格式http+json_restful跨平台
使用统一api管理平台
概念:所有的请求先统一请求到网关服务器上,再由网关做请求转发
作用:可以拦截客户端请求,权限控制,负载均衡,日志管理,接口调用监控等
zuul与nginx区别:
都可以实现负载均衡,反向代理,过滤请求,实现网关效果
zuul使用ribbon和eureka实现负载均衡
Nginx使用服务器实现负载均衡
Nginx功能更强大,可以整合脚本语言Lua,适合服务器端做负载均衡,zuul适合微服务
使用@EnableZuulProxy开启网关注册
使用配置文件配置网关别名然后通过eureka做转向
0 条评论
下一页