小编Luc*_*che的帖子

服务发现与负载平衡

我试图了解在哪种情况下我应该通过负载均衡器选择服务注册表.

根据我的理解,两种解决方案都涵盖相同的功能.

例如,如果我们将consul.io视为功能列表,我们有:

  • 服务发现
  • 健康检查
  • 键/值存储
  • 多数据中心

例如Amazon ELB等负载均衡器有:

  • 可配置为仅接受来自负载均衡器的流量
  • 使用以下协议接受流量:HTTP,HTTPS(安全HTTP),TCP和SSL(安全TCP)
  • 将请求分发到多个可用区中的EC2实例
  • 连接数与负载均衡器接收的并发请求数成比例
  • 配置Elastic Load Balancing用于监视使用负载均衡器注册的EC2实例的运行状况的运行状况检查,以便它可以仅向健康实例发送请求
  • 您可以在使用安全(HTTPS/SSL)连接的网络上使用端到端流量加密
  • [EC2-VPC]您可以创建面向Internet的负载均衡器,它通过Internet接收来自客户端的请求并将它们路由到您的EC2实例,或者面向内部的负载均衡器,它接收来自VPC中客户端的请求并路由它们到您的私有子网中的EC2实例.EC2-Classic中的负载平衡器始终面向Internet.
  • [EC2-Classic] EC2-Classic的负载平衡器支持IPv4和IPv6地址.VPC的负载平衡器不支持IPv6地址.
  • 您可以使用CloudWatch指标,访问日志和AWS CloudTrail监控负载均衡器.
  • 您可以将面向Internet的负载均衡器与您的域名相关联.
  • 等等

因此,在这种情况下,我无法理解为什么我会选择类似consul.ionetflix eureka以上Amazon ELB的服务发现.

我有一种预感,这可能是由于实现客户端服务发现服务器端服务发现,但我不太确定.

cloud web-services distributed-computing amazon-web-services microservices

38
推荐指数
3
解决办法
1万
查看次数

Java EE 7和Java EE 6之间的区别

Java EE 7和Java EE 6之间的主要区别是什么?

如果您需要向另一位开发人员解释主要区别,您将如何做到这一点?

就问题而言,我真的对新增技术不感兴趣,而是对现有技术感兴趣.

快速概述对我所要求的内容来说已经足够了.

为了增加一个问题,我想知道JAX-WS,JAX-RS和JSF中添加了哪些重大改进,仍然是用Java EE开发服务而不依赖于外部框架作为Spring的Hero任务?

java java-ee

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

bash cat多个文件

我正在尝试cat三个文件,并\n 在每个文件后获取并插入换行符,我想到使用类似的东西:

cat f1 f2 f3|tr "\EOF" "\n"
Run Code Online (Sandbox Code Playgroud)

没有成功.

实现这一目标的最简单方法是什么?

linux bash shell cat

10
推荐指数
3
解决办法
1万
查看次数

字符串数组上的Java 8流

我有一个格式的字符串:

row1col1 row1col2
row2col1 row2col2
row3col1 row3col2
Run Code Online (Sandbox Code Playgroud)

等等...

我想提取每个项目并构建一个具有以下属性的对象数组:

new MyObject(row1col1, row1col2); 
Run Code Online (Sandbox Code Playgroud)

我是Java 8和Streams的新手,我想知道如何在没有循环的情况下实现这一点.

通常我会使用a String.split('\n')将行累积到String数组中

然后是一个循环,我将在空格分隔符上再次分割每一行,并使用两个元素的结果数组(row1col1 row1col2)构建我的对象,直到没有更多行要处理.

像这样:

String sausage = "row1col1 row1col2\nrow2col1 row2col2\nrow3col1 row3col2";
String[] rows = sausage.split("\n");

for (String row : rows) {
    String[] objectData = u.split("\\s+");
    MyObject myObject = new MyObject(objectData[0], objectData[1]);
    myObjectList.add(myObject);
}
Run Code Online (Sandbox Code Playgroud)

谁能解释我如何用流来实现同样的目标,那背后的机制是什么让我这样做呢?

在增加元素数量时,这甚至是一种有效的思维方式,因为从我看到的所有示例中,流程都集中在过滤,收集或通常给出一组元素检索应用一些标准的次要集合.

java arrays collections java-8 java-stream

10
推荐指数
2
解决办法
2万
查看次数

Dropwizard 0.8和Jetty无法在资源上返回404

我正在尝试连接一个dropwizard 0.8.*应用程序,并且我使用了一个hello world starter例子.

代码保持不变,应用程序正常启动.

虽然当我尝试访问分配给hello world GET请求的路径时,浏览器会返回:

HTTP ERROR 404

Problem accessing /hello-world. Reason:

    Not Found
Run Code Online (Sandbox Code Playgroud)

这有点奇怪,因为应用程序日志说不然,并为该请求返回200:

0:0:0:0:0:0:0:1 - - [15/Sep/2015:07:33:58 +0000] "GET /hello-world HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36" 0
Run Code Online (Sandbox Code Playgroud)

我在配置方面遗漏了什么吗?我在OSX和谷歌Chrome下运行.

添加更多信息我尝试了两个不同的hello-world示例,但都失败了.在春季启动和akka-http的顶部我没有问题.

java servlets jetty dropwizard jersey-2.0

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

Akka HTTP 2.0使用SSL(HTTPS)

我正在尝试将自签名证书添加到我的配置中,以使我的Web服务通过SSL提供内容,但我没有运气.

这是我目前的配置

ssl {
  jksKeystore = "localhost.p12"
  password = "changeit"
}
Run Code Online (Sandbox Code Playgroud)

关于我为什么能够启动HTTPS服务器的任何想法?

我的项目是使用akka 2.0和scala

ssl scala akka akka-http

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

Java 8在对象的属性上传输nonNull

我有以下代码片段,它收集具有name包含特定过滤器的字符串属性的特定对象filterName.

List<Foo> filteredFoo= fooList.stream()
                .filter(Objects::nonNull)
                .filter(myFoo -> {
                            if (Strings.isNullOrEmpty(myFoo.getName()))
                                return false;
                            return myFoo.getName().contains(filterName);
                        }
                ).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但我想知道是否有更优雅的方式以if-statement函数方式编写并以比在过滤器中具有条件块更好的方式检查空或null属性.

java filter java-8 java-stream

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

c将指针传递给递归函数

所以我在这个程序上苦苦挣扎,我试图找出如何在递归函数中使用声明到main中的指针数组来存储数据,这里出现的问题是,如果它与单个方法相同指针,结构类型呢?通过引用将变量/数组传递给递归函数的最佳方法是什么?

#include <stdio.h>
#include <stdlib.h>
#define N 1

void f(int i,int j,int *cnt);

int j=0;

int main(int argc, char *argv[])
{
  int *cnt=0;
  f(0,++j,&cnt);
  printf("------ %d ---- \n",cnt);
  system("PAUSE");  
  return 0;
}

void f(int i,int j,int *cnt){

   if(i>N){
          printf("---if --- %d ---- %d \n",i,j);
          (*cnt)++;
          return;
          }

   (*cnt)++;
   printf("---bg --- %d ---- %d \n",i,j);
   f(i+1,++j,cnt);
   f(i+1,++j,cnt);        
}
Run Code Online (Sandbox Code Playgroud)

我想知道的另一件事是递归函数如何处理++ i和i ++和i + 1增量(作为参数传递时),

c recursion pointers memory-leaks

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

用awk实现尾部

好吧,所以在这里,我正在努力与这个awk代码,它应该模仿tail命令

num=$1;
{
    vect[NR]=$0;

}
END{
    for(i=NR-num;i<=NR;i++)
            print vect[$i]
}
Run Code Online (Sandbox Code Playgroud)

所以我在这里尝试实现的是由awk模拟的tail命令,例如考虑cat somefile | awk -f tail.awk 10 shoud打印文本文件的最后10行,有什么建议吗?

linux bash scripting awk tail

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

Grep与正则表达式

考虑这个文本文件:

TEST FILE : test                         #No match
                                         #No match
Run grep "1133*" on this file            #Match
                                         #No match
This line contains the number 113.       #Match
This line contains the number 13.        #No match
This line contains the number 133.       #No match
This line contains the number 1133.      #Match
This line contains the number 113312.    #Match
This line contains the number 1112.      #No match
This line contains the number 113312312. #Match
This line contains no numbers at all.    #No match
Run Code Online (Sandbox Code Playgroud)

grep …

regex linux bash grep

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