使用者中心介面對外資料快取化的實踐參考

2022-02-08 10:10:49 字數 1880 閱讀 2655

最近在看通用許可權管理系統提供使用者中心介面,發現有不少變化,現將我的理解分享給大家:

使用者中心對外提供了基礎資訊、許可權的介面,剛開始的部署方式採用了如下圖的方式,由於客戶端及應用伺服器的網路環境,介面伺服器配置了多個電信運營商的網路鏈結;

最初在使用者量不大的時候,呼叫介面時是直接訪問資料庫獲取資料向應用伺服器輸出,隨著客戶端訪問量的增大,使用者中心庫的壓力也逐漸增大,為了保證介面的穩定性,減輕資料庫壓力,進行了快取化改造,主要使用了redis,並進行了讀寫分離,改造後的示意圖如下:

基礎資訊管理應用系統主要是維護基礎資訊、許可權配置的,可以直觀的看到,改造後,基礎資訊在更新後會將資料快取到redis伺服器,通過redis的主從配置,進行了讀寫分離,介面伺服器裡將原有的訪問資料庫獲取的方法全部改造為從redis中獲取,極大的提高了效率。

底層中封裝好了redis獲取資料的方法,專案截圖如下:

namespace

dotnet.business

); }

return

instanceuser;}}

public

static

iredisclient getuserclient()

private

static pooledredisclientmanager instanceuserreadonly = null

;

public

static

pooledredisclientmanager instanceuserreadonly);}

return

instanceuserreadonly;}}

public

static

iredisclient getuserreadonlyclient()

}}

設定和獲取快取的方法

///

///獲取快取

/// ///

快取主鍵

///使用者資訊

public

static baseuserentity getcache(string

key)

}return

result;

}//////

獲取快取

///20151007 吉日嘎拉,需要在乙個連線上進行大量的操作

/// ///

快取主鍵

///使用者資訊

private

static baseuserentity getcache(iredisclient redisclient, string

key)

return

result;

}

對外提供介面參考:

///

///使用者是否在某個角色裡

/// ///

使用者資訊

///系統編號

///使用者主鍵

///角色編號

///在角色裡

public

static

bool isinrolebycode(baseuserinfo userinfo, string systemcode, string userid, string

rolecode)

return

result;

}

通過這一番改造,各個應用系統要獲取基礎資訊,可以直接呼叫底層的方法,或者通過介面獲取,同時介面實現了如果快取沒有資料或資料已過期會去資料庫獲取,同時進行資料快取。

使用UPnP來穿透NAT使內網介面對外網可見

在寫完object 672後,軟體的乙個致命問題暴露出來,如果伺服器和客戶端都在內網環境下,即雙方都通過nat來接觸外網,那麼此時客戶端是無法直接和伺服器交流的。解決方案可以是 1 把伺服器部署在不存在nat的公網環境下。2 使用常見的nat穿透方法比如udp打洞,或者stun協議,但是這些方法都需...

Day15 使用者中心介面說明

學於黑馬和傳智播客聯合做的教學專案 感謝 黑馬官網 傳智播客官網 實現使用者資料的校驗,主要包括對 手機號 使用者名稱的唯一性校驗。get check 引數 說明是否必須 資料型別 預設值data 要校驗的資料 是string 無type 要校驗的資料型別 1,使用者名稱 2,手機 否integer...

SAP CRM 使用者介面物件型別和設計物件

在crm中的使用者介面物件型別的幫助下,我們可以做這些工作 進行不同的檢視配置 建立動態導航 從設計層控制字段標籤 值幫助 控制bol物件的屬性的可視性 從導航欄訪問自定義元件 乙個使用者介面物件型別之下會有設計物件的集合,每個設計物件可以控制bol物件的屬性。第一步,建立乙個 類。前往事務se24...