zoukankan      html  css  js  c++  java
  • 微服务功能

    微服务的功能

    服务的注册与发现

    服务注册指 向服务注册中心注册一个服务实例,服务提供者将自己的服务信息(服务器、IP等)告知给服务中心。

    服务发现指 当服务消费者需要消费另一个服务时,服务注册中心能告知消费者他所需要的服务的实例信息。

    通常,一个服务即是提供者也是消费者

    服务消费者一般使用HTTP协议或消息组件这种轻量级的通信机制来进行服务消费

    关系如下:

    什么是“心跳”?

    一个服务注册后,会定期向服务中心发送“心跳”,表明自己处于可用状态。当一个服务一段时间没有发送“心跳”,服务中心会把它从服务列表剔除,

    如果之后再发送“心跳”,服务中心会重新把它放入服务列表。

    ----------------------------------------------------------------------------------------------------------

    服务负载均衡

    服务间的相互调用一般是通过HTTP协议来实现的,而网络往往具有不可靠性,为了保证服务的高可用性,往往采用集群化部署

    消费者如何选择提供者,这涉及到负载均衡。

    所有的服务都向服务中心注册,每个服务也能定期获取所有服务列表

    消费者集成了负载均衡组件,组件能从消费者那获取所有服务列表,并隔一段时间刷新,

    当消费者需要消费时,负载均衡组件能通过一定的负载均衡策略选择服务

    由于服务也得定期获取所有服务列表,当服务过多时,服务中心就会有很大的负载,为了实现高可用,一般可以把服务中心集群化,每个服务中心的数据实时同步

    ----------------------------------------------------------------------------------------------------------

    服务容错

    服务间的依赖错综复杂,一个网络请求往往需要调用多个服务,

    如果一个服务不可用,用户请求会处于阻塞状态,线程被阻塞,另外,等待此进程的其他服务也会被阻塞,这些服务的进程也会被阻塞,在高并发的情况下线程会很快耗尽,这样引发连锁反应,称之为“雪崩”

    为了解决“雪崩”,引入“熔断器”概念。

    当请求一个服务的失败次数在一定时间小于阈值,熔断器关闭状态,服务正常。

    当失败次数大于阈值时,打开熔断器,所有请求快速失败,解放了进程

    一段时间后熔断器半打开,执行一定数量的请求,剩下的快速失败,若依旧失败,继续打开,若成功,关闭熔断器

    作用总结:

    1. 防雪崩

    2. 资源隔离

    3. 服务降级

    4. 自我修复(一段时间尝试半开)

    ----------------------------------------------------------------------------------------------------------

    服务网关

    微服务系统中,资源是以API接口的形式暴露出来以提供服务,而API接口通常由服务网关(API网关层)统一暴露请求先到达网关层,经过身份验证,权限判断等再转发到具体的服务

    内部的服务不对外提供API接口,这样可以把内部服务隐藏起来,一定程度上保护了系统安全

    备注:之前将的服务都是服务层,服务网关属于网关层,在服务层之上

    介绍:API网关有请求转发的功能,还能负责一定的安全验证,例如请求是否合法,是否有请求权限,网关层以集群方式存在

    网关层作用:

    1. 资源统一聚合对外暴露,保护系统安全

    2. 安全验证,权限验证

    3. 请求监控,实现日志

    4. 流量监控

    5. 从内部服务剥离,方便测试

    备注:网关层之上还有负载均衡层,通过一定的路由策略转发到网关层

    ----------------------------------------------------------------------------------------------------------

    服务配置的统一管理

    不同的服务有不同的配置文件,例如数据库配置、日志输出级别配置,且这些配置在不同环境也不一样,随着服务的增加,配置文件的管理是很麻烦的事。

    许多管理配置的组件,以Spring Cloud Config为例。

    过程:

    1. Config Server(配置服务)读取配置文件仓库的配置信息,(配置文件仓库可是本地仓库,也可放于远程GIT仓库)

    2. 配置服务启动,读取配置,存于内存

    3. 启动服务,例如A、B时,由于A、B指定了配置信息,他们会向配置服务读取配置

    4. 当配置需要修改更新时,我们可向配置服务发送POST请求进行刷新,A、B服务也会重新读取

    备注:对于集群化的服务,可通过消息总线来刷新,如果服务较多,配置服务也可以集群部署

    ----------------------------------------------------------------------------------------------------------

    服务链路追踪

    微服务系统有多个服务单元,服务单元很多且相互调用很复杂,出现异常很难定位,所以必须实现分布式链路追踪,跟进一个请求的服务过程,出了问题能很快定位。

    常见地链路追踪组件有Google的Dapper、Twitter的Zipkin、阿里的Eagleeye

  • 相关阅读:
    如何在ubuntu里面使用JNI?
    sql server 关键字一
    自己编写的 objectDataSource 配合 GridView 实现分页...
    委托和匿名委托的比较
    实现 IEnumerable IEnumator 接口的类,可直接用作 Gridivew 的数据源
    ASP.NET 中的页面事件执行顺序
    泛型,集合的根本区别
    匿名委托的示例,贴一下以供参考...
    ajax "Sys 未定义" 的问题解决方法
    抽象工厂模式(C#)
  • 原文地址:https://www.cnblogs.com/yanze/p/10452786.html
Copyright © 2011-2022 走看看