分布式服务框架-原理与实践:15---服务降级[展示API]-学习笔记

要做服务降级,首先要解决API发现的问题,基于spring cloud的eureka来说,怎么来做到服务API发现呢?这是我目前要解决的问题。

1 ===首先来看dubbo是如何做的===

做1个测试

package com.penngo.dubbo.service;

public interface LoginService {
	public User login(String name, String psw);
	
	public void test12345678111111111111();

}

特意写了1个辨识度高的API,启动server, 查看zk,

ls /dubbo/com.penngo.dubbo.service.LoginService/providers
[
dubbo://                                         ---协议
172.17.245.188:20881                             ---IP:端口
/com.penngo.dubbo.service.LoginService?          ---接口名
anyhost=true
&application=provider-penngo-app                 ---应用名
&dubbo=2.0.0
&generic=false
&interface=com.penngo.dubbo.service.LoginService ---接口名
&methods=test12345678111111111111,login          ---方法集合
&pid=12604                                       ---进程ID(我猜是为了区分进程是不是重启了)
&side=provider                                   ---提供方
&timestamp=1498100414818                         ---启动时间戳
]

可见,dubbo是通过server端直接注册到zk上的,web直接查询就可以了。

 

2 ===首先来看swagger是如何做的===

https://www.oschina.net/p/swagger

正好公司有个QA环境,上去看了下

只有URL?我觉得方法级别的比较好,咨询同事,说有个url可以查询,试一把!

拿到了swagger相关的信息,不合适的改造就是了,那么接口信息获取的问题就解决了。

 

3 ===接口信息保存在什么地方?===

对于zk来说,信息保存在zk里,没有问题,用cloud的话如何保存?

可以在每个进程启动时,因为admin可以感受到up的信息,此时去进程内部调用接口拉取

每个进程启动1次,只会触发1次拉取操作,如果有多个实例,会触发多次,

将多个结果融合到一起。

当然,这要区分版本号。

服务-版本号-接口-方法,打到数据库里永久保存!

这样,就解决了展示API的问题。

 

===当然,也可以是每个实例把信息打到eureka里的meta里去,这样天生就可以拿到信息了。

注意:只是在每个实例的up状态下才需要处理这个meta里的接口信息。

 

 

 

爱编程-编程爱好者经验分享平台

文章评论

  

版权所有 爱编程 © Copyright 2012. w2bc.com. All Rights Reserved.
闽ICP备12017094号-3