分布式异步编程框架 Koper

来源:互联网 发布:淘宝电信卡实名认证 编辑:程序博客网 时间:2024/06/07 01:21
Koper 详细介绍

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 .

如果你想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析和大数据等知识点可以来找我。

而现在我就有一个平台可以提供给你们学习,让你在实践中积累经验掌握原理。主要方向是JAVA架构师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的JAVA架构进阶群:514790886

注:请看清楚加群要求

1、具有2-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

6.小号加群一律不给过,谢谢。


原创粉丝点击