Linux 搭建Apollo

来源:https://www.cnblogs.com/bgyb/archive/2022/03/31/16082234.html
-Advertisement-
Play Games

簡介 Apollo(阿波羅)是攜程框架部門研發的分散式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。 服務端基於Spring Boot和Spring Cloud開發,打包後可以直接運行,不需要額外安 ...


簡介

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

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

Java客戶端 不依賴任何框架,能夠運行於所有Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持。

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

官方 GitHub:  https://github.com/ctripcorp/apollo
官方 Gitee:  https://gitee.com/nobodyiam/apollo

一、準備工作

1.1 Java

  • Apollo服務端:1.8+
  • Apollo客戶端:1.7+

由於Quick Start會在本地同時啟動服務端和客戶端,所以需要在本地安裝Java 1.8+。

在配置好後,可以通過如下命令檢查:

java -version

樣例輸出:

java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

Windows用戶請確保JAVA_HOME環境變數已經設置。

1.2 MySQL

  • 版本要求:5.6.5+

Apollo的表結構對timestamp使用了多個default聲明,所以需要5.6.5以上版本。

連接上MySQL後,可以通過如下命令檢查:

SHOW VARIABLES WHERE Variable_name = 'version';

1.3 下載Quick Start安裝包

我們準備好了一個Quick Start安裝包,大家只需要下載到本地,就可以直接使用,免去了編譯、打包過程。

安裝包共50M,如果訪問github網速不給力的話,可以從百度網盤下載。

  1. 從Github下載
  2. 從百度網盤下載
    • 通過網盤鏈接下載,提取碼: 9wwe
    • 下載到本地後,在本地解壓apollo-quick-start.zip
  3. 為啥安裝包要58M這麼大?
    • 因為這是一個可以自啟動的jar包,裡面包含了所有依賴jar包以及一個內置的tomcat容器

1.4 手動打包Quick Start安裝包

Quick Start只針對本地測試使用,所以一般用戶不需要自己下載源碼打包,只需要下載已經打好的包即可。不過也有部分用戶希望在修改代碼後重新打包,那麼可以參考如下步驟:

  1. 修改apollo-configservice, apollo-adminservice和apollo-portal的pom.xml,註釋掉spring-boot-maven-plugin和maven-assembly-plugin
  2. 在根目錄下執行mvn clean package -pl apollo-assembly -am -DskipTests=true
  3. 複製apollo-assembly/target下的jar包,rename為apollo-all-in-one.jar
wget https://github.com/apolloconfig/apollo-build-scripts/archive/refs/heads/master.zip  #下載

unzip master.zip #解壓

二、安裝步驟

2.1 創建資料庫

Apollo服務端共需要兩個資料庫:ApolloPortalDBApolloConfigDB,我們把資料庫、表的創建和樣例數據都分別準備了sql文件,只需要導入資料庫即可。

註意:如果你本地已經創建過Apollo資料庫,請註意備份數據。我們準備的sql文件會清空Apollo相關的表。

下麵以MySQL原生客戶端為例:


友情提示:可以使用Navcat連接工具導入SQL

source /your_local_path/sql/apolloportaldb.sql

source /your_local_path/sql/apolloconfigdb.sql

 導入成功後,可以通過執行以下sql語句來驗證:

select `Id`, `AppId`, `Name` from ApolloPortalDB.App;


select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;

  

2.2 配置資料庫連接信息

Apollo服務端需要知道如何連接到你前面創建的資料庫,所以需要編輯demo.sh,修改ApolloPortalDB和ApolloConfigDB相關的資料庫連接串信息。

註意:不要修改demo.sh的其它部分!!!

 

三、啟動Apollo配置中心

Quick Start腳本會在本地啟動3個服務,分別使用807080808090埠,請確保這3個埠當前沒有被使用

例如,在Linux/Mac下,可以通過如下命令檢查:

lsof -i:8080  

netstat -anp | grep 8080  

3.2 執行啟動腳本

./demo.sh start #啟動

./demo.sh stop #關閉

當看到如下輸出後,就說明啟動成功了!

==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!

3.3 異常排查

如果啟動遇到了異常,可以分別查看service和portal目錄下的log文件排查問題。

註:在啟動apollo-configservice的過程中會在日誌中輸出eureka註冊失敗的信息,如com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused。需要註意的是,這個是預期的情況,因為apollo-configservice需要向Meta Server(它自己)註冊服務,但是因為在啟動過程中,自己還沒起來,所以會報這個錯。後面會進行重試的動作,所以等自己服務起來後就會註冊正常了。

查看阿波羅日誌詳情

tail -f portal/apollo-portal.log

tail -f service/apollo-service.log

四、使用Apollo配置中心

4.1 查看樣例配置

打開瀏覽器輸入:http://localhost:8070     用戶名/密碼:apollo/admin

打開瀏覽器輸入:http://localhost:8080

打開瀏覽器輸入:http://localhost:8090

4.2 運行客戶端程式

./demo.sh client #運行客戶端

忽略前面的調試信息,輸入timeout,會看到如下信息:

4.3 修改配置併發布

1、在配置界面點擊timeout這一項的編輯按鈕

2、在彈出框中把值改成200並提交配置修改

 3、點擊發佈按鈕,並填寫發佈信息發佈

 如果客戶端一直在運行的話,在配置發佈後就會監聽到配置變化,並輸出修改的配置信息:

 

 參考鏈接


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我在之前一段時間做過網路通信的系列文章,但是文章還是偏散,沒有一個整體脈絡,本篇就以知識地圖的形式來進行梳理。 知識地圖是一種知識導航系統,並顯示不同的知識存儲之間重要的動態聯繫。本篇主要就是從更高的視角將之前的文章的結構思路展現出來。文章結構的思路實際上也是達到架構師程度要掌握的網路通信知識學習路 ...
  • 觀察者模式又叫做發佈-訂閱模式,屬於行為型模式;觀察者模式通過定義一種一對多得依賴關係,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象在狀態上發生變化時,會通知所有觀察者對象,使他們能夠自動更新自己。 觀察者模式的UML類圖如下: 如上圖所示,觀察者模式主要涉及到抽象主題角色、具體主題角色、抽 ...
  • 網路開發兩大架構 早期數據交互的格式是沒有網路的兩個文件之間的數據交互需要通過第三個文件a,b文件同時和c文件交互,a文件把數據先存放c文件中b文件從c文件取,反之亦然socket (套接字) 是一個收發數據的工具 有了網路之後a文件中的數據,通過網路協議,轉化101010...二進位進行發送a文件 ...
  • **Spring淪陷了!**這樣的標題這幾天是不是看膩了?然而,仔細看看都是拿著之前的幾個毫不相干的CVE來大吹特吹。所以,昨天發了一篇關於最近網傳的Spring大漏洞的文章,聊了聊這些讓人迷惑的營銷文、以及提醒大家不要去下載一些利用漏洞提供補丁的釣魚內容。而對於這個網傳的漏洞,依然保持關註狀態,因 ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • 函數的嵌套有兩種方式: 交叉嵌套 迴環嵌套 交叉嵌套 交叉嵌套的方式是在本函數中調用同一級或上一級函數的嵌套方法: def func(foo): print(1) foo() print(3) def a(): print(1) b = func(a) print(b) 輸出的結果為: 1 1 3 ...
  • redis的基本命令學習 1.簡單理解redis 基於記憶體的key-value資料庫基於c語言編寫的,可以支持多種語言的api //set每秒11萬次,取get 81000次支持數據持久化value可以是string,hash, list, set, sorted set 使用場景: 去最新n個數據 ...
  • 前言 首先描述下業務場景,有一個介面,其中存在耗時操作,耗時操作的執行結果將寫入數據表中,不需要通過該介面直接返回。 因此理論上該介面可以在耗時操作執行結束前返回。本文中使用多線程後臺運行耗時操作,主線程提前返回,實現介面的提前返回。 此外,還嘗試使用協程實現,經驗證,協程適用於多任務併發處理,遇到 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...