小编RBa*_*jee的帖子

使用数据库 CDC 的事件溯源是否被认为是好的架构?

当我们谈论采购事件时,我们有一个简单的双写架构,我们可以写入数据库,然后将事件写入队列,如 Kafka。其他下游系统可以读取这些事件并相应地对它们采取行动/使用它们。

但是当试图使数据库和事件同步时会出现问题,因为需要对这些事件进行排序才能使其有意义。

为了解决这个问题,人们鼓励使用数据库提交日志作为事件源,并且有围绕它构建的工具,例如 Airbnb 的 Spinal Tap、Redhat 的 Debezium、Oracle 的 Golden Gate 等……它解决了一致性、排序保证和所有这些。

但是使用数据库提交日志作为事件源的问题是我们与数据库模式紧密耦合。微服务的数据库架构是公开的,数据库架构中的任何破坏性更改,如数据类型更改或列名更改,实际上都可能破坏下游系统。

那么使用 DB CDC 作为事件源是个好主意吗?

关于这个问题和使用 Debezium 进行事件溯源的讨论

software-design cqrs event-sourcing microservices debezium

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

Hadoop log4j无法正常工作因为没有找到任何appender for logger(org.apache.hadoop.metrics2.lib.MutableMetricsFactory)

我正在使用eclipse开发mapreduce,并尝试使用hadoop 2.6.0 windows独立模式进行测试.

但是获得log4j的以下错误,

如何修复下面的appender问题,

找不到logger的追加器(org.apache.hadoop.metrics2.lib.MutableMetricsFactory)

hadoop log4j相同的问题还没有工作但还没有答案

谢谢 ,

hadoop log4j

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

Java 与 Perl 相比的性能问题

我编写了一个 Perl 代码来处理大量 CSV 文件并获取输出,这需要 0.8326 秒才能完成。

my $opname = $ARGV[0];
my @files = `find . -name "*${opname}*.csv";mtime -10 -type f`;
my %hash;
foreach my $file (@files) {
chomp $file;
my $time = $file;
$time =~ s/.*\~(.*?)\..*/$1/;

open(IN, $file) or print "Can't open $file\n";
while (<IN>) {
    my $line = $_;
    chomp $line;

    my $severity = (split(",", $line))[6];
    next if $severity =~ m/NORMAL/i;
    $hash{$time}{$severity}++;
}
close(IN);

}
foreach my $time (sort {$b <=> $a} keys %hash) {
    foreach my $severity …
Run Code Online (Sandbox Code Playgroud)

java perl performance

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

使用Executor Service将Java多线程迁移到Akka

我只是想知道是否有可能替换用Java的Executor服务编写的Akka旧的多线程代码。我对此毫不怀疑。

Is akka actor runs in their own thread? 

How Threads will be assigned for the Actors ?

What are the pros and cons of migration of it is possible?
Run Code Online (Sandbox Code Playgroud)

目前,我将固定线程池用于多线程,并提交可调用对象。

示例代码

public class KafkaConsumerFactory {

    private static Map<String,KafkaConsumer> registry = new HashMap<>();

    private static ThreadLocal<KafkaConsumer> consumers = new ThreadLocal<KafkaConsumer>(){
        @Override
        protected KafkaConsumer initialValue() {
            return new KafkaConsumer(createConsumerConfig());
        }
    };

    static {
        Runtime.getRuntime().addShutdownHook(new Thread(){
            @Override
            public void run() {
                registry.forEach((tid,con) -> {
                    try{
                        con.close();
                    } finally {
                        System.out.println("Yes!! Consumer for …
Run Code Online (Sandbox Code Playgroud)

java multithreading akka

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