小编vip*_* cp的帖子

Spring Boot-不同的系统(eureka,zuul,ribbon,nginx)用于什么?

我一直在工作,spring现在想学习spring boot微服务。我了解microservice所有内容及其运作方式。在浏览文档时,我遇到了很多用于开发的东西microservicesspring boot而我对此非常困惑。

我列出了以下系统和问题:

  1. Netflix Eureka-我知道这是服务发现平台。所有services都将注册到eureka服务器,并且 microservices都是eureka客户端。现在,我的疑问是,没有API网关,此服务注册表是否有任何用途?这是为了了解服务注册表的实际使用。
  2. ZUULApi网关 -我知道ZUUL可以用作API网关,它基本上是一个负载均衡器,它调用与请求URL相对应的适当的微服务。这个假设正确吗?api网关将与Eureka交互以获得适当的微服务吗?

  3. NGINX-我看过 NGINX还可以用作API网关吗?那可能吗?我也读了一些其他地方NGINX可以用作服务注册表,也可以作为尤里卡的替代品!因此哪个是对的?api网关或服务注册表,或两者兼而有之?我知道这nginx是一个网络服务器,reverse proxies可以进行强大的配置。

  4. AWS api网关 -这也可以替代ZUUL吗?

  5. 丝带 -有什么ribbon用?我不明白!

  6. AWS ALB-这也可以用于负载平衡。因此,如果有,我们是否需要ZUUL AWS ALB

请帮忙

nginx amazon-web-services spring-boot microservices netflix-zuul

13
推荐指数
3
解决办法
4630
查看次数

我如何在80端口运行wildfly 8

如何在端口80中运行wildfly 8.2.1?我可以通过更改下面的偏移量在不同的端口运行wildfly.

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:100}">
Run Code Online (Sandbox Code Playgroud)

但无法在80端口运行.

wildfly wildfly-8

4
推荐指数
1
解决办法
6712
查看次数

方法参数的目标类型转换,Lambda

考虑以下两个功能接口(java.lang.Runnable and java.util.concurrent.Callable<V>):

public interface Runnable {
    void run();
}

public interface Callable<V> {
    V call();
}
Run Code Online (Sandbox Code Playgroud)

假设您有overloaded如下方法调用:

void invoke(Runnable r) {
    r.run();
}

<T> T invoke(Callable<T> c) {
    return c.call();
}
Run Code Online (Sandbox Code Playgroud)

考虑以下方法调用

String s = invoke(() -> "done");
Run Code Online (Sandbox Code Playgroud)

这会打电话给invoke(Callable)。但是如何?编译器如何确定Type为可调用类型?我从阅读的Oracle文档中看不懂。

java lambda java-8 functional-interface

3
推荐指数
2
解决办法
73
查看次数

在 spring mvc 中使用 servlet 过滤器将现有响应替换为新响应

我想json使用过滤器将现有响应(在某些情况下)替换为新响应。我想做的是JSON从过滤器读取现有的响应()。使用新值修改它并写回响应。但结果显示两者都有反应。

也就是说,我从回复中读到的内容以及我新添加的内容。但我需要用新的响应替换旧的响应。下面添加了代码。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
{
    try{
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
        final PrintStream ps = new PrintStream(baos);

        chain.doFilter(request,new HttpServletResponseWrapper((HttpServletResponse)response) {
               @Override
             public ServletOutputStream getOutputStream() throws IOException {
                return new DelegatingServletOutputStream(new TeeOutputStream(super.getOutputStream(), ps)
                );
             }
          @Override
             public  PrintWriter getWriter() throws IOException {
                return new PrintWriter(new DelegatingServletOutputStream (new TeeOutputStream(super.getOutputStream(), ps))
                );
             }
          });
        /* get existing response as string*/
        String respopn=baos.toString(); 
        JSONObject json=new JSONObject(respopn);
        JSONObject dMap=new JSONObject(json.get("dataMap"));
        dMap.put("new", "newValue");
        json.put("dataMap", dMap); // …
Run Code Online (Sandbox Code Playgroud)

java json servlets spring-mvc filter

2
推荐指数
1
解决办法
5035
查看次数

Hikari 池 activeConnections 未显示在 JMX mbean 中

spring boot我通过监控应用程序java Visual Vm。我想监控连接池。HikariCP 是用于connection pooling. 我无法看到active connections详细信息中的数量。附截图。它不是默认公开的还是我们应该以编程方式公开它?请指教

在此输入图像描述

java jvisualvm spring-boot

2
推荐指数
1
解决办法
3421
查看次数

即使分配了 8GB 空间,Hazelcast 也会出现堆空间内存不足错误

我在我的项目中有一个要求,将 900 万条数据从 oracle 数据库缓存到 Hazelcast 。但显然 Hazelcast 消耗的堆空间比它应该消耗的更多。我已经为应用程序分配了 8bg 堆空间,但仍然出现内存不足错误。

下面是我的数据加载器类。

public class CustomerProfileLoader  implements ApplicationContextAware, MapLoader<Long, CustomerProfile> {

private static CustomerProfileRepository customerProfileRepository;

    @Override
    public CustomerProfile load(Long key) {
        log.info("load({})", key);
        return customerProfileRepository.findById(key).get();
    }

    @Override
    public Map<Long, CustomerProfile> loadAll(Collection<Long> keys) {
        log.info("load all in loader executed");
        Map<Long, CustomerProfile> result = new HashMap<>();
        for (Long key : keys) {
            CustomerProfile customerProfile = this.load(key);
            if (customerProfile != null) {
                result.put(key, customerProfile);
            }
        }
        return result;
    }

   @Override
    public Iterable<Long> loadAllKeys() { …
Run Code Online (Sandbox Code Playgroud)

java hazelcast

1
推荐指数
1
解决办法
551
查看次数