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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...