从零开始构建服务注册-filter

Filter是服务注册框架为服务端架构的主要实现位置。首先,我们提供web-fragment.xml

    <filter>
        <filter-name>catLogFilter</filter-name>
        <filter-class>com.umetrip.common.filter.UnityAccessFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>catLogFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

在这里,我们让tomcat识别我们的统一入口filter。
filter的结构如下

    @Override
    public void init(FilterConfig config) throws ServletException {
        Filter tlFilter = new ThreadLocalTraceLogFilter();
        tlFilter.init(config);
        filters.put(new Pattern("/*"),tlFilter);

        Filter traceFilter = new TraceLogFilter();
        traceFilter.init(config);
        filters.put(new Pattern("/*"), traceFilter);

        Filter catLogFilter = new CatLogFilter();
        catLogFilter.init(config);
        filters.put(new Pattern("/*"), catLogFilter);

        Filter ipFilter = new IpFilter();
        ipFilter.init(config);
        filters.put(new Pattern("/*"), ipFilter);
      }

我们将分别实现上述filter,并使用FilterChain来让请求依次通过这些filter。
ipFilter就是简单的利用存储的白名单和黑名单进行过滤。catLogFilter就是简单的cat打点。TraceLogFilter使用log4j
的MDC(多线程多用户条件下记录日志)。ThreadLocalTraceLogFilter则是Zipkin的使用。

猜你喜欢

转载自blog.csdn.net/define_us/article/details/80169039