加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

微服务内部通信之白名单

发布时间:2020-12-15 07:14:13 所属栏目:Java 来源:网络整理
导读:微服务通信的方式有很多,有的用Socket,也有用一些HTTP客户端工具类,还有的有现成的组件如SpringCloud Open-Feign等。 这些共同点都是通信。 不同服务之间的通信涉及很多方面,比分说内网访问,外网不能访问等。 那么微服务如何实现内部通信呢(这里说的是

微服务通信的方式有很多,有的用Socket,也有用一些HTTP客户端工具类,还有的有现成的组件如SpringCloud Open-Feign等。

这些共同点都是通信。

不同服务之间的通信涉及很多方面,比分说内网访问,外网不能访问等。

那么微服务如何实现内部通信呢(这里说的是内网通信,外网不能访问)?

核心代码如下(采用拦截器机制):
代码中的if-else那段代码可以放在数据库,也可以存NoSQL或者配置文件之类的。

public class IPInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception {


        String ip = IpUtils.getIpAddr(ServletUtils.getRequest());

        if ("127.0.0.1".equals(ip)) {
            System.out.println(内部IP放行);
            return true;
        } else {
            System.外部IP禁止访问);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put(code",403);
            jsonObject.put(msgNot Allowed);

            response.getWriter().append(jsonObject.toJSONString());
            false;
        }

    }

    @Override
    void postHandle(HttpServletRequest request,Object handler,ModelAndView modelAndView) throws Exception {

    }

    @Override
     afterCompletion(HttpServletRequest request,Exception ex) throws Exception {

    }
}

采用拦截器机制后,对应的feign组件URL指向改为如下即可(主要是@FeignClient属性中的url):

@FeignClient(contextId = userApiServicehttp://127.0.0.1:2020)
@RestController
interface UserApiService {

    @GetMapping(/blog_user/list)
    String queryUserList();
}

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读