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应用,业务监控,数据统计和大数据等场景。
在一个高可伸缩的应用里,系统架构和事件驱动架构如下:
典型的使用场景异步业务处理
分布式数据更新或缓存更新
数据日志
业务监控和告警
详情参见 AsyncScenariosandexamples.
如何参与贡献1修改BUG或改进Koper你可以自由 Fork 源代码,提交你的PullRequest给我们。
2贡献其他的消息队列实现Koper提供了KafkaProvider作为缺省实现。而且Koper有着良好的扩展性,你可以轻松的实现其他消息队列的Provider,比如说RabbitMQ,RocketMQ,ActiveMQ等等。
详情参见 DeveloperGuide .
【作者】何坤,前宅米首席架构师,阿里巴巴平台架构师。主要领域大型网站架构,框架、分布式系统,云计算研发.曾负责阿里Webx框架,Doris分布式存储等设计研发。
评论