1.网站的架构模式:单体架构,分布式面向于服务架构SOA、微服务架构;
**2.分布式开发:**就是将一个整体大型项目拆分成多个子项目,会员系统、订单系统,支付系统等、每个子项目都是用RPC远程调用技术;
有哪些RPC远程调用的技术:SpringCloud,HttpClient,Dubbo
RPC原理:
面向于服务架构(SOA),常用的通信协议是:SOAP
SOAP:就是http协议+xml报文传输,序列化与返序列化 webservice
作用:解耦
集群:将一个项目,相同功能部署正在多台不同的服务器上,
作用:解决高并发;
面向于服务架构的优点:
代码服务、解耦、适合大公司、
缺点:网络延迟;维护难;不好整合;编写复杂;
微服务架构
微服务架构与面向服务架构的去别:
面向于服务架构(SOA)主要针对在银行 xml格式企业级ESB服务,重量级
微服务架构:会更加的细分,轻量级,独立运行部署;
是在传统的SOA架构上升级的;
微:轻量级的--------通讯协议是http协议+rest风格+json
SpringCloud解决的是什么问题:
- 配置管理
- 注册中心 eureka、zk
- 服务发现
- 服务注册
- 断路器
- 路由策略
- 负载均衡
- 全局锁
- 分布式会话系统
11.客户端调用 - 接口网管
- 服务管理
RPC远程调用的技术;
SpringBoot和SpringCloud关系去别:
SpringBoot简化了xml配置,内置tomcate,是一套快速整合框架;
SpringCloud是一套微服务架构,RPC远程调用;
关系:SpringCloud依赖接口(SpringMVC) 与SpringBoot,SpringMVC接口
springCloud注册中心的环境搭建:eureka
服务注册与实现
springCloud客户端调用
rest fegin、客户端调用工具;
ribbon负载均衡
zuul接口网关
enreke服务注册
rest:调用接口用
rebboin:负载均衡
如何实现负载均衡:可以通过ngnix、lvx、HAproxy、F5
当有两个或多个(会员服务)注册到注册中心中去,另一个服务(订单服务)要去注册中心去找会员服务,有两个或多个时不确定找那个,这个时候就用rebboin来实现负载均衡;订单服务区注册中心拿到两条或者多条会员服务,这个时候把拿到的服务交给rebboin,通过负载均衡的算法,分配到对应的服务之中去。rebboin做轮训机制,在多个服务之间来回切换;
如下图所示:
先启动注册中心,在启动其他服务:
@LoadBalanced注解的作用就是做负载均衡的;加上这个注解就表示负载均衡;
fegin:客户端调用--------接口方式调用
接口网关:
作用:跨域、路由、拦截参数;
拦截所有请求,任何请求先交给接口网关,然后在用网关进行转发nginx反向代理
网关工作原理:使用项目名称区分接口网关转发到实际的地址;
原理如下图所示:
接口网关的好处:解决跨域问题;
开启网关:@EnableZuulProxy注解;
传统方式:每个服务写拦截器,搭建一套网关系统;
A、B服务:怎样保证B服务只允许有A服务进行访问:
使用ngixn或者zuul搭建接口网关系统,进行判断;
断路器(hystrix):服务雪崩效应、服务降级;熔断机制;限流;
服务雪崩效应:所以请求在处理一个服务;等待返回响应,形成服务堆积不能访问其他服务接口;
产生原因:主要是网络延迟,请求没有响应;访问数超过最大线程连接数,导致请求五回应;
解决服务雪崩的方法
1.使用超时机制,通过服务降级操作;
服务降级:调用接口,如果发生错误或作者超时,不让调用接口,调用本地fallback,
2.熔断机制:类似保险丝;
熔断机制:就是为了解决高并发,一旦达到规定请求,熔断报错,服务降级;
隔离机制:每个接口分开,互不影响;
限流机制:nginx来达到限流,网关zool也可以限流;
springcloud hystrix断路器:RPC远程调用时,连接超时,解决服务雪崩效应,服务于服务之间的报错信息;
hystrix断路器:服务降级,熔断机制;隔离资源;
分布式配置中心----
springcloud bus