微服务个人笔记

浏览器-–>
CDN服务器(内容分发网络),cname---->
LVS+Keekpalived (VIP)+Nginx搭建高可用的集群作为网站的第一层网关
Nginx:四层负载(传输层:tcp\ip协议)七层应用层,http协议,可携带数据)—>
网关(作为一个独立的微项目(搭建集群)):路由、过滤器(一般用来身份认证与修改请求头数据)、跨域处理,常用zuul、gateway---->
各个微服务:Feign远程调用、Hystrix:服务降级、隔离(线程池和信号量或者叫计数器)、熔断、 服务限流(rateLimiter)、redis做分布式缓存和分布式锁、ehcache做一级缓存(jvm)、实现RequestInterceptor的对象注入进spring容器,做feign远程调用时请求头的修改,带上令牌,在下一个服务时做认证与授权—>
单点登录(SSO\CAS):单独的微服务项目,通过restTemplate请求springSecurity+Oauth2框架,获取JWT令牌,最后将短令牌存入cookie返回客户端,长令牌携带数据存入redis
JWT组成:头部,携带加密方式,body:携带数据(可用户的权限相关信息名称等),尾部:签名,将头部和body以Base64方式编码,再加上密钥对的签名。---->
异常处理:---->用@ControllerAdvice和@ExceptionHandler
分布式配置中心(一个微服务项目):config+mq+bus被管理的配置文件用bootstrap.yml,或者用阿波罗做分布式配置中心
分布式任务调度中心:xxl-job,全全管理任务调度,如果用的不多,直接使用spring-task或者quatz
分布式session问题:使用token代替或者使用是spring-session框架
分布式事务:可以使用本地事务+mq做最终一致性操作,或者用2pc、3pc、tcc(事务补偿)
XSS(脚本注入攻击,常见论坛类),csrf(模拟请求攻击,jmeter工具模拟压力测试),SQL注入等

你可能感兴趣的:(个人笔记,java)