微服务配置

Weixl 的个人博客 贼拉正经的个人博客 本文由博客端 http://localhost 主动推送

搭建微服务各项功能所需配置

Eureka 服务端


Eureka 客户端


Ribbon,Hystrix,Feign 消费者端 ###

如果使用 Feign 技术,那么 Hystrix 不需要导包和加注解


Zuul 网关依赖

JWT 配置

单独配置:key 密钥写在 Java 代码中

yml 文件中配置 key 密钥:

Zuul 中 token 过滤器配置

@Component
public class JWTFilter extends ZuulFilter {
    @Override
    public String filterType() {
        //TODO 返回pre 表示请求前进行 过滤
        // pre请求前   route路由请求时   post在route和error过滤器之后调用  error处理请求时发生错误时
        return "pre";
    }

    @Override
    public int filterOrder() {
        //TODO 顺序排名
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        //TODO 是否执行
        return true;
    }

    @Override
    public Object run() throws ZuulException {
        RequestContext context = RequestContext.getCurrentContext();
        HttpServletRequest request = context.getRequest();
        String url = request.getRequestURL().toString();

        //发布和查看个人信息等,才进行拦截判断
        if (url.contains("/user/findByUsername") || url.contains("/user/uploadImg")
                || url.contains("/user/updatePassword") || url.contains("/user/updatePasswordBefore")){
            //进行拦截判断
            String token = request.getHeader("authorization");
            //解析
            Claims claims = JWTUtils.parseToken(token, "user");
            if (claims == null){
                // 10 拦截
                context.setSendZuulResponse(false);
                context.setResponseStatusCode(401);
                context.setResponseBody("{'msg':'校验失败'}");
                context.getResponse().setContentType("text/html;charset=utf-8");//  不设置的话,中文乱码
                return null;
            }
        }

        return null;
    }
}

zuul 中的熔断返回类

@Component
public class ZuulFallBack implements FallbackProvider {
    @Override
    public String getRoute() {
        return "*";
    }

    @Override
    public ClientHttpResponse fallbackResponse(String route, Throwable cause) {
        return new ClientHttpResponse() {
            @Override
            public HttpStatus getStatusCode() throws IOException {
                return HttpStatus.OK;
            }

            @Override
            public int getRawStatusCode() throws IOException {
                return this.getStatusCode().value();
            }

            @Override
            public String getStatusText() throws IOException {
                return this.getStatusCode().getReasonPhrase();
            }

            @Override
            public void close() {

            }

            @Override
            public InputStream getBody() throws IOException {
                //返回的内容,在此中书写
                return new ByteArrayInputStream("当前服务暂时不可用,喝杯咖啡冷静一下吧~~~".getBytes());
            }

            @Override
            public HttpHeaders getHeaders() {
                HttpHeaders headers = new HttpHeaders();
                MediaType mt = new MediaType("application", "json", Charset.forName("UTF-8"));
                headers.setContentType(mt);
                return headers;
            }
        };
    }
}
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    76 引用 • 138 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2766 引用 • 8034 回帖 • 767 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    810 引用 • 1390 回帖 • 681 关注

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...