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

                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM