日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

公司去年開始使用dotnet core開發項目。公司的總體架構采用的是微服務,那時候由于對微服務的理解并不是太深,加上各種組件的不成熟,只是把項目的各個功能通過業務層面拆分,然后通過nginx代理,項目最終上線。但是這遠遠沒達到微服務的要求,其中服務治理,斷路器都沒有。我個人理解,我們談微服務實際上更多的是談服務治理這塊東西,至于各個的服務只是微服務中的應用而已。一次偶然的機會發現了java的spring cloud這套框架,而且支持dotnet core集成(Steeltoe OSS)。所以目前我們的項目架構是spring cloud搭建底層微服務框架,dotnet core來編寫業務邏輯。

spring cloud

spring cloud是java平臺提供的一套解決方案,目前市面上來說可能不是最好的微服務解決方案,但是一定是功能最齊全最全的解決方案。提供了一些微服務的基礎功能,包括服務治理、負載均衡、斷路器、配置中心、API網關等等。

服務治理

關于服務治理這塊東西,網上太多太多的資料和原理。相信大家也看了很多,但是如何應用到實際的項目場景,為什么要這樣做呢?傳統的項目,服務與服務之間的調用都是通過URL來訪問,如果是集群那么通過一個負載均衡地址來訪問,增加或者減少機器都是通過維護負載均衡列表的IP地址來實現。微服務架構下,分散成了N個服務,每個服務又是一個集群,對于一個大項目來說,維護這些配置是非常頭疼的。筆者曾經在某知名互聯網公司工作過,公司最累最背鍋的就是運維團隊,基本24小時都在應付各個團隊的部署上線工作以及各種配置的維護,而且還經常出錯挨罵。那么服務治理就出現在這種應用場景之中,運維工程師不用再維護各個負載均衡節點,由服務中心去統一處理。舉個簡單例子,一個電商網站,分解成N個服務,其中有一個用戶服務,有一個訂單服務,用戶服務需要調用訂單服務,而訂單服務是一個集群,對于用戶中心來說他只需要知道訪問訂單中心即可,至于具體訪問訂單中心的哪臺機器由服務中心來調配。

搭建服務治理平臺

  • java開發環境和IDE使用請自行百度,筆者java開發的ide使用的intellij idea。

  • 創建一個srping boot項目,項目名稱service-center,添加spring cloud的依賴

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>
  • 添加@EnableEurekaServer注解

    @EnableEurekaServer@SpringBootApplicationpublic class ServiceCenterApplication {}
  • 設置應用程序的端口和名稱

    spring.application.name=service-center server.port=5000
  • 啟動項目,在瀏覽器輸入http://localhost:5000/

  • 注冊服務

  • 使用vs創建一個dotnet core web api程序

  • 使用nuget添加Pivotal.Discovery.Client庫

    <PackageReference Include="Pivotal.Discovery.Client" Version="1.1.0" />

    3.Program.cs 設置一個端口

    public static void Main(string[] args) ? ?{ ? ?
    ? ?var host = new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).UseIISIntegration().UseStartup<Startup>().UseApplicationInsights().UseUrls("http://*:8010").Build();host.Run();}
  • Startup.cs

    public void ConfigureServices(IServiceCollection services){services.AddDiscoveryClient(Configuration); ? ? ? ?// Add framework services.services.AddMvc();} ? ?public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){loggerFactory.AddConsole(Configuration.GetSection("Logging"));loggerFactory.AddDebug();app.UseMvc();app.UseDiscoveryClient();}
  • appsettings.json

    { "Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Warning"} }, "spring": {"application": {"name": "serviceone"} }, "eureka": {"client": {"serviceUrl": "http://loclhost:5000/eureka/","shouldFetchRegistry": false,"shouldRegisterWithEureka": true },"instance": {"port": 8010} } }

    如果是團隊開發,"shouldRegisterWithEureka"設置成false,防止本地環境注冊到開發環境

  • 啟動程序,再次訪問http://localhost:5000/發現已經注冊到服務中心了

  • 同樣的方式我們再創建一個ServiceTwo的項目,修改programe.cs和appsettings.json文件,其它不變

    public static void Main(string[] args) ? ?{ ? ? ? ?var host = new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).UseIISIntegration().UseStartup<Startup>().UseApplicationInsights().UseUrls("http://*:8011").Build();host.Run();{ "Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Warning"} }, "spring": {"application": {"name": "servicetwo"} }, "eureka": {"client": {"serviceUrl": "http://loclhost:5000/eureka/","shouldFetchRegistry": false,"shouldRegisterWithEureka": true },"instance": {"port": 8011} } }
  • 再次訪問http://localhost:5000/,發現ServiceOne和ServiceTwo都已經注冊到服務中心了

  • 后記

    這樣一個簡單的服務治理平臺就搭建出來了,我們通過spring cloud來創建了一個服務中心,然后通過dotnet core創建了2個服務注冊到了服務中心,但是這些離微服務還差的遠.服務之間怎么相互調用呢?集群模式怎么處理呢?微服務的統一API網關呢?留下這些問題,且聽下回分解。

    所有代碼均上傳github。
    求推薦,你們的支持是我寫作最大的動力,我的QQ群:328438252,交流微服務。

    參考資料

    java部分

    • spring cloud文檔

    • 純潔大神spring cloud系列

    .net部分

    • SteeltoeOSS文檔

    • SteeltoeOSS源碼

    原文地址:http://www.cnblogs.com/longxianghui/p/7561259.html


    .NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    總結

    以上是生活随笔為你收集整理的手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。