饿了么网站开发,广州做网站的公司哪家好,seo推广平台服务,网站上线前做环境部署一、服务注册发现
服务注册就是维护一个登记簿#xff0c;它管理系统内所有的服务地址。当新的服务启动后#xff0c;它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要Service Provider地址就行了。当下用于服务注册的工具非常多ZooKeeper#xff0c;Consul它管理系统内所有的服务地址。当新的服务启动后它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要Service Provider地址就行了。当下用于服务注册的工具非常多ZooKeeperConsulEtcd, 还有Netflix家的eureka等。服务注册有两种形式客户端注册和第三方注册。1、客户端注册
客户端注册是服务自身要负责注册与注销的工作。当服务启动后向注册中心注册自身当服务下线时注销自己。期间还需要和注册中心保持心跳。心跳不一定要客户端来做也可以由注册中心负责这个过程叫探活。这种方式的缺点是注册工作与服务耦合在一起不同语言都要实现一套注册逻辑。2、第三方注册
第三方注册由一个独立的服务Registrar负责注册与注销。当服务启动后以某种方式通知Registrar然后Registrar 负责向注册中心发起注册工作。同时注册中心要维护与服务之间的心跳当服务不可用时向注册中心注销服务。这种方式的缺点是Registrar 必须是一个高可用的系统否则注册工作没法进展。3、客户端发现
客户端发现是指客户端负责查询可用服务地址以及负载均衡的工作。这种方式最方便直接而且也方便做负载均衡。再者一旦发现某个服务不可用立即换另外一个非常直接。缺点也在于多语言时的重复工作每个语言实现相同的逻辑。4、服务端发现
服务端发现需要额外的Router服务请求先打到Router然后Router负责查询服务与负载均衡。这种方式虽然没有客户端发现的缺点但是它的缺点是保证Router的高可用。二、 API 网关
API Gateway 是一个服务器也可以说是进入系统的唯一节点。这跟面向对象设计模式中的Facade 模式很像。API Gateway封装内部系统的架构并且提供API给各个客户端。它还可能有其他功能如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。下图展示了一个适应当前架构的API Gateway。
API Gateway 负责请求转发、合成和协议转换。所有来自客户端的请求都要先经过API Gateway然后路由这些请求到对应的微服务。API Gateway 将经常通过调用多个微服务来处理一个请求以及聚合多个服务的结果。它可以在 web 协议与内部使用的非 Web 友好型协议间进行转换如HTTP协议、WebSocket协议。
请求转发
服务转发主要是对客户端的请求安装微服务的负载转发到不同的服务上
响应合并
把业务上需要调用多个服务接口才能完成的工作合并成一次调用对外统一提供服务。
协议转换
重点是支持SOAPJMSRest间的协议转换。
数据转换
重点是支持XML和Json之间的报文格式转换能力可选
安全认证
1. 基于Token的客户端访问控制和安全策略
2. 传输数据和报文加密到服务端解密需要在客户端有独立的SDK代理包
3. 基于Https的传输加密客户端和服务端数字证书支持
4. 基于OAuth2.0的服务安全认证(授权码客户端密码模式等三、配置中心
配置中心一般用作系统的参数配置它需要满足如下几个要求高效获取、实时感知、分布式访问。1、zookeeper 配置中心
实现的架构图如下所示采取数据加载到内存方式解决高效获取的问题借助zookeeper的节点监听机制来实现实时感知。2、配置中心数据分类 四、事件调度
消息服务和事件的统一调度常用用kafka activemq等。五、服务跟踪
随着微服务数量不断增长需要跟踪一个请求从一个微服务到下一个微服务的传播过程 Spring Cloud Sleuth 正是解决这个问题它在日志中引入唯一ID以保证微服务调用之间的一致性这样你就能跟踪某个请求是如何从一个微服务传递到下一个。
1. 为了实现请求跟踪当请求发送到分布式系统的入口端点时只需要服务跟踪框架为该请求创建一个唯一的跟踪标识同时在分布式系统内部流转的时候框架始终保持传递该唯一标识直到返回给请求方为止这个唯一标识就是前文中提到的Trace ID。通过Trace ID的记录我们就能将所有请求过程日志关联起来。
2. 为了统计各处理单元的时间延迟当请求达到各个服务组件时或是处理逻辑到达某个状态时也通过一个唯一标识来标记它的开始、具体过程以及结束该标识就是我们前文中提到的Span ID对于每个Span来说它必须有开始和结束两个节点通过记录开始Span和结束Span的时间戳就能统计出该Span的时间延迟除了时间戳记录之外它还可以包含一些其他元数据比如事件名称、请求信息等。
3. 在快速入门示例中我们轻松实现了日志级别的跟踪信息接入这完全归功于spring-cloudstarter-sleuth 组件的实现。在 Spring Boot 应用中通过在工程中引入 spring-cloudstarter-sleuth 依赖之后 它会自动的为当前应用构建起各通信通道的跟踪机制比如
通过诸如RabbitMQ、Kafka或者其他任何Spring Cloud Stream绑定器实现的消息中间件传递的请求。
通过Zuul代理传递的请求。
通过RestTemplate 发起的请求。六、服务熔断
在微服务架构中通常会有多个服务层调用基础服务的故障可能会导致级联故障进而造成整个系统不可用的情况这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。
熔断器的原理很简单如同电力过载保护器。它可以实现快速失败如果它在一段时间内侦测到许多类似的错误会强迫其以后的多个调用快速失败不再访问远程服务器从而防止应用程序不断地尝试执行可能会失败的操作使得应用程序继续执行而不用等待修正错误或者浪费 CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正如果已经修正应用程序会再次尝试调用操作。Hystrix 断路器机制
断路器很好理解, 当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HALF-OPEN). 这时会判断下一次请求的返回情况, 如果请求成功, 断路器切回闭路状态(CLOSED), 否则重新切换到开路状态(OPEN). Hystrix的断路器就像我们家庭电路中的保险丝, 一旦后端服务不可用, 断路器会直接切断请求链, 避免发送大量无效请求影响系统吞吐量, 并且断路器有自我检测并恢复的能力。七、 API 管理
SwaggerAPI 管理工具。