原创 12.微服務-分佈式事務TCC型(一)

柔性事務解決方案:TCC 實現 一個完整的業務活動由一個主業務服務與若干從業務服務組成 主業務服務負責發起並完成整個業務活動 從業務服務提供TCC型業務操作 業務活動管理器控制業務活動的一致性,它登記業務活動中的操作, 並在 業

原创 10.微服務-分佈式事務最終一致性(三)

消息子系統存儲預發送消息(主動方應用系統)查詢消費確認超時的消息(消息恢復子系統)確認併發送消息(主動方應用系統)確認消息已被成功消費(被動方應用系統) 對應的步驟 看看代碼實現流程,支付成功後,首先是pay網關收到支付成功的消

原创 11.微服務-分佈式事務最大努力通知型

最大努力通知型 1、Rabbitmq實現延遲隊列 2、使用swoft自帶服務組件 3、將最大努力通知服務放入到swoft 柔性事務解決方案:最大努力通知(定期校對) 實現 業務活動的主動方,在完成業務處理之後,向業務活動的被動方

原创 5.微服務-熔斷降級組件

熔斷組件封裝 熔斷技術可以說是一種“智能化的容錯”,當調用滿足失敗次數,失敗比例就會觸發熔斷器打開,有程序自動切斷當前的RPC調用,來防止錯誤進一步擴大。實現一個熔斷器主要是考慮三種模式,關閉,打開,半開。 <?php de

原创 基於laravel的微信商城組件之會員組件(1)

步驟1.創建基本的文件,在lixiyong目錄下執行cmd命令:2.刪掉一些不必要的文件,如member裏面的src文件夾3.在laravelnew項目中加載本地的lshop-laravel組件4.創建一些組件基本的文件夾5.通過

原创 7.微服務-分佈式事務最終一致性(一)

微服務架構-最終一致性方案設計思路一、可靠消息最終一致(異步確保型)二、那消息投遞如何做到可靠呢?1、從主動方應用的角度2.從中間件的角度3.異常情況的總結處理三、常規消息隊列的流程跟特點3.1、MQ隊列消息的生產與消費常規流程3

原创 8.微服務-安裝rabbitmq

php環境下安裝rabbitmq一、docker安裝rabbitMQ二、安裝 rabbitmq-c三、接下來就是安裝 php amqp 的擴展了:四、如果不想在docker安裝,可以把第一步驟變爲以下操作1、安裝準備安裝必要依賴下

原创 寫一個laravel的composer單元測試組件

開發步驟laravel的compser單元測試組件1.用別人創建好的第三方工具包來創建一些基本的文件,比較方便,手動上一篇博客也做過了2.在根目錄見一個lixiyong的文件夾,在lixiyong文件夾建一個lunit-larav

原创 開發一個簡單的compser組件

這裏寫自定義目錄標題compser組件1.新建一個composer文件夾2.新建一個composer.json文件3.往文件裏面寫入三條json數據4.composer文件夾下創建一個src文件夾,並在裏面新建一個index.ph

原创 發佈寫好的composer組件到官方倉庫,以及上傳代碼到代碼倉庫

組件發佈步驟1.組件包發佈1.1 創建代碼倉庫,首先在github上創建倉庫1.2 填寫名稱與描述1.3 然後準備提交我們的代碼切換到包目錄,執行下面的命令2.提交到packagist2.1 Composer安裝包都是從packa

原创 php五大設計模式

策略模式是對象的行爲模式,用意是對一組算法的封裝。動態的選擇需要的算法並使用。 策略模式指的是程序中涉及決策控制的一種模式。策略模式功能非常強大,因爲這個設計模式本身的核心思想就是面向對象編程的多形性思想。 策略模式的三個角色:

原创 6.微服務-項目大體架構

第三方支付平臺一、支付平臺服務化流程二、分佈式事務問題的代碼場景三、不同的事務的解決方案2.1可靠消息最終一致(異步確保型)2.2柔性事務解決方案:TCC(兩階段型、補償型)2.3柔性事務解決方案:最大努力通知(定期校對) 一、支

原创 13.微服務-分佈式事務TCC型(二)

代碼實現實現首先在rpc控制器中給業務服務加tcc標記,主服務和從服務都分別有這三個方法,以下是主服務從服務聲明tcc服務的註解註冊到bean容器中在調用時得區分TCC型rpc和普通rpc,現在來看看上面的$services =

原创 9.微服務-分佈式事務最終一致性(二)

封裝rabbitMQ的連接池消息子系統的構建1.構建消息服務子系統(包含接口)2.構建其他服務(骨架大搭建)3.簡單的封裝rabbitMQ的連接池4、消息發佈確認5、消息存儲的設計(任務數據存儲)6、消息id的生成7、服務提供任務

原创 win環境php7.2無法加載curl,openssl的問題解決方法

在win7或者win10搭建php開發環境遇到一些奇怪的問題1.執行php -m時,openssl顯示已經加載,如圖:2.但是在實際使用curl或者openssl相關函數時,卻提示沒有這種函數,直接報錯3.解決辦法3.1建一個te