spring cloud微服务搭建配置中心之携程开源框架Apollo
1、Apollo(阿波罗)
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景,是一款可靠的分布式配置管理中心框架。
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的更多相关文章
- Spring Cloud微服务集成配置中心
1. 搭建Spring Cloud Config配置中心(见上一篇博客) 2. 创建微服务项目bounter-simon-app,pom文件如下: <?xml version="1.0 ...
- Spring Cloud 入门教程 - 搭建配置中心服务
简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...
- spring cloud微服务搭建第一天
martin fowler大神提出微服务的概念后,各种微服务的技术满天飞,现在用的比较多的是spring cloud和阿里的dubbo,由于dubbo 在16年10月份就停止更新了,这里我们讲解spr ...
- spring cloud微服务搭建(一)
martin fowler大神提出微服务的概念后,各种微服务的技术满天飞,现在用的比较多的是spring cloud和阿里的dubbo,由于dubbo 在16年10月份就停止更新了,不过好像前些天又更 ...
- 【spring colud】spring cloud微服务项目搭建【spring boot2.0】
spring cloud微服务项目搭建 =================================== 示例版本: 1.spring boot 2.0版本 2.开发工具 IntellJ IDE ...
- Spring Cloud微服务(一):公共模块的搭建
本demo后台采用spring cloud微服务,前端选用vue,进行前后端分离搭建.具体项目见git:光头才能强 创建文件夹,并分别创建以下jar工程 创建公共模块(后续有需要,还会增加).无论是d ...
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- 只需五分钟-用Maven快速搭建Spring Cloud微服务
Maven安装手册 1.准备安装包 安装包: apache-maven-3.5.4-bin.zip (最好JDK 1.7及以上版本) 集成包: eclipse-maven3-plugin.zip 2 ...
- Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议
一.项目需求 在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整. 二.存在的问题 为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入spri ...
- Spring Cloud微服务系列文,服务调用框架Feign
之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON. 这种 ...
随机推荐
- Python_11 类的方法
一.查缺补漏 1. 实例方法必须用类实例化对象()来调用,用类来调用时会执行,但是self中不是实例化类地址而是传的字符串 二.类中的方法 1. 实例方法 1. 定义在类里面的普通方法(函数) 2. ...
- 这可能是最全面的MySQL面试八股文了
什么是MySQL MySQL是一个关系型数据库,它采用表的形式来存储数据.你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列).行代表每一行数据,列代表该行中的每个值.列上的值是 ...
- [OpenCV-Python] 21 OpenCV 中的轮廓
文章目录 OpenCV-Python:IV OpenCV中的图像处理 21 OpenCV 中的轮廓 21.1 初识轮廓 21.1.1 什么是轮廓 21.1.2 怎样绘制轮廓 21.1.3 轮廓的近似方 ...
- 2023-03-27:avio_list_dir.c 是 FFmpeg 库自带的一个示例程序,它提供了列出目录中所有文件和子目录的功能,请用go语言改写。
2023-03-27:avio_list_dir.c 是 FFmpeg 库自带的一个示例程序,它提供了列出目录中所有文件和子目录的功能,请用go语言改写. 答案2023-03-27: 这段代码实现了通 ...
- Solon 用 throw 抛出数据
此文主要是想在观念上有所拓展.在日常的接口开发时,数据的输出可以有两种方式: 返回(常见) 抛出(可以理解为越级的.越类型的返回) 我们经常会看到类似这样的案例.为了同时支持正常的数据和错误状态,选择 ...
- weex项目使用iconfont 字体图标
一.使用本地字体图标 1.在 https://www.iconfont.cn/manage/index 注册自己的账号 2.创建自己的项目 3.添加自己需要的图标,并将其下载到本地 4.入口页面引入 ...
- docker容器中下载vim指令的速度特别慢,解决方案
1 首先要进入容器内执行,保存目前源 mv /etc/apt/sources.list /etc/apt/sources.list.bak 2修改源,由于docker默认没有vim的包 所以无法使用v ...
- CompTIA Pentest+
关于学习后CompTIA Pentest+笔记 渗透测试工具 讲述了nmap,burp Suite,Metasploit,Nessus,hydra的入门使用 nmap:https://www.cnbl ...
- [Qt开发]一口气搞懂串口通信
好多小鳄鱼 一.关于串口通信: Qt的确有自己的串口通信类,就是QSerialPort,但是我们在使用过程中因为要更加定制化的使用串口通信类减小开发的难度,所以我们会提供一个串口通信类,也就是这个Se ...
- 浏览器输入URL到网页完全呈现的过程
前言 临近计算机网络期末考试, 最近在复习(预习), 写一遍博客讲解加深印象. 浏览器输入URL过程图 浏览器输入 URL 过程: 当用户在网页上输入网址 URL 后, 浏览器会对网址进行 DNS 域 ...