<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Koper分布式異步編程框架

          聯(lián)合創(chuàng)作 · 2023-10-01 07:01

          Koper

          Koper是一個基于消息和事件驅(qū)動的分布式異步編程框架,

          • Koper的設(shè)計目標是為大型場景提供高性能高吞吐的簡單編程方案。

          • Koper為分布式環(huán)境提供了簡化的消息監(jiān)聽和數(shù)據(jù)事件監(jiān)聽模型,它可以幫你快速建立異步化應(yīng)用。

          • Koper可用于互聯(lián)網(wǎng)高流量應(yīng)用,例如電子商務(wù)、社交、互聯(lián)金融、O2O等等。

          • [快速啟動] [用戶指南]

          Concept

          概念

          • 核心架構(gòu): 消息架構(gòu), 事件驅(qū)動架構(gòu)(EDA)

          • 核心概念: 生產(chǎn)者,消費者,消息,消息隊列,主題,訂閱

          • 核心組件: 消息發(fā)送者(MessageSender), 消息監(jiān)聽者(MessageListener), 數(shù)據(jù)事件監(jiān)聽者(DataEventListener)

          • 高層概念: 消費者群組, 消息分區(qū)

          特性

          • 簡化的消息隊列監(jiān)聽器模型和API。

          • 簡化的數(shù)據(jù)事件模型和API。

          • 獨立消息隊列提供者。

            • Koper默認支持Kafka,也支持其他消息隊列作為提供者,例如 RabbitMQ,RocketMQ

          • 高性能、高吞吐量

          • 基于消息隊列的高可伸縮性

          • 高級特性: 時間點記錄、消息追蹤

          編程模型

          1. 監(jiān)聽器(Listener)模型

          用戶注冊的例子。 當一個用戶注冊, MessageSender 會向MQ發(fā)送一個消息。

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

          同時,消費者訂閱了這個主題然后處理消息(發(fā)送消息通知用戶)。

           @Component  
           @Listen(topic = "koper.memberSignup") 
           public class MemberSignupListener { 
               @Autowired 
               private SmsService smsService;  
          
               public void onMessage(String msg) {
                  smsService.sendSms(msg);
              }
           }

          2. 數(shù)據(jù)事件 & 數(shù)據(jù)監(jiān)聽器模型

          訂單例子。

          Koper支持事件驅(qū)動編程。數(shù)據(jù)事件的機制是攔截方法調(diào)用,并把數(shù)據(jù)事件發(fā)送給消息隊列。

          orderDao.insertOrder( order);
          
          orderDao.updateOrder( order);

          響應(yīng)事件的監(jiān)聽器(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是基于消息隊列和事件驅(qū)動架構(gòu)進行分布式計算的框架,它適用于Web應(yīng)用,業(yè)務(wù)監(jiān)控,數(shù)據(jù)統(tǒng)計和大數(shù)據(jù)等場景。

          在一個高可伸縮的應(yīng)用里,系統(tǒng)架構(gòu)和事件驅(qū)動架構(gòu)如下:

          典型的使用場景

          • 異步業(yè)務(wù)處理

          • 分布式數(shù)據(jù)更新或緩存更新

          • 數(shù)據(jù)日志

          • 業(yè)務(wù)監(jiān)控和告警

          詳情參見 Async Scenarios and examples.

          如何參與貢獻

          1 修改BUG 或 改進Koper

          你可以自由 Fork 源代碼,提交你的Pull Request給我們。

          2 貢獻其他的消息隊列實現(xiàn)

          Koper提供了Kafka Provider作為缺省實現(xiàn)。 而且Koper有著良好的擴展性,你可以輕松的實現(xiàn)其他消息隊列的Provider,比如說 RabbitMQ, RocketMQ, ActiveMQ 等等。

          詳情參見 Developer Guide .

          【作者】何坤,前宅米首席架構(gòu)師,阿里巴巴平臺架構(gòu)師。主要領(lǐng)域大型網(wǎng)站架構(gòu),框架、分布式系統(tǒng), 云計算研發(fā). 曾負責阿里Webx框架, Doris分布式存儲等設(shè)計研發(fā)。

          瀏覽 15
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费日逼无码片 | 水蜜桃视频在线观看 | 69久蜜桃人妻无码精品一区 | 男女舞夜操逼视频一区二区 | 老女人操逼视频 |