java不是分散式的兩個服務之間呼叫,如何實現事務回滾?
之前開發springCloud微服務,遇到微服務之間呼叫事務回滾問題,網上瀏覽存在多種解決方案。但是最後發現,實現服務回滾的多個服務必須要在同一個註冊中心下,也就是說,必須要有一個主服務管理者所有的分散式服務。
如果!兩個服務之間不存在任何關聯,如何實現事務回滾?
苦思冥想,終於想到了一個不是辦法的辦法。
在服務A呼叫服務B時,先獲取當前時間,將當前時間作為呼叫服務B的請求引數。
服務B獲取服務A的引數時,先執行一系列邏輯業務操作,到介面執行到最後,服務B也獲取當前時間。然後和服務A請求引數
的時間做差運算。得到時間差
我們進行服務呼叫無非是使用rest或者rpc ,可以設定呼叫介面限時。
在服務B判斷得到的時間差是否大於等於介面限時,如果大於等於則服務B丟擲異常,由於服務B丟擲了異常,則呼叫者服務A‘
也自然丟擲異常,這樣就避免了因為網路延遲,或者業務複雜執行時間長而造成的事務為題。
當然這樣做,被呼叫服務需要寫判斷程式碼。
相關推薦
java不是分散式的兩個服務之間呼叫,如何實現事務回滾?
之前開發springCloud微服務,遇到微服務之間呼叫事務回滾問題,網上瀏覽存在多種解決方案。但是最後發現,實現服務回滾的多個服務必須要在同一個註冊中心下,也就是說,必須要有一個主服務管理者所有的分散式服務。 &
【原創工具】JAVA後臺計算兩個日期之間的工作日時間差
【程式碼實現】:兩個日期之間的工作日時間差(精確到毫秒) 【程式碼特點】: 1.支援跨年。 2.獲取的是精確到毫秒的時間差。 3.國家法定假日未計算在內(像陰曆這種的只有通過加入LIST的方法了=。=)。 package com.wednesday.tools.ti
java中計算兩個日期之間相差多少天
近期在自己寫的一個專案中,發現了一個Bug.日期A的時間為2017-12-7,日期B的時間為2018-1-7。計算兩者之間相距多少天,居然是驚人的8900天。 錯誤的程式如下: import java.util.Date SimpleDateForma
java中計算兩個日期之間差的天數
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; class Test2 { public static String getDate(){ Si
關於js物件中兩個函式互相呼叫,其中一個為定時器宣告,定時器迴圈報錯問題(記錄一次嘗試新寫法的報錯經歷)附帶無縫輪播圖程式碼
先上之前的錯誤程式碼吧,注意計時器這個方法(是想把之前寫的的輪播圖演示重構一下) var obj = { sleepTime: 2000,//輪播延時 cont: 0,//第幾張 origin: document.getElementsByClassName('main-
關於js物件中兩個函式互相呼叫,其中一個為定時器宣告,定時器迴圈報錯問題(記錄一次嘗試新寫法的報錯經歷)
先上之前的錯誤程式碼吧(是想把之前寫的的輪播圖demo重構一下) var obj = { sleepTime: 2000,//輪播延時 cont: 0,//第幾張 origin: document.getElementsByClassName('ma
linux下用scp命令在兩個服務器之間傳輸文件,利用php_scp函數進行文件傳輸
evc 在操作 path send 返回值 遠程 false cal 上傳 在linux下利用scp進行文件傳輸, 從服務器下載文件 scp [email protected]/* */:/path/filename /path/filename 上傳
計算兩個日期之間的天數差C++/java
new abs ear == 關於 ostream logs col 多少 1--Java 分析:調用java中Calendar類 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInst
java 獲取兩個日期之間的天數
public static String calcTwoDate(Date date ,Date date2){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date);
java得到兩個日期之間的工作日
public static List<String> getWorkDays(String date1,String date2)throws Exception{ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-d
編寫一個Java應用程式,當用戶在輸入對話方塊中輸入兩個日期後(日期格式為YYYYMMDD,如1999年1月12日應輸入為19990112),程式將判斷兩個日期的先後順序,以及兩個日期之間的間隔天數(例
編寫一個Java應用程式,當用戶在輸入對話方塊中輸入兩個日期後(日期格式為YYYYMMDD, 如1999年1月12日應輸入為19990112), 程式將判斷兩個日期的先後順序, 以及兩個日期之間的間隔天數(例如1999年1月1日和1999年1月2日之間的間隔是1天。
Java獲取兩個日期之間的所有日期集合
1.返回Date的list private List<Date> getBetweenDates(Date start, Date end) { List<Date> result = new ArrayList<Date>(); Calendar
Java 求兩個日期之間的天數,最原始方法
import java.util.Scanner; public class first { public static void main(String[] args) { Scanner input_date = new Scanner(System.in);
用httpinvoker使兩個系統之間的方法可以互相呼叫
業務場景:兩個系統之間可能存在通訊(方法的呼叫),這時用httpinvoker可以實現輕量級的解決方案 分為服務端和客戶端,客戶端呼叫服務端提供的介面; 客戶端配置: <bean id="OpenApi4SoaService" class="cn.com.agree.open.mv
java獲取兩個時間之間有多少天
/** * date2比date1多的天數 * @param date1 * @param date2 * @return */ public static int differentDays(Date date1,Date date2) { Calendar cal1 = Cal
JAVA-計算兩個日期之間相差的天數
/** * 計算兩個日期之間相差的天數 * @param date1 * @param date2 * @return */ public static int daysBetween(Date date1,Date
java實現計算兩個年份之間相差的天數
要求:計算1999年1月1日到2018年1月1日相差的天數 思路:需要把每年的天數加起來,閏年和平年,一年的天數不同 package com.calendar.test; /** * 計算兩個年份之間相差的天數 * 如:計算1999年1月1日到2018年1月1日相差的天數 *
Java計算兩個經緯度之間的距離公式,外加百度地圖高德地圖轉換,和保留小數
在網上看到了很多兩個座標之間的距離公式,也都親自測試了,有很多都不可以用,後來找到一個比較好的距離演算法,分享給大家 經緯度兩點之間的距離公式 public class MapUtils { private static double rad(double d) { return
java兩個物件之間傳值,簡單的封裝
使用SSH框架的過程中,經常涉及到修改,我們只要對部門的部門屬性進行修改我們通常的做法是先從資料庫把物件查詢出來target, 再把從頁面上傳遞來的修改過的值封裝成為一個物件model,我們需要把model中修改過的屬性重新賦值給target,再對target進行儲存.完
linux實訓第二天總結--快速搭建Httpd服務&部署基於Httpd的網路Yum&搭建NFS共享&兩個終端之間”聊天室”
DAY02 案例一-->部署網路yum源 1.0快速搭建Httpd服務 1.1部署基於Httpd的網路Yum 案例1.0-->