标签:failure 部分 ash 分配 脚本语言 形式 统一 服务器端 自己的
在分布式的前提下,让项目”独立”运行.一切的部署都是全自动的实现,
配置管理,服务发现,断路器,智能路由,微代理,控制总线.
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。是微服务中的一种编程方式.
概括:负责服务调度.内部有心跳检测,可以实时监听服务状态.同时会记录服务IP:端口.服务名称等信息.方便消费者调用.
实现原理:
步骤:
Zookeeper:强一致性.当服务宕机时,要求立即同步数据,这时如果有消费者请求时,将陷入阻塞状态.
Ribbon是SpringCloud中负载客户端负载均衡的组件.
服务端负载均衡问题:
客户端负载均衡说明:
Feign是一种声明式、模板化的HTTP客户端。简化客户端编码,可以使用户直接通过接口的方式声明式的调用,内部集成了ribbon.内部实现负载均衡
Hystrix是断路器.是一个用于处理分布式系统的延时和容错的开源库.在分布式系统里许多依赖可能会调用失败.hystrix能够保证当服务单元发生故障后,通过断路器机制.返回一个满足预期处理条件的数据.而不是长时间的等待或者抛出异常.这样就能避免服务长时间没有响应或者报错等影响,提升了软件的可靠性.
说明:断路器机制是对后台的保护,配置时在服务的提供端.
一般的将断路器配置到服务端,可以返回有效的数据.但是如果服务端程序宕机了.这时断路器机制将不能生效.为了让用户也能快速获取预期数据.所以将断路器配置到接口中.
当服务器资源不足时.先关闭部分服务.将更多的资源部署主要的系统.这种部署方式称之为服务降级.当请求并发过后,再次开启之前关闭的服务.
因为有了熔断机制.使得该操作成为可能.
实现服务监控
监控状态信息
Success 请求成功次数
Short-Circuited发生断路次数
Bad Request错误请求次数
Timeout超时请求次数
Rejected拒绝请求次数
Failure请求失败次数
Error失效异常数
Zuul是服务端的路由器.可以过滤 拦截无效的请求.同时实现了负载均衡效果.实现了请求的转发和响应.
Zuul 是用户访问微服务统一的入口
主要作用是对请求进行路由和过滤2个作用.
路由功能:
将外部的请求转发到具体的微服务实例上.
过滤功能:
对请求进行校验/拦截
Zuul与eureka进行整合,同时能够获取全部的服务信息.后自动跳转.
1、Nginx与Zuul的区别
相同点:Zuul和Nginx都可以实现负载均衡、反向代理(隐藏真实ip地址),过滤请求,实现网关的效果
不同点:Nginx--c语言开发 Zuul--java语言开发
Zuul负载均衡实现:采用ribbon+eureka实现本地负载均衡
Nginx负载均衡实现:采用服务器实现负载均衡
Nginx相比zuul功能会更加强大,因为Nginx整合一些脚本语言(Nginx+lua)
Nginx适合于服务器端负载均衡
Zuul适合微服务中实现网关
标签:failure 部分 ash 分配 脚本语言 形式 统一 服务器端 自己的
原文地址:https://www.cnblogs.com/wanjx/p/10935753.html