Koper

分布式异步编程框架
授权协议 Apache
开发语言 Java
所属分类 服务器软件、 分布式应用/网格
软件类型 开源软件
地区 国产
投 递 者 通建安
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Koper

Koper是一个基于消息和事件驱动的分布式异步编程框架,

  • Koper的设计目标是为大型场景提供高性能高吞吐的简单编程方案。

  • Koper为分布式环境提供了简化的消息监听和数据事件监听模型,它可以帮你快速建立异步化应用。

  • Koper可用于互联网高流量应用,例如电子商务、社交、互联金融、O2O等等。

  • [快速启动] [用户指南]

Concept

概念

  • 核心架构: 消息架构, 事件驱动架构(EDA)

  • 核心概念: 生产者,消费者,消息,消息队列,主题,订阅

  • 核心组件: 消息发送者(MessageSender), 消息监听者(MessageListener), 数据事件监听者(DataEventListener)

  • 高层概念: 消费者群组, 消息分区

特性

  • 简化的消息队列监听器模型和API。

  • 简化的数据事件模型和API。

  • 独立消息队列提供者。

    • Koper默认支持Kafka,也支持其他消息队列作为提供者,例如 RabbitMQ,RocketMQ

  • 高性能、高吞吐量

  • 基于消息队列的高可伸缩性

  • 高级特性: 时间点记录、消息追踪

编程模型

1. 监听器(Listener)模型

用户注册的例子。 当一个用户注册, MessageSender 会向MQ发送一个消息。

messageSender.send("koper.memberSignup", "Signed up successfully! " + member.getPhoneNo());

同时,消费者订阅了这个主题然后处理消息(发送消息通知用户)。

 @Component  
 @Listen(topic = "koper.memberSignup") 
 public class MemberSignupListener { 
     @Autowired 
     private SmsService smsService;  

     public void onMessage(String msg) {
        smsService.sendSms(msg);
    }
 }

2. 数据事件 & 数据监听器模型

订单例子。

Koper支持事件驱动编程。数据事件的机制是拦截方法调用,并把数据事件发送给消息队列。

orderDao.insertOrder( order);

orderDao.updateOrder( order);

响应事件的监听器(DataListener)

@Component  
@DataListener(dataObject = "koper.demo.dataevent.dao.impl.OrderDaoImpl")  
public class OrderListener {  
   // data event: onInsertOrder  
   public void onInsertOrder(Order order) {  
      System.out.println("orderNo : " + order.getOrderNo());  
      System.out.println("create time : " + order.getCreatedTime());  
      // do some other operations 
   }  
   //data event: onUpdateOrder  
   public void onUpdateOrder(Order order) { 
      System.out.println("orderNo : " + order.getOrderNo()); 
       // do some other operations such as cache refresh 
   } 
   //data event: exception on updateOrder  
   public void onUpdateOrder_X(Order order, DataEvent event) {  
      String ex = event.getException();  
      System.out.println("onUpdateOrder exception :" +ex);
   }
}

Koper 可以用来做什么?

Koper是基于消息队列和事件驱动架构进行分布式计算的框架,它适用于Web应用,业务监控,数据统计和大数据等场景。

在一个高可伸缩的应用里,系统架构和事件驱动架构如下:

典型的使用场景

  • 异步业务处理

  • 分布式数据更新或缓存更新

  • 数据日志

  • 业务监控和告警

详情参见 Async Scenarios and examples.

如何参与贡献

1 修改BUG 或 改进Koper

你可以自由 Fork 源代码,提交你的Pull Request给我们。

2 贡献其他的消息队列实现

Koper提供了Kafka Provider作为缺省实现。 而且Koper有着良好的扩展性,你可以轻松的实现其他消息队列的Provider,比如说 RabbitMQ, RocketMQ, ActiveMQ 等等。

详情参见 Developer Guide .

【作者】何坤,前宅米首席架构师,阿里巴巴平台架构师。主要领域大型网站架构,框架、分布式系统, 云计算研发. 曾负责阿里Webx框架, Doris分布式存储等设计研发。

 相关资料
  • 介绍 Javascript 是一个单线程的编程语言,单线程的特点就是一次只能处理一件事情,当前代码任务耗时执行会阻塞后续代码的执行。异步编程则是一种事件驱动编程,请求调用函数或方法后,无需立即等待响应,可以继续执行其他任务,而之前任务响应返回后可以通过状态、通知和回调来通知调用者。 异步编程方法 js 中的异步编程方法有回调函数、事件处理函数、观察者、Promise、Generator、async

  • NodeJS最大的卖点——事件机制和异步IO,对开发者并不是透明的。开发者需要按异步方式编写代码才用得上这个卖点,而这一点也遭到了一些 NodeJS反对者的抨击。但不管怎样,异步编程确实是NodeJS最大的特点,没有掌握异步编程就不能说是真正学会了NodeJS。本章将介绍与异步编 程相关的各种知识。 回调 在代码中,异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后程序就异

  • 目前为止,我们在做的都是同步编程。同步编程执行过程很简单:一个程序从第一行开始,逐行执行一直到末尾。每次调用一个函数时,程序就会等待这个函数返回然后在执行下一行。 在异步编程中,函数地执行通常是非阻塞的。换句话说,每次你调用一个函数它就会立即返回,但相对得,这就表示函数并不会立即被执行。它有了一种机制(名为 调度程序),让可以随时在未来执行这些函数。 使用异步编程会导致程序在任何异步函数开始之前就

  • 分布式程序是那些旨在在计算机网络上运行并且只能通过消息传递协调其活动的程序。 我们可能想要编写分布式应用程序的原因有很多。 这里是其中的一些。 Performance - 我们可以通过安排程序的不同部分在不同的机器上并行运行来使程序更快。 Reliability - 我们可以通过将系统结构化以在多台机器上运行来制造容错系统。 如果一台机器出现故障,我们可以继续使用另一台机器 Scalability

  • 本章描述如何编写运行于Erlang节点网络上的分布式Erlang程序。我们描述了用于实现分布式系统的语言原语。Erlang进程可以自然地映射到分布式系统之中;同时,之前章节所介绍的Erlang并发原语和错误检测原语在分布式系统和单节点系统中仍保持原有属性。 动机 我们有很多理由去编写分布式应用,比如: 速度 我们可以把我们的程序切分成能够分别运行于多个不同节点的几个部分。比如,某个编译器可以将一个

  • JavaScript 的一个强大特性就是它可以轻松地处理异步编程。作为面向互联网设计的语言,JavaScript 从一开始就需要响应一些诸如点击和按键这些用户交互的能力。Node.js 通过使用回调函数来替代事件进一步推广了 JavaScript 的异步编程。随着越来越多的项目开始使用异步编程,事件和回调函数已不能满足开发者的所有需求。因此 Promise 应运而生。 Promise 是异步编程的