国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET下數(shù)據(jù)庫的負(fù)載均衡“經(jīng)典方案”(大項(xiàng)目必備,建議收藏)

這篇具有很好參考價(jià)值的文章主要介紹了.NET下數(shù)據(jù)庫的負(fù)載均衡“經(jīng)典方案”(大項(xiàng)目必備,建議收藏)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【前言】

本文講述的“數(shù)據(jù)庫負(fù)載均衡”方案,為市面上最經(jīng)典(沒有之一),由.NET界骨灰級(jí)大佬推出。采用該技術(shù)方案的大公司,一年省下了幾個(gè)億的支出。

?

【正文】

支持.Net Core(2.0及以上)? 與 .Net Framework(4.5及以上)

可以部署在Docker, Windows, Linux, Mac。

為了演示數(shù)據(jù)庫的負(fù)載均衡(Load Balance),我們先創(chuàng)建三個(gè)數(shù)據(jù)庫,它們的名字分別為YZZ、YZZ1、YZZ2。然后在這三個(gè)數(shù)據(jù)庫中分別創(chuàng)建表t_Student,這些表的結(jié)構(gòu)一樣,內(nèi)容稍有差異,見下圖:

YZZ中t_Student的內(nèi)容

---------------------

Id? Name? Age

1?? 張安 ??25

2?? 王鑫 ??22

3?? 周云 ??20

YZZ1中t_Student的內(nèi)容

---------------------

Id? Name? Age

1?? 張安1 ?25

2?? 王鑫1 ?22

3?? 周云1 ?20

YZZ2中t_Student的內(nèi)容

---------------------

Id? Name? Age

1?? 張安2 ?25

2?? 王鑫2 ?22

3?? 周云2 ?20

?

接下來,

若是在.Net Core環(huán)境下,我們需要?jiǎng)?chuàng)建一個(gè)名為DeveloperSharp.json的配置文件,并在其中設(shè)置如上三個(gè)數(shù)據(jù)源的負(fù)載均衡策略。文件內(nèi)容如下:

{
  "DeveloperSharp":
  {
     "DatabaseClusterList":
     [
        {
           "Id":"StudentData",
           "DatabaseCluster":
           [
                 {
                     "Id":"A1",
                     "Enable":"true",
                     "Weight":"100",
                     "DatabaseType":"SqlServer",
                     "ConnectionString":"Server=localhost;Database=YZZ;Uid=sa;Pwd=123"
                 },
                 {
                     "Id":"A2",
                     "Enable":"true",
                     "Weight":"100",
                     "DatabaseType":"SqlServer",
                     "ConnectionString":"Server=localhost;Database=YZZ1;Uid=sa;Pwd=123"
                 },
                 {
                     "Id":"A3",
                     "Enable":"true",
                     "Weight":"100",
                     "DatabaseType":"SqlServer",
                     "ConnectionString":"Server=localhost;Database=YZZ2;Uid=sa;Pwd=123"
                 }
           ]
        }
     ]
  }
}

?

若是在.Net Framework環(huán)境下,我們需要?jiǎng)?chuàng)建一個(gè)名為DeveloperSharp.xml的配置文件,并在其中設(shè)置如上三個(gè)數(shù)據(jù)源的負(fù)載均衡策略。文件內(nèi)容如下:

<?xml version="1.0" encoding="utf-8" ?>
<DeveloperSharp>
    <DatabaseClusterList>
        <DatabaseCluster Id="StudentData">
            <Database Id="A1" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=YZZ;Uid=sa;Pwd=123"/>
            <Database Id="A2" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=YZZ1;Uid=sa;Pwd=123"/>
            <Database Id="A3" Enable="true" Weight="100" DatabaseType="SqlServer" ConnectionString="Server=localhost;Database=YZZ2;Uid=sa;Pwd=123"/>
        </DatabaseCluster>
    </DatabaseClusterList> 
</DeveloperSharp>

?.NET下數(shù)據(jù)庫的負(fù)載均衡“經(jīng)典方案”(大項(xiàng)目必備,建議收藏)

對(duì)此json/xml配置文件說明如下:

(1)???? 每一個(gè)DatabaseCluster節(jié)點(diǎn)代表了一組數(shù)據(jù)庫,此節(jié)點(diǎn)的Id值(本文示例值是:StudentData)后續(xù)會(huì)在程序中使用。

(2)???? Database節(jié)點(diǎn)中的Weight屬性代表了使用權(quán)重。本文示例的三個(gè)數(shù)據(jù)庫的Weight值分別是100、100、100,則這三個(gè)數(shù)據(jù)庫的負(fù)載均衡使用分配比例將會(huì)是1:1:1。若把這三個(gè)值分別設(shè)置為100、50、50,則這三個(gè)數(shù)據(jù)庫的使用分配比例將會(huì)變?yōu)?:1:1。設(shè)置成你想要的比例吧。

(3)???? Database節(jié)點(diǎn)中的Enable屬性代表了是否可用。true代表可用,false代表不可用。

(4)? ? ?可通過把DatabaseType屬性的值設(shè)置為“MySql”、“SQLite”、“PostgreSql”、“Oracle”、其它等等,從而支持各種類數(shù)據(jù)庫。(本文講述的是“同種數(shù)據(jù)庫”的負(fù)載均衡。若是需要“異種數(shù)據(jù)庫”的負(fù)載均衡,請(qǐng)參看?數(shù)據(jù)庫的負(fù)載均衡(續(xù))?這篇文章)

?

接下來,我們看看怎么在程序中使用上述的這組數(shù)據(jù)庫及其配置文件,來實(shí)現(xiàn)負(fù)載均衡。

為了演示負(fù)載均衡效果,我們首先在Visual Studio中新建一個(gè)控制臺(tái)工程,并為工程引用添加了Entity Framework組件作為訪問數(shù)據(jù)庫的工具(你也可以換成其它數(shù)據(jù)庫訪問工具,原理一樣,完全不受影響)。

然后,我們做如下四個(gè)操作。

【第一步】:從NuGet引用DeveloperSharp包(需要是最新版本)。

【第二步】:鏈接負(fù)載均衡配置文件:

若是在.Net Core環(huán)境下,我們只需要把DeveloperSharp.json文件放到程序執(zhí)行目錄中(即bin目錄下與dll、exe等文件的同一目錄中)(放錯(cuò)了位置會(huì)報(bào)錯(cuò))。

若是在.Net Framework環(huán)境下,我們需要在工程配置文件App.config中添加appSettings節(jié)點(diǎn),節(jié)點(diǎn)內(nèi)容如下:

  <appSettings>
    <add key="DatabaseType" value="" />
    <add key="ConnectionString" value="" />
    <add key="ErrorPage" value="" />
    <add key="ErrorLog" value="D:\Test\Assist\log.txt" />
    <add key="ConfigFile" value="D:\Test\Assist\DeveloperSharp.xml" />
  </appSettings>

其中,ConfigFile的設(shè)置是為了鏈接前述的DeveloperSharp.xml這個(gè)配置文件。ErrorLog則是設(shè)置一個(gè)錯(cuò)誤日志文件。它們均需要設(shè)置為文件的“絕對(duì)路徑”(此處使用“絕對(duì)路徑”而不是“相對(duì)路徑”,一是有利于安全性,二是有利于分布式部署)

【第三步】:創(chuàng)建一個(gè)StudentLB.cs類文件,它就是數(shù)據(jù)庫負(fù)載均衡的核心器件,內(nèi)容如下:

    //這個(gè)屬性就是用作映射負(fù)載均衡。
    //其“值”需設(shè)置為前述DeveloperSharp.json/xml配置文件中某個(gè)DatabaseCluster節(jié)點(diǎn)的Id值。
    [DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster("StudentData")]
    public class StudentLB : DeveloperSharp.Structure.Model.DataLayer
    {
        //類中沒有任何代碼
    }

說明:“負(fù)載均衡器”類(本篇為:StudentLB類)必須繼承自DeveloperSharp.Structure.Model.DataLayer類,并且在其上設(shè)置DeveloperSharp.Structure.Model.LoadBalance.DataSourceCluster屬性的初始化值為DeveloperSharp.json/xml配置文件中某個(gè)DatabaseCluster節(jié)點(diǎn)的Id值。

?

【第四步】:為控制臺(tái)應(yīng)用類,添加通過負(fù)載均衡器(StudentLB類)訪問數(shù)據(jù)庫的代碼,注意:核心代碼就一行而已?。〈耸纠B續(xù)3次訪問數(shù)據(jù)庫做同一操作,看會(huì)顯示什么結(jié)果。如下:

    class Program
    {
        static void Main(string[] args)
        {
            string NameList = "";

            //第一次訪問數(shù)據(jù)庫
            var SLB = (new StudentLB()) as DeveloperSharp.Structure.Model.DataLayer;
            var db = new Entities(SLB.IDA.ConnectionString);//每次會(huì)根據(jù)配置的負(fù)載均衡策略輸出對(duì)應(yīng)的ConnectionString
            t_Student Stu = db.t_Student.Where(t => t.Id == 3).FirstOrDefault();
            NameList += Stu.Name;

            //第二次訪問數(shù)據(jù)庫
            SLB = (new StudentLB()) as DeveloperSharp.Structure.Model.DataLayer;
            db = new Entities(SLB.IDA.ConnectionString);//每次會(huì)根據(jù)配置的負(fù)載均衡策略輸出對(duì)應(yīng)的ConnectionString
            Stu = db.t_Student.Where(t => t.Id == 3).FirstOrDefault();
            NameList += Stu.Name;

            //第三次訪問數(shù)據(jù)庫
            SLB = (new StudentLB()) as DeveloperSharp.Structure.Model.DataLayer;
            db = new Entities(SLB.IDA.ConnectionString);//每次會(huì)根據(jù)配置的負(fù)載均衡策略輸出對(duì)應(yīng)的ConnectionString
            Stu = db.t_Student.Where(t => t.Id == 3).FirstOrDefault();
            NameList += Stu.Name;

            //輸出
            Console.WriteLine(NameList);
            Console.ReadLine();

        }
    }

從以上示例代碼我們可以清晰的得知:其實(shí)數(shù)據(jù)庫鏈接字符串ConnectionString就是實(shí)現(xiàn)負(fù)載均衡的關(guān)鍵所在。而SLB.IDA.ConnectionString則每次會(huì)根據(jù)配置的負(fù)載均衡策略輸出對(duì)應(yīng)的鏈接字符串。

?

示例程序輸出顯示結(jié)果如下:

周云周云1周云2

?

運(yùn)行有問題,需要技術(shù)支持?以及bug提交通道,請(qǐng)?zhí)砑游⑿牛?94988403

運(yùn)行有問題,需要技術(shù)支持?以及bug提交通道,請(qǐng)?zhí)砑游⑿牛?94988403

?

最后提示兩點(diǎn):

(1)本文設(shè)置了一組數(shù)據(jù)庫的負(fù)載均衡。但其實(shí)可以在DeveloperSharp.json/xml配置文件及程序中設(shè)置多組數(shù)據(jù)庫的負(fù)載均衡。

(2)若要把一組數(shù)據(jù)庫的負(fù)載均衡應(yīng)用改為單數(shù)據(jù)庫應(yīng)用,只需要把DeveloperSharp.json/xml配置文件中DatabaseCluster節(jié)點(diǎn)下的Database節(jié)點(diǎn)數(shù)量設(shè)置為一個(gè)即可實(shí)現(xiàn)。所以,聰明的你以后可以把你所有的數(shù)據(jù)庫訪問代碼改為此負(fù)載均衡模式,以便日后隨時(shí)在單體/集群之間切換,以備不時(shí)之需:)

?

總結(jié)

本文技術(shù)點(diǎn)思路梳理:

  1. 創(chuàng)建用來實(shí)施負(fù)載均衡的一組數(shù)據(jù)庫。
  2. 通過DeveloperSharp.json/xml來配置負(fù)載均衡策略。
  3. 調(diào)整DeveloperSharp.json的位置,或者,在App.config/Web.config中添加鏈接DeveloperSharp.xml的appSettings節(jié)點(diǎn)。
  4. 創(chuàng)建基于DeveloperSharp包的“負(fù)載均衡器”類(本篇為:StudentLB類)。
  5. 通過“負(fù)載均衡器”產(chǎn)生的ConnectionString鏈接數(shù)據(jù)庫。

?

運(yùn)行有問題,需要技術(shù)支持?以及bug提交通道,請(qǐng)?zhí)砑游⑿牛?94988403

運(yùn)行有問題,需要技術(shù)支持?以及bug提交通道,請(qǐng)?zhí)砑游⑿牛?94988403

?

原文鏈接:http://www.developersharp.cc/content1.html

服務(wù)條款:http://www.developersharp.cc/buy.html

??

文章首發(fā)于公眾號(hào)【.Net數(shù)字智慧化基地】,歡迎大家關(guān)注。

.NET下數(shù)據(jù)庫的負(fù)載均衡“經(jīng)典方案”(大項(xiàng)目必備,建議收藏)

【.Net數(shù)字智慧化基地】:本號(hào)長(zhǎng)期專注于.Net技術(shù)、軟件架構(gòu)、人工智能、工業(yè)互聯(lián)網(wǎng)、智能制造、等領(lǐng)域。作者早年畢業(yè)于一流大學(xué)并已是IT科技領(lǐng)域成功人士。本號(hào)致力于提高圈內(nèi)整體技術(shù)素養(yǎng),為各類初、中、高級(jí)技術(shù)人員提供量身定制的個(gè)人成長(zhǎng)服務(wù),助力升職加薪。本號(hào)同時(shí)也為有數(shù)字化轉(zhuǎn)型需求的各類企業(yè)提供深度咨詢、指導(dǎo)服務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-617795.html

到了這里,關(guān)于.NET下數(shù)據(jù)庫的負(fù)載均衡“經(jīng)典方案”(大項(xiàng)目必備,建議收藏)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Tesla EDI 項(xiàng)目數(shù)據(jù)庫方案開源介紹

    Tesla EDI 項(xiàng)目數(shù)據(jù)庫方案開源介紹

    近期為了幫助廣大用戶更好地使用 EDI 系統(tǒng),我們根據(jù)以往的項(xiàng)目實(shí)施經(jīng)驗(yàn),將成熟的 EDI 項(xiàng)目進(jìn)行開源。用戶安裝好知行之橋EDI系統(tǒng)之后,只需要下載我們整理好的示例代碼,并放置在知行之橋指定的工作區(qū)中,即可開始使用。 今天的文章主要為大家介紹 Tesla EDI 項(xiàng)目,了解

    2024年02月11日
    瀏覽(24)
  • TI EDI 項(xiàng)目數(shù)據(jù)庫方案開源介紹

    TI EDI 工作流簡(jiǎn)介 TI EDI到SQL Server示例流具有預(yù)配置的端口,用于從TI的EDI集成規(guī)范轉(zhuǎn)換以下交易集: 850 采購(gòu)訂單,企業(yè) - TI 855 采購(gòu)訂單確認(rèn),TI - 企業(yè) 860 采購(gòu)訂單變更,企業(yè) - TI 865 采購(gòu)訂單變更確認(rèn),TI - 企業(yè) 856 發(fā)貨通知,TI - 企業(yè) 810 發(fā)票,TI - 企業(yè) 820 付款單,企業(yè) - TI 本文示例

    2024年02月08日
    瀏覽(19)
  • BBA EDI 項(xiàng)目數(shù)據(jù)庫方案開源介紹

    BBA EDI 項(xiàng)目數(shù)據(jù)庫方案開源介紹

    近期為了幫助廣大用戶更好地使用 EDI 系統(tǒng),我們根據(jù)以往的項(xiàng)目實(shí)施經(jīng)驗(yàn),將成熟的 EDI 項(xiàng)目進(jìn)行開源。用戶安裝好知行之橋EDI系統(tǒng)之后,只需要下載我們整理好的示例代碼,并放置在知行之橋指定的工作區(qū)中,即可開始使用。 今天的文章主要為大家介紹 BBA EDI 項(xiàng)目,了解

    2024年02月08日
    瀏覽(18)
  • Lowe‘s EDI 項(xiàng)目數(shù)據(jù)庫方案開源介紹

    Lowe‘s EDI 項(xiàng)目數(shù)據(jù)庫方案開源介紹

    近期為了幫助廣大用戶更好地使用 EDI 系統(tǒng),我們根據(jù)以往的項(xiàng)目實(shí)施經(jīng)驗(yàn),將成熟的 EDI 項(xiàng)目進(jìn)行開源。用戶安裝好知行之橋EDI系統(tǒng)之后,只需要下載我們整理好的示例代碼,并放置在知行之橋指定的工作區(qū)中,即可開始使用。 今天的文章主要為大家介紹 LOWE\\\'S EDI 項(xiàng)目,了

    2024年02月09日
    瀏覽(26)
  • .net 6 web api項(xiàng)目添加日志(Serilog)管理,將日志輸出到控制臺(tái)、文件、數(shù)據(jù)庫

    .net 6 web api項(xiàng)目添加日志(Serilog)管理,將日志輸出到控制臺(tái)、文件、數(shù)據(jù)庫

    1.在nuget安裝下面幾個(gè)包 Serilog Serilog.AspNetCore //用于日志輸出到控制臺(tái) Serilog.Formatting.Compact //用于日志輸出到mysql數(shù)據(jù)庫 Serilog.Sinks.MySQL //用于日志輸出到文件 Serilog.Sinks.RollingFile 2.在Program.cs文件配置日志參數(shù),依賴注入 別忘了在appsettings.json添加數(shù)據(jù)庫連接字符串 3. 使用日志

    2024年02月10日
    瀏覽(127)
  • java項(xiàng)目實(shí)現(xiàn)讀寫分離,項(xiàng)目連接Linux部署的數(shù)據(jù)庫異常javax.net.ssl.SSLHandshakeException: No appropriate protocol

    java項(xiàng)目實(shí)現(xiàn)讀寫分離,項(xiàng)目連接Linux部署的數(shù)據(jù)庫異常javax.net.ssl.SSLHandshakeException: No appropriate protocol

    1、對(duì)項(xiàng)目進(jìn)行優(yōu)化實(shí)現(xiàn)讀寫分離,項(xiàng)目啟動(dòng)時(shí)報(bào)錯(cuò)如下: Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 原因:javax.net.ssl.SSLHandshakeException:沒有適當(dāng)?shù)膮f(xié)議(協(xié)議被禁用或密碼套件不合適) 2、bug解決: ? ? 注意: useSSL=f

    2024年02月04日
    瀏覽(22)
  • SpringBoot項(xiàng)目application配置文件數(shù)據(jù)庫密碼上傳git暴露問題解決方案

    SpringBoot項(xiàng)目application配置文件數(shù)據(jù)庫密碼上傳git暴露問題解決方案

    項(xiàng)目中含有配置文件,配置文件中含有數(shù)據(jù)庫的用戶名和密碼,上傳git直接對(duì)外網(wǎng)開放。那后果會(huì)怎樣可想而知。 jasypt(Java Simplified Encryption)是一個(gè)簡(jiǎn)化的開源 Java 加密工具庫 輸出 使用很簡(jiǎn)單,只需要引入jasypt-spring-boot-starter依賴,然后將配置文件中的明文換成\\\"ENC(密文即可)“

    2024年04月14日
    瀏覽(27)
  • asp.net審計(jì)項(xiàng)目管理系統(tǒng)VS開發(fā)sqlserver數(shù)據(jù)庫web結(jié)構(gòu)c#編程Microsoft Visual Studio

    asp.net審計(jì)項(xiàng)目管理系統(tǒng)VS開發(fā)sqlserver數(shù)據(jù)庫web結(jié)構(gòu)c#編程Microsoft Visual Studio

    一、源碼特點(diǎn) ? ? ? ? asp.net審計(jì)項(xiàng)目管理系統(tǒng) 是一套完善的web設(shè)計(jì)管理系統(tǒng),系統(tǒng)具有完整的源代碼和數(shù)據(jù)庫,系統(tǒng)主要采用B/S模式開發(fā)。開發(fā)環(huán)境為vs2010,數(shù)據(jù)庫為sqlserver2008,使用c#語言 開發(fā) 二、功能介紹 (1)科室管理:對(duì)科室信息進(jìn)行添加、刪除、修改和查看 (2)權(quán)限管

    2024年02月11日
    瀏覽(25)
  • 數(shù)據(jù)庫視圖與索引經(jīng)典題

    數(shù)據(jù)庫視圖與索引經(jīng)典題

    https://www.jianshu.com/p/d0aa8ac94f40 可以通過視圖對(duì)某些用戶查詢的數(shù)據(jù)進(jìn)行限制 可以把一些常用的、復(fù)雜的統(tǒng)計(jì)類的做成視圖 使用視圖 :當(dāng)做一張?zhí)摂M的表來使用 視圖是從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的表。它與基本表不同,是一個(gè)虛表。 數(shù)據(jù)庫只存放視圖的定義,而不

    2024年02月12日
    瀏覽(16)
  • 最經(jīng)典的解析LSA數(shù)據(jù)庫(第六課)

    最經(jīng)典的解析LSA數(shù)據(jù)庫(第六課)

    初步認(rèn)識(shí)OSPF的大致內(nèi)容(第三課)_IHOPEDREAM的博客-CSDN博客 建立領(lǐng)居表 同步數(shù)據(jù)庫?? 今天來 說一說數(shù)據(jù)庫概念 計(jì)算路由表 數(shù)據(jù)庫是一個(gè)組織化的數(shù)據(jù)集合,用于存儲(chǔ)、管理和檢索數(shù)據(jù)。它是一個(gè)可訪問的集合,旨在存儲(chǔ)與特定主題或目的相關(guān)的數(shù)據(jù),并提供有效的檢索和使

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包