1、Apollo(阿波罗)

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景,是一款可靠的分布式配置管理中心框架。

github官方地址

https://github.com/apolloconfig/apollo

中文最新开发文档

https://www.apolloconfig.com/#/zh/README

2、下载Apollo

进入Apollo官网,找到官网发布的版本进行下载。点击Releases(https://github.com/apolloconfig/apollo/releases),选择想要下载的版本信息,找到Assets进行下载。在下载的时候我们会发现Assets下面有很多个包,具体我们需要下载那个呢?这里就需要在

介绍一下这个配置中心Apollo了。其实Apollo不是由一个服务组成的,而是由三个主要的服务组成,分别为:Config Service服务、Admin Service 服务、Portal Server服务。Apollo最主要的就是这三个工程,需要用这三个工程进行部署才能使用配置中心。

Portal Server服务:管理配置界面,对应有一个PortalDB数据库,Portal Server是用来管理不同的环境的,不管对接了多少个环境,Portal Server和PortalDB数据库只需要部署一份就可以了。需要在PortalDB数据库添加具体有那些环境。

Config Service 服务和 Admin Service 服务:每个环境都有一个Config和Admin,对应每个环境都有一个自己的ConfigDB库。也就是说我们可以配置多套Config和Admin服务。

通过介绍之后,现在就知道需要那些包了吧。目前之讲解单机版,每个服务只部署一个即可。选择好版本后分别下载:apollo-adminservice-x.xx-github.zip、apollo-adminservice-x.xx-github.zip和apollo-adminservice-x.xx-github.zip,本人下载的是1.9.2版本。读友可以根据需要自行下载版本。

3、创建数据库

我们下载成功后,就需要创建相应的数据库了。Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,数据库、表的创建和样例数据都分别准备了sql文件,我们只需要导入数据库即可。

下载地址

https://github.com/apolloconfig/apollo/blob/master/scripts/sql/apolloconfigdb.sql

在/scripts/sql/下面,里面有两个sql脚本进行下载导入Mysql数据库即可。注意官网提示对MySQL数据库版本有限制:Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。

输入Sql语句查看Mysql数据库版本:

SHOW VARIABLES WHERE Variable_name = 'version';

目前只部署的为一个环境,如果部署多个环境的话需要准备多个configdb数据库。需要在polloconfigdb.sql中稍作修改。

4、修改配置数据库连接信息

配置apollo-configservice和apollo-adminservice 的数据库连接信息,分别进入:/apollo-adminservice/config和 /apollo-configservice/config目录,分别编辑文件:application-github.properties

#修改数据库连接配置信息。
spring.datasource.url = jdbc:mysql://fill-in-the-correct-server:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = FillInCorrectUser
spring.datasource.password = FillInCorrectPassword
fill-in-the-correct-server :替换为数据库连接地址
FillInCorrectUser:数据库用户名称
FillInCorrectPassword:数据库密码

配置apollo-portal的数据库连接信息,进入/apollo-portal/config 目录,编辑文件:application-github.properties

#修改数据库连接配置信息。
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = 1234qwer fill-in-the-correct-server :替换为数据库连接地址
FillInCorrectUser:数据库用户名称
FillInCorrectPassword:数据库密码

配置完apollo-portal的数据库连接后,数据库配置就配置完成了。

5、修改端口号

启动之前,我们可以修改服务的端口号,服务有默认端口号如果不修改会使用默认端口:adminservice:8090,configservice:8080,apollo-portal:8070,分别进入三个工程里面/scripts目录下startup.sh脚本里面,可以查看和修改当前端口号以及更改日志输出地址。

我们分别修改端口和配置日志地址:

SERVICE_NAME=apollo-configservice  服务名称
SERVER_PORT=${SERVER_PORT:=7800} 服务端口
LOG_DIR=D:/apollo/logs-local/100003171 输出日志路径 SERVICE_NAME=apollo-adminservice
SERVER_PORT=${SERVER_PORT:=7850}
LOG_DIR=D:/apollo/logs-local/100003172 SERVICE_NAME=apollo-portal
LOG_DIR=D:/apollo/logs-local/100003173
SERVER_PORT=${SERVER_PORT:=8000}

更改端口后,apollo-configservice不以8080端口启动的情况下,要修改ApolloConfigDB库的ServerConfig表的eureka.service.url的value值为http://localhost:7800/eureka/,端口从数据库默认的8080改为7800。

6、配置portal的meta service环境信息

我们进入/apollo-portal/config目录下面会发现该服务比其他两个多了一个配置文件apollo-env.properties,apollo-env可以指定不同环境的configservice的连接地址。由于我们configservice和adminservice只配置了一套,所以只是使用了一个环境,配置dev就行了。如果后续配置多个则根据需要配置相应的地址。

local.meta=http://localhost:7800
dev.meta=http://localhost:7800
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
lpt.meta=${lpt_meta}
#pro.meta=http://fill-in-pro-meta-server:8080

7、启动应用

应用启动顺序:configservice -> adminservice -> portal,每个服务启动成功后再启动下一个服务,因为有依赖关系。执行scripts/startup.sh 启动程序

即停止服务顺序应该为: portal ->  adminservice  -> configservice ,执行scripts/shutdown.sh 停止程序

启动成功后,访问http://localhost:8000,可以访问管理界面。默认的用户名是apollo,密码是admin。

登录成功:

spring cloud微服务搭建配置中心之携程开源框架Apollo的更多相关文章

  1. Spring Cloud微服务集成配置中心

    1. 搭建Spring Cloud Config配置中心(见上一篇博客) 2. 创建微服务项目bounter-simon-app,pom文件如下: <?xml version="1.0 ...

  2. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  3. spring cloud微服务搭建第一天

    martin fowler大神提出微服务的概念后,各种微服务的技术满天飞,现在用的比较多的是spring cloud和阿里的dubbo,由于dubbo 在16年10月份就停止更新了,这里我们讲解spr ...

  4. spring cloud微服务搭建(一)

    martin fowler大神提出微服务的概念后,各种微服务的技术满天飞,现在用的比较多的是spring cloud和阿里的dubbo,由于dubbo 在16年10月份就停止更新了,不过好像前些天又更 ...

  5. 【spring colud】spring cloud微服务项目搭建【spring boot2.0】

    spring cloud微服务项目搭建 =================================== 示例版本: 1.spring boot 2.0版本 2.开发工具 IntellJ IDE ...

  6. Spring Cloud微服务(一):公共模块的搭建

    本demo后台采用spring cloud微服务,前端选用vue,进行前后端分离搭建.具体项目见git:光头才能强 创建文件夹,并分别创建以下jar工程 创建公共模块(后续有需要,还会增加).无论是d ...

  7. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  8. 只需五分钟-用Maven快速搭建Spring Cloud微服务

    Maven安装手册 1.准备安装包 安装包: apache-maven-3.5.4-bin.zip  (最好JDK 1.7及以上版本) 集成包: eclipse-maven3-plugin.zip 2 ...

  9. Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议

    一.项目需求 在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整. 二.存在的问题 为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入spri ...

  10. Spring Cloud微服务系列文,服务调用框架Feign

    之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON.    这种 ...

随机推荐

  1. 【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求

    问题描述 使用Azure API Management, 想对一些固定的IP地址进行访问次数的限制,如被限制的IP地址一分钟可以访问10次,而不被限制的IP地址则可以无限访问? ChatGPT 解答 ...

  2. react中受控组件与非受控组件--

    非受控组件:随用随取 1 render() { 2 return ( 3 <div> 4 <h1>非受控组件</h1> 5 <form action=&quo ...

  3. YOLO2论文中文版

    文章目录 YOLO9000中文版 摘要 1. 引言 2. 更好 3. 更快 4. 更强 5. 结论 参考文献 YOLO9000中文版 摘要 我们引入了一个先进的实时目标检测系统YOLO9000,可以检 ...

  4. java封装和关键字

    一.封装 封装:告诉我们如何正确设计对象的属性和方法 对象代表什么,就得封装对应的数据,并提供数据对应的行为 封装的好处: 让编程变得很简单,有什么事,找对象,调方法 降低学习成本,可以少学,少记,或 ...

  5. 2021-02-22:一个象棋的棋盘,然后把整个棋盘放入第一象限,棋盘的最左下角是(0,0)位置,那么整个棋盘就是横坐标上9条线、纵坐标上10条线的区域。给你三个 参数 x,y,k。返回“马”从(0,0)位置出发,必须走k步。最后落在(x,y)上的方法数有多少种?

    2021-02-22:一个象棋的棋盘,然后把整个棋盘放入第一象限,棋盘的最左下角是(0,0)位置,那么整个棋盘就是横坐标上9条线.纵坐标上10条线的区域.给你三个 参数 x,y,k.返回"马 ...

  6. ModuleNotFoundError: No module named 'flask_mail'

    ModuleNotFoundError: No module named 'flask_mail' 解决: pip install flask_mail

  7. Strings must be encoded before hashing

    Strings must be encoded before hashing 当我们将字符串传递给 hash 算法时,会出现 "TypeError: Strings must be enco ...

  8. golang依赖注入工具digo

    golang依赖注入工具 digo工具地址:https://github.com/werbenhu/digo 特性 使用注释中的注解 自动代码生成 自动检测循环依赖 编译时期依赖注入 自动初始化 支持 ...

  9. Gitlab Registries

    在项目开发和部署过程中,我们常常需要一套私有仓库,比如 Code Repository.Package Repository,Docker Registry 等. Code Repository:在 ...

  10. selenium4-定位组元素

    总体思路:find_elements() 该方法将所有定位到的元素放到一个列表中,再通过列表的下标定位到具体元素. 例1.使用tag name定位到百度搜索框,并输入selenium关键字 servi ...