1. 程式人生 > >基於Apollo實現.NET Core微服務統一配置(測試環境-單機) .NET Core微服務之基於Apollo實現統一配置中心

基於Apollo實現.NET Core微服務統一配置(測試環境-單機) .NET Core微服務之基於Apollo實現統一配置中心

一、前言


注:此篇只是為測試環境下的快速入門。後續會給大家帶來生產環境下得實戰開發。

具體的大家可以去看官方推薦。非常的簡單明瞭。以下介紹引用官方內容:

Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。

服務端基於Spring Boot和Spring Cloud開發,打包後可以直接執行,不需要額外安裝Tomcat等應用容器。

Java客戶端不依賴任何框架,能夠運行於所有Java執行時環境,同時對Spring/Spring Boot環境也有額外支援。

.Net客戶端不依賴任何框架,能夠運行於所有.Net執行時環境。

官方github地址:https://github.com/ctripcorp/apollo/wiki

 

二、環境介紹及安裝Apollo


1、環境介紹

虛擬機器伺服器:CentOS 7.4

IP地址:192.168.250.131

安裝包下載:apollo-build-scripts專案

基礎軟體環境:       

JAVA JDK 1.8+
Mysql 5.7

 

2、安裝Apollo

第一步:JAVA環境安裝

A、下載JDK 1.8

命令:

wget --no-check-certificate --no-cookie --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm

如果上述命令無法使用,則直接去oracle網站下載即可。

Oracle地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

B、下載壓縮包後,我們就要解壓JDK即可

rpm -ivh jdk-8u181-linux-x64.rpm

 

C、檢查 JDK 是否安裝完畢

java -version

 

第二步:安裝mysql 5.7

由於 apollo需要的mysql資料版本為5.6.5+,因此安裝5.7版本的。

具體原因是:Apollo的表結構對timestamp使用了多個default宣告,所以需要5.6.5以上版本。

A、此mysql 我才用docker安裝即可。簡單方便。

B、安裝完成後需要把apollo的兩個資料庫檔案執行以下即可

apolloconfigdb.sql

apolloportaldb.sql

執行完畢後就可以在資料庫中看到這兩個資料庫啦

 

第三步:下載Apollo-build-scripts 專案到伺服器上 

檔案內容

A、然後修改 專案中的 demo.sh 檔案裡面的資料庫地址即可。

具體如下:

 

 B、然後把demo.sh 專案設定可執行許可權

 chmod +x demo.sh

 

C、設定完畢後就啟動 demo.sh吧

./demo.sh start

 

 啟動完畢:

 

開啟地址:192.168.250.131:8070

預設賬號和密碼: apollo /  admin 

 

登入後就可以看到一個demo。

 

注:如果提示系統出錯,請稍後幾秒鐘重試一下,因為通過Eureka註冊的服務有一個重新整理的延時。

 

 

第四步:開始建立一個自己的專案配置

注:在接下去的.net core 專案中,我們會把swagger的配置資訊配置在apollo上。

A、建立專案

 

B、開始配置我們的namespace.

此處的namespace其實直觀說是名稱空間,也可以說是 分組。

namespace中有分為  public 和private,公有就是共享的,其他專案可以用,私有就是隻有特定的專案可以用。

其實這個分組的概念非常的好,也很清楚的隔開每一個專案配置。

建立我的swagger 私有配置

 

C、然後新增配置,新增配置可以選擇文字新增或者按鈕新增

新增兩個  title和 version。

文字新增或者  按鈕點選新增都可以。

 

 

然後選擇 “釋出”即可。

apollo 配置完畢。接下來就要配置.NET Core專案啦。 

 

三、.NET Core中整合Apollo


1、新建一個.net core專案

在appsettings.json 中新增apollo配置

其中 AppId 是專案的唯一標識,就是我們在apollo上建立專案的唯一標識。

  "apollo": {
    "AppId": "LouieSwaggerDemo",
    "MetaServer": "http://192.168.250.131:8080"
  }

 

 

2、在專案中引入apollo包和 swagger包

然後右鍵專案 選擇“屬性” 把 除錯改為 swagger

 

 

3、在Program.cs 中注入配置

需要注入我們建立的名稱空間喲。並且注入到Configuration 配置中。

 

 

4、在Startup.cs中配置一下swagger的資訊

其中 Configuration["XXXXX"]   中的字串名稱是  和apollo上面的我們建立的專案的名稱要保持一致。

public void ConfigureServices(IServiceCollection services)
        {
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc(Configuration["swagger.version"], new Info
                {
                    Version = Configuration["swagger.version"],
                    Title = Configuration["swagger.title"]
                });
                var basePath = PlatformServices.Default.Application.ApplicationBasePath;
                var xmlPath = Path.Combine(basePath, "ApolloConfigureCenter.xml");
                c.IncludeXmlComments(xmlPath);
            });
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v2/swagger.json", Configuration["swagger.title"]);
            });
            app.UseMvc();
        } 

 

 5、至此,專案配置已搞定。我們就可以執行一下啦。

發現配置應用成功。至此,測試環境-單機搭建已經OK。

 

 

四、總結


apollo配置實在是強大,方便管理我們多個微服務應用配置。用起來也是棒棒的。大家如果有時間可以嘗試一下。

此篇為apollo下的測試環境單機部署,如果想要運用到生產環境中,就要用上分散式部署啦,官網上也有介紹。

後續我也會繼續給大家帶來生產環境中的部署。大家盡情期待吧。

 

五、參考資料


0、本文案例程式碼:github:https://github.com/LouieGuo/ApolloConfigureCenter_Demo

1、Apollo官方github:WIKI

2、Edison Zhou:.NET Core微服務之基於Apollo實現統一配置中心

3、喬達摩:Asp.Net Core與攜程阿波羅(Apollo)的第一次親密接觸

 

asp.net core 交流群:787464275 歡迎加群交流
如果您認為這篇文章還不錯或者有所收穫,您可以點選右下角的【推薦】按鈕精神支援,因為這種支援是我繼續寫作,分享的最大動力!

作者:LouieGuo
宣告:原創部落格請在轉載時保留原文連結或者在文章開頭加上本人部落格地址,如發現錯誤,歡迎批評指正。凡是轉載於本人的文章,不能設定打賞功能,如有特殊需求請與本人聯絡!

微信公眾號:歡迎關注                                                 QQ技術交流群: 歡迎加群字詞