天天看點

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

一、前言

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

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

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實作.NET Core微服務統一配置(測試環境-單機)

第三步:下載下傳Apollo-build-scripts 項目到伺服器上 

檔案内容

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

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

具體如下:

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

 B、然後把demo.sh 項目設定可執行權限

chmod +x demo.sh      

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

./demo.sh start      

 啟動完畢:

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

打開位址:192.168.250.131:8070

預設賬号和密碼: apollo /  admin 

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

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

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

注:如果提示

系統出錯,

請稍後幾秒鐘重試一下,因為通過Eureka注冊的服務有一個重新整理的延時。

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

第四步:開始建立一個自己的項目配置

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

A、建立項目

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

B、開始配置我們的namespace.

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

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

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

建立我的swagger 私有配置

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

C、然後添加配置,添加配置可以選擇文本添加或者按鈕添加

添加兩個  title和 version。

文本添加或者  按鈕點選添加都可以。

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)
基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

然後選擇 “釋出”即可。

apollo 配置完畢。接下來就要配置.NET Core項目啦。 

三、.NET Core中內建Apollo

1、建立一個.net core項目

在appsettings.json 中添加apollo配置

其中 AppId 是項目的唯一辨別,就是我們在apollo上建立項目的唯一辨別。

"apollo": {
    "AppId": "LouieSwaggerDemo",
    "MetaServer": "http://192.168.250.131:8080"
  }      
基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

2、在項目中引入apollo包和 swagger包

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)
基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

然後右鍵項目 選擇“屬性” 把 調試改為 swagger

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

3、在Program.cs 中注入配置

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

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

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實作.NET Core微服務統一配置(測試環境-單機)

四、總結

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技術交流群: 歡迎加群

基于Apollo實作.NET Core微服務統一配置(測試環境-單機)
基于Apollo實作.NET Core微服務統一配置(測試環境-單機)

LouieGuo