<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>

          Nepxion-Thunder分布式 RPC 集成調(diào)用框架

          聯(lián)合創(chuàng)作 · 2023-09-23 12:54

          概要

          1.1 Thunder是基于Netty + Hessian + Kafka + ActiveMQ + Tibco + Zookeeper(Curator Framework) + Redis + FST + Spring + Spring Web MVC + Spring Boot + Docker分布式RPC調(diào)用框架。架構(gòu)思想主要是來自阿里巴巴的Dubbo框架,但比它更輕量級,零配置式實現(xiàn)部署
          跟Dubbo相比,Thunder的增強功能包括
          1)支持Message Queue(消息隊列中間件),Dubbo只支持Netty等內(nèi)存堆積消息的方式,Thunder不僅支持內(nèi)存堆積,也支持MQ的硬盤文件堆積
          2)支持本地鏈式調(diào)用,全程無阻塞的調(diào)用方式,可省去業(yè)務端寫Callback的步驟
          3)支持跨進程的調(diào)用鏈,服務端和調(diào)用端都支持軟負載均衡
          4)支持遠程配置和調(diào)優(yōu),業(yè)務端所有集群下的應用可共享一個配置文件,并且通過遠程配置方式修改,也支持業(yè)務系統(tǒng)自身已經(jīng)存在的參數(shù)化平臺的配置方式接入
          5)支持豐富的監(jiān)控手段,默認支持Redis,Splunk,自定義第三方WebService做監(jiān)控
          6)支付豐富的服務治理手段,圖形化,上下線宕機郵件或者短信通知,異常事件自定義捕捉
          7)支持序列化在網(wǎng)絡傳輸層面的壓縮(QuickLz),在大數(shù)據(jù)量傳輸,通過壓縮,對提高吞吐量(TPS)尤其有效
          8)支持Spring的簡化配置,支持全局配置和局部配置的結(jié)合
          9)支持對微服務框架的整合(例如:Spring Boot)
          跟Dubbo相比,Thunder的未支持功能包括
          1)軟負載均衡的算法,Thunder支持三種(輪詢,隨機,一致性哈希),Dubbo還支持最少活躍度,還支持預熱和權重計算
          2)訪問規(guī)則,Thunder支持限流,密鑰匹配,版本匹配,Dubbo相對更豐富,例如黑白名單,服務降級,網(wǎng)段隔離
          1.2 Netty是由JBOSS提供的一個Java開源框架,提供異步的、事件驅(qū)動的網(wǎng)絡應用程序框架和工具,它是基于TCP,UDP協(xié)議的傳輸方式的NIO框架。在Thunder,實現(xiàn)異步/同步/廣播的調(diào)用方式,多線程實現(xiàn)調(diào)用
          1.3 Hessian是輕量級的Remoting HTTP框架,提供同步的調(diào)用方式。它是基于二進制RPC協(xié)議。在Thunder,實現(xiàn)異步/同步/廣播的調(diào)用方式,多線程實現(xiàn)調(diào)用
          1.4 Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),非JMS標準,是MQ里面性能最優(yōu)化的。在Thunder,實現(xiàn)異步/同步/廣播的調(diào)用方式,多線程實現(xiàn)調(diào)用
          1.5 ActiveMQ是由Apache出品,最流行的,能力強勁的開源消息總線。它支持JMS1.1和J2EE 1.4規(guī)范的 JMS Provider,支持二進制協(xié)議(openwire,amqp),文本協(xié)議(stomp),物聯(lián)網(wǎng)協(xié)議(mqtt),WebSocket(ws)五種協(xié)議,Spring無縫整合它到框架里面。在Thunder,實現(xiàn)異步/同步/廣播的調(diào)用方式,多線程實現(xiàn)調(diào)用
          1.6 TIBCO(NASDAQ:TIBX)是一家有著20年歷史的老牌中間件公司,致力于EAI企業(yè)應用集成產(chǎn)品和解決方案的領域。在Thunder,實現(xiàn)異步/同步/廣播的調(diào)用方式,多線程實現(xiàn)調(diào)用。由于是商業(yè)軟件,不提供開發(fā)包,請到該公司主頁獲取免費版開發(fā)包
          1.7 Zookeeper是分布式應用程序協(xié)調(diào)服務,是Google的Chubby一個開源的實現(xiàn),是Hadoop和HBase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、名字服務、分布式同步、組服務等。Thunder利用Apache Curator Framework的衍生組件,實現(xiàn)對Zookeeper的調(diào)用
          1.8 Redis是一個Key-Value存儲系統(tǒng),異常快速的數(shù)據(jù)持久化,支持豐富的數(shù)據(jù)類型,良好的操作原子性,多實用的工具,可以在多個用例如緩存,消息,隊列使用(Redis原生支持發(fā)布/訂閱),任何短暫的數(shù)據(jù),應用程序,如Web應用程序會話,網(wǎng)頁命中計數(shù)。Thunder利用它做發(fā)布/訂閱功能,該功能是對Netty和Hessian的增強
          1.9 FST(Fast Serialization)和Kryo是實現(xiàn)Java快速對象序列化的開發(fā)包。序列化速度更快(2-10倍)、體積更小,而且兼容 JDK 原生的序列化,使用者可以任選1個,推薦FST
          1.10 Faster Jackson和Alibaba fastjson是實現(xiàn)的Json對對象和字符串的高速轉(zhuǎn)換。使用者可以任選1個,推薦Faster Jackson
          1.11 Spring是輕量級的Java開發(fā)框架。Thunder利用Spring AOP技術實現(xiàn)面向切面的動態(tài)代理,通過命名空間的自定義標簽解析FactoryBean
          1.12 Spring Web MVC,Thunder利用它實現(xiàn)和Hessian的整合
          1.13 Apache Core,Thunder利用它的異步NIO實現(xiàn)服務治理的數(shù)據(jù)傳送
          1.14 Ebay Jetstream,Thunder利用它實現(xiàn)Web版的服務治理
          1.15 Google Guava EventBus,Thunder利用它實現(xiàn)事件驅(qū)動發(fā)布框架內(nèi)部事件,解除耦合;發(fā)布外部事件,進行重試補償,異常通知(郵件或短信通知)
          1.16 Splunk或Redis,Thunder利用它實現(xiàn)日志云管理
          1.17 Nepxion Swing Repository,Thunder利用它實現(xiàn)Java Desktop版的服務治理
          1.18 Java SPI,Thunder利用它實現(xiàn)相關擴展
          1.19 Jdeferred Promise,Thunder利用它實現(xiàn)鏈式調(diào)用
          1.20 Docker是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口,Thunder利用它做容器
          

          2. 功能

          2.1 框架進程可以既是服務方,又是調(diào)用方,兩者為一體,互為Server和Client模式,只要在注冊中心注冊,無論是客戶端還是服務端都將是負載均衡的節(jié)點。基于上述設計,支持多級以上的調(diào)用鏈方式:純異步多級調(diào)用,純同步多級調(diào)用,先異步后同步多級調(diào)用,先同步后異步多級調(diào)用,異步多層Callback調(diào)用
          2.2 支持TCP NIO框架(Netty),TCP MQ消息隊列框架(Kafka,ActiveMQ,Tibco),HTTP(Hessian)的傳輸方式,支持多線程調(diào)用
          2.3 支持同步調(diào)用,異步調(diào)用Callback,廣播通知方式(點對點的發(fā)布訂閱模式),同步調(diào)用和異步調(diào)用的超時機制
          2.4 支持基于Spring的簡單本地調(diào)用方式(顯式調(diào)用),達到遠程調(diào)用的目的,RPC調(diào)用
          2.5 支持服務方應用上下線調(diào)用方和服務的自動發(fā)現(xiàn),不用重啟調(diào)用方應用
          2.6 支持心跳和自動重連機制
          2.7 支持應用與注冊中心Zookeeper重連機制
          2.8 支持注冊中心的負載均衡的時候,切換到不健康服務方的時候,繼續(xù)切換功能,并提供嘗試切換次數(shù)的設定
          2.9 支持注冊中心的負載均衡,一致性Hash(Consistent Hash)算法,權重輪循算法(Round Robin),隨機輪循算法(Random)
          2.10 支持授權,基于密鑰的服務安全訪問,跟Hessian自帶的安全認證結(jié)合在一起,采用雙向密鑰匹配方式
          2.11 支持接口調(diào)用的版本Version控制,版本不匹配拒絕調(diào)用,采用雙向版本匹配方式
          2.12 支持限流,通過令牌刷新方式,可控制單位時間內(nèi)接口被調(diào)用的次數(shù)
          2.13 支持升級后,服務中心持久化對象不一致,版本判斷,并重新創(chuàng)建
          2.14 支持遠程配置和調(diào)優(yōu),管理者可以通過遠程配置工具,配置和調(diào)優(yōu)眾多分布式的服務提供方和調(diào)用方,當然它們既可以使用本地的配置,也可以使用遠程配置。業(yè)務端可以通過SPI方式自定義遠程存儲,比如通過外部參數(shù)化平臺接入的方式,進行存儲
          2.15 支持統(tǒng)計中心的服務依賴情況(SOA治理)。查看服務方接口所在的地址和端口,所走的協(xié)議,所屬應用,所屬組,以及它暴露的接口方法列表,查看其是否啟動,可動態(tài)刷新;查看調(diào)用方的所調(diào)用的接口,接入的地址,所走的協(xié)議,所屬應用,所屬組,查看其是否接入,可動態(tài)刷新
          2.16 支持監(jiān)控中心監(jiān)控所有的方法調(diào)用(耗時、次數(shù)、異常等)信息,結(jié)合Redis(哨兵模式和集群模式)或者Splunk做動態(tài)日志監(jiān)控,也可以通過第三方WebService分布式接入,做數(shù)據(jù)統(tǒng)計,通過廣播方式,所有接入進來的WebService都將獲得統(tǒng)計數(shù)據(jù)
          2.17 提供界面化的服務治理,包括分布式的服務方和調(diào)用的分布情況,上下線動態(tài)刷新,以及令牌控制,密鑰控制,版本控制等功能
          2.18 提供圖形化的網(wǎng)絡拓撲部署展現(xiàn)
          2.19 提供圖形化的調(diào)用鏈跟蹤和異常分析,可基于集成式的Log文件,Redis緩存等數(shù)據(jù)源
          2.20 支持五大通信中間件的性能優(yōu)化,通過獨立的配置文件實現(xiàn),采用局部配置和全局配置的方式,局部配置優(yōu)先于全局配置
          2.21 支持MQ(消息隊列)在同一個進程中為服務/調(diào)用指定不同的MQ服務器
          2.22 支持MQ(消息隊列)指定三種Connection或Session的緩存方式(SingleConnectionFactory,CachingConnectionFactory,PooledConnectionFactory)
          2.23 支持MQ(消息隊列)指定兩種初始化方式(JNDI和非JNDI)
          2.24 支持異步事件驅(qū)動發(fā)布框架發(fā)布事件,進行業(yè)務系統(tǒng)的重試補償,接入框架的所有異常通知(郵件或短信通知)
          2.25 支持鏈式調(diào)用
          2.26 支持不同線程池選用的隊列類型配置,線程池Reject五大模式的配置。采用多線程池隔離技術,當多個服務部署在同一個JVM,一個服務調(diào)用忙,不會影響其它服務調(diào)用,業(yè)務端可以視具體場景,決定是否要開啟線程隔離
          

           

          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          編輯 分享
          舉報
          <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>
                  轻轻搞| 欧美色图亚洲无码 | 久久久91精品国产一区陈可心 | 五月丁香激情啪啪 | xxxxx操 |