设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

微服务架构下,如何打造别具一格的服务治理体验?(上)(4)

发布时间:2021-01-07 14:43 所属栏目:53 来源:网络整理
导读:在大规模部署服务计算节点时,往往还会遇到跨大网段,跨IDC中心,白名单IP策略等问题.所以心跳系统还支持“心跳级联代理”模式,其作用是允许建立多级的心跳群,每个群由若干“代理”心跳服务端组成,它们只负责转发心跳

在大规模部署服务计算节点时,往往还会遇到跨大网段,跨IDC中心,白名单IP策略等问题.所以心跳系统还支持“心跳级联代理”模式,其作用是允许建立多级的心跳群,每个群由若干“代理”心跳服务端组成,它们只负责转发心跳信息,所以服务注册信息也依靠这个过程进行转发到服务注册中心.

服务注册:多级服务注册中心模式

在某些特殊业务场景下,对服务注册信息更新延迟容忍度较低,这时,让心跳级联的计算节点也作为服务注册中心.如下图,节点B是1级服务注册中心(以下简称1级中心),节点C是2级服务注册中心(以下简称2级中心).1级中心会存储向自己提交的服务注册信息,也会把这些信息转发到上级服务注册中心.2级中心上可见所有下级中心的服务注册信息.这种模式可以获得更快的服务发现,因为同级的节点发现其他节点服务能力只需经过本级服务注册中心即可,下文会结合服务发现做详细解释.

 

服务注册中心依靠TTL的方式对服务接口注册信息进行生命周期管理.我们定义生命状态如下:

 

  1. 存活(Alive):服务接口健康,可被查询
  2. 可疑死亡(Dying):由于网络延迟等原因的假死状态,服务接口健康状态存疑,可被查询.有可能经过1~2个生命周期收到上行心跳,可恢复至Alive状态
  3. 死亡(Dead):超过了较大的TTL,基本认为服务接口死亡,其接口信息被隔离不能查询
  4. 消失(Disappear):超过了一个铁定死亡的TTL,认为服务接口可以抹去,最终会从服务中心消息掉,其接口信息被隔离不能查询

另一个关键点是服务接口名的定义,它应该是全局唯一的命名,因为在多个服务能力之间互相调用时是以服务接口名为目标的.在服务画像时,会自动生成服务接口名,它提取以下三类信息:

  1. 计算节点类型名(服务计算节点相关):计算节点的类型由业务语义决定,比如MonitoAgent,SMSGateway,HealthManager等等
  2. Http服务组件类型名(服务能力相关):对外提供Http服务组件的简写类名,比如MDFListenServer,NodeOperHandleServer,DigitSignServer等等
  3. Context路径(服务接口相关):相对Http服务根的路径,比如/ma/put/mdf,/hm/cache/q,/rtntf/oper等等.

它们共同构成服务接口名,例如:

healthmanager-HealthMangerServerWorker-/hm/cache/q

runtimenotify-RuntimeNotifyServerWorker-/rtntf/oper

hbserveragent-HeartBeatServerListenWorker-/heartbeat

2)服务发现

服务发现的本质是通过服务接口名查询服务注册中心,服务注册中心基于某些策略返回服务接口可用地址列表,服务调用方也可以基于某些策略来使用地址列表.

微服务计算平台的服务发现过程如下:

  • 业务服务能力X以服务接口名为参数,调用组件API(每个服务能力组件都具备).
  • 组件API内部是调用心跳客户端向服务注册中心查询该服务接口.值得注意的是,除了第一次获取某服务接口信息外,出于性能考虑,这个过程是独立的,心跳客户端可以通过下行心跳不停更新已经用过的服务接口信息,通过TTL机制自动过期哪些长时间不使用的服务接口信息.
  • 服务注册中心根据某种策略(授权访问策略,隔离策略等等)返回地址列表
  • 业务服务能力X获取服务接口地址列表后,可按照某种轮询策略(Round Robin,权重等)使用.

 

在心跳级联代理模式下的服务发现与常规模式类似,这里不做详述.

多级服务中心模式下的服务发现:

上文提到在多级服务注册中心模式下,可以获得更快的服务发现.从心跳客户端的角度来看,其实没有差别,但是如果是查询同级的服务接口,在1级中心立刻查到,无须去2级中心;对于查询跨级的服务接口,则需要从2级中心获取,并会在1级中心缓存,从而加快跨级查询.有一点注意,1级中心的缓存也是TTL的,并且生存周期要短于2级中心,这是性能和时效性的互相适应的结果.因为从1级查缓存虽然快,但是1级中心无法判断跨级服务的存活,所以长时间的缓存可能是错误的信息,缩短TTL时长是为了更快更新跨级服务的地址信息.

服务接口失效的快速反馈:

 

 

当业务服务能力X调用Http服务能力A遇到异常时,服务能力实现框架会自动捕获异常信息,并将系统性异常(Timeout,SocketException等等)以及某些业务异常(基于策略)提交到服务注册中心,这个过程不必等到心跳周期到达而是立即触发的,从而服务注册中心可以实现对这些服务接口的快速隔离.而其他打算调用该服务接口的其他服务能力,通过心跳下行获得地址列表更新.这样的方式可以弥补TTL机制可能的延迟.

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读