<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 基于Swoole擴展分布式全棧開發框架 PHP在Web界很出名,網站的建設大多數都是使用PHP開發的,但是不是PHP就僅僅限制于Web開發了呢?在Swoole擴展出來之前PHP似乎確實只能在Web建站上蹦跶下,不過在Swoole擴展的支持下,PHP可以說是能在高性能高并發的網絡通訊中一戰了。 很多人接觸過Swoole又被它眾多的API和功能打敗了,誠然功能越強大復雜度越高,上手難度也就越大,Swoole可以定義為PHP的高性能網絡庫,如果想靈活自由的使用它則必須在其基礎上進行開發,而開發出的框架目的就是優化眾多開發者使用體驗。 SwooleDistributed框架(簡稱SD)是基于Swoole開源的一個分布式通訊框架,發展到現在已經接近2年,不斷的維護和革新,不斷地添加功能和代碼優化,如今的SD框架可以說是相當的強大。基于SD框架上線的產品也有不少,穩定性和性能都一致好評,框架開發者也非常的活躍,版本的更新和Bug的修復也相當的快,文檔也相對的比較全面,還有些基礎的視頻幫助大家入門。 那么說說SD框架究竟給了開發者多大的便利呢? 首當其沖的是SD框架天然分布式的架構,基于Consul配置中心SD框架實現了服務節點的發現,通過發現SD節點,SD服務器間會倆倆相連,完成一個網狀的拓撲結構,沒有中心節點不依賴任何的存儲結構。SD服務器間會交換同步客戶端數據,每一個SD服務器都能拿到集群中客戶端的所有狀態。動態添加服務器和移除服務器,以及服務器健康狀態的檢測均能通過Consul控制臺查看SD服務器也會基于這些數據進行集群拓撲的動態調整,SD框架中提供的消息API均是支持集群系統的,單機模式和集群模式對業務代碼不產生任何的影響。 ![](https://box.kancloud.cn/a3217603caf67ea6ad913ffd190d6087_349x292.png) ![](https://box.kancloud.cn/29dfaae2eaea85c01a10516c7f81b130_1395x805.png) SD框架還能通過簡單的配置將具體服務發布在Consul上,通過Consul實現微服務,同樣微服務的發現和健康檢測都是自動進行的,SD框架提供了內部的RPC方案,還提供了微服務的降級和熔斷,用于保證整體服務的穩定性。我們可以訪問框架的狀態信息看到目前的服務分布。 ![](https://box.kancloud.cn/12b70806daea7e70b6390c9eca483ed7_453x932.png) SD封裝了基于定時器的定時任務系統,并且可以通過Consul實現定時任務的動態裝配。 ![](https://box.kancloud.cn/198e36c5437fdae419ea7d561f184034_816x371.png) 我們都知道Swoole是基于事件驅動的擴展,是異步回調的風格,那么如果直接使用會導致代碼間相互嵌套影響邏輯的寫作和代碼的識別,SD框架基于yield實現了協程模式,可以通過yield來實現同步的寫法。 Swoole提供了異步Redis和異步Mysql客戶端的庫,SD框架封裝了客戶端連接池,可以通過連接池實現高并發的異步客戶端。 ```php $result = yield $this->redis_pool->getCoroutine()->set('testroute',1); $this->http_output->end($result); ``` Swoole是多進程模式,SD提供了用戶進程模板,可以輕松的實現自定義進程,并能在進程中使用協程調用連接池,并封裝了進程間的通訊。 ```php ProcessManager::getInstance()->addProcess(MyProcess::class); ProcessManager::getInstance()->getRpcCall(ClusterProcess::class, true)->my_sendToAll($data); ``` 除此之外SD框架還提供了自動Reload模塊,消息分發模塊,日志系統,RedisLua管理,高速緩存,分布式鎖,Leader選舉,對象池等。異步客戶端提供了AMQP,MQTT,Http,Tcp等,基本所有的回調都提供了對應的協程風格。 ![](https://box.kancloud.cn/b7be372ac36ec031cab8ce7aeed29dd4_1047x300.png) SD框架是MVC設計風格,通過裝載器裝載對應的模塊,熟悉MVC框架的開發者可以迅速上手。 通過Ports管理SD框架可以開啟多個端口,比如通過Http給所有的Tcp客戶端發消息這種需求在SD中特別的輕松,通過Pack我們可以給不同的端口開啟不同的協議解析,然而在業務代碼中開發者只需正常的發送信息,協議間的轉換都是由框架自動進行的。通過Route我們可以自定義路由,將消息路由給不同的Controller處理,通過Task我們可以將些耗時的任務丟給Task進程異步處理。通過Event我們可以搭建自己的消息派發機制,比如實現高性能Http同步堵塞,服務間的同步信號等。通過MQTT異步客戶端或者是AMQP異步客戶端我們可以搭建自己的任務處理系統,通過RabbitMQ進行任務的派發。甚至是和一些開源的MQTT服務器集成,打造純業務處理的服務器。 ![](https://box.kancloud.cn/eea38590a17673b7ca36c96748735d42_494x382.png) 總之通過SD框架可以玩轉的東西有很多很多,不僅可以單機,業務量上升后可以轉換為集群模式,其實最重要的是更新維護頻繁,作者活躍不是么。 附帶SD框架的文檔以及官網 [官網](http://sd.youwoxing.net/) [文檔](http://docs.youwoxing.net/) [GitHub](https://github.com/tmtbe/SwooleDistributed) 如果你喜歡,請打個星星支持下~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看